public static PacketQueryPlayerNameResponse ReadNameCacheLookupResult(Packet packet, params object[] idx) { var response = new PacketQueryPlayerNameResponse(); packet.ResetBitReader(); packet.ReadByte("Result", idx); packet.ReadPackedGuid128("Player", idx); var hasPlayerGuidLookupData = packet.ReadBit("HasPlayerGuidLookupData", idx); var hasThingy = packet.ReadBit("HasNameCacheUnused920", idx); if (hasPlayerGuidLookupData) { var data = V8_0_1_27101.Parsers.CharacterHandler.ReadPlayerGuidLookupData(packet, idx, "PlayerGuidLookupData"); response.Race = (uint)data.Race; response.Gender = (uint)data.Gender; response.Class = (uint)data.Class; response.Level = data.Level; response.HasData = true; } if (hasThingy) { packet.ResetBitReader(); packet.ReadUInt32("Unused1", idx, "NameCacheUnused920"); packet.ReadPackedGuid128("Unused2", idx, "NameCacheUnused920"); var length = packet.ReadBits(7); packet.ReadWoWString("Unused3", length, idx, "NameCacheUnused920"); } return(response); }
public static void HandleNameQueryResponse(Packet packet) { PacketQueryPlayerNameResponse response = packet.Holder.QueryPlayerNameResponse = new(); var hasData = packet.ReadByte("HasData"); response.PlayerGuid = packet.ReadPackedGuid128("Player Guid"); if (hasData == 0) { var data = ReadPlayerGuidLookupData(packet); response.Race = (uint)data.Race; response.Gender = (uint)data.Gender; response.Class = (uint)data.Class; response.Level = data.Level; response.HasData = true; } }
public static void HandleNameQueryResponse(Packet packet) { PacketQueryPlayerNameResponse response = packet.Holder.QueryPlayerNameResponse = new(); var guid = new byte[8]; var bit16 = packet.ReadBit(); packet.StartBitStream(guid, 1, 3, 2); if (bit16) { for (var i = 0; i < 5; ++i) { packet.ReadBits("bits", 7); } } var bits32 = packet.ReadBits(6); packet.StartBitStream(guid, 6, 4, 0); packet.ReadBit(); packet.StartBitStream(guid, 5, 7); packet.ReadXORByte(guid, 1); response.PlayerName = packet.ReadWoWString("Name: ", bits32); packet.ReadXORBytes(guid, 0, 7); response.Race = packet.ReadByte("Race"); packet.ReadByte("unk81"); response.Gender = packet.ReadByte("Gender"); if (bit16) { for (var i = 0; i < 5; ++i) { packet.ReadCString("Declined Name"); } } response.Class = packet.ReadByte("Class"); packet.ReadXORBytes(guid, 4, 6, 5); packet.ReadUInt32("Realm Id"); packet.ReadXORBytes(guid, 3, 2); response.PlayerGuid = packet.WriteGuid("Guid", guid); }
public static void HandleNameQueryResponse(Packet packet) { PacketQueryPlayerNameResponse response = packet.Holder.QueryPlayerNameResponse = new(); var hasData = packet.ReadByte("HasData"); response.PlayerGuid = packet.ReadPackedGuid128("Player Guid"); if (hasData == 0) { packet.ReadBit("IsDeleted"); var bits15 = (int)packet.ReadBits(6); var count = new int[5]; for (var i = 0; i < 5; ++i) { count[i] = (int)packet.ReadBits(7); } for (var i = 0; i < 5; ++i) { packet.ReadWoWString("Name Declined", count[i], i); } packet.ReadPackedGuid128("AccountID"); packet.ReadPackedGuid128("BnetAccountID"); packet.ReadPackedGuid128("Player Guid"); packet.ReadUInt64("GuildClubMemberID"); packet.ReadUInt32("VirtualRealmAddress"); response.Race = (uint)packet.ReadByteE <Race>("Race"); response.Gender = (uint)packet.ReadByteE <Gender>("Gender"); response.Class = (uint)packet.ReadByteE <Class>("Class"); response.Level = packet.ReadByte("Level"); response.PlayerName = packet.ReadWoWString("Name", bits15); response.HasData = true; } }
protected virtual T?Process(PacketBase basePacket, PacketQueryPlayerNameResponse packet) => default;
public static void HandleNameQueryResponse(Packet packet) { PacketQueryPlayerNameResponse response = packet.Holder.QueryPlayerNameResponse = new(); var guid4 = new byte[8]; var guid5 = new byte[8]; var guid1 = new byte[8]; var bit18 = false; guid1[3] = packet.ReadBit(); guid1[6] = packet.ReadBit(); guid1[7] = packet.ReadBit(); guid1[2] = packet.ReadBit(); guid1[5] = packet.ReadBit(); guid1[4] = packet.ReadBit(); guid1[0] = packet.ReadBit(); guid1[1] = packet.ReadBit(); packet.ReadXORByte(guid1, 5); packet.ReadXORByte(guid1, 4); packet.ReadXORByte(guid1, 7); packet.ReadXORByte(guid1, 6); packet.ReadXORByte(guid1, 1); packet.ReadXORByte(guid1, 2); var hasData = packet.ReadByte("HasData"); if (hasData == 0) { response.HasData = true; packet.ReadInt32("Realm Id"); packet.ReadInt32("AccountId"); response.Class = (uint)packet.ReadByteE <Class>("Class"); response.Race = (uint)packet.ReadByteE <Race>("Race"); response.Level = packet.ReadByte("Level"); response.Gender = (uint)packet.ReadByteE <Gender>("Gender"); } packet.ReadXORByte(guid1, 0); packet.ReadXORByte(guid1, 3); if (hasData == 0) { guid4[2] = packet.ReadBit(); guid4[7] = packet.ReadBit(); guid5[7] = packet.ReadBit(); guid5[2] = packet.ReadBit(); guid5[0] = packet.ReadBit(); bit18 = packet.ReadBit(); guid4[4] = packet.ReadBit(); guid5[5] = packet.ReadBit(); guid4[1] = packet.ReadBit(); guid4[3] = packet.ReadBit(); guid4[0] = packet.ReadBit(); var count = new int[5]; for (var i = 0; i < 5; ++i) { count[i] = (int)packet.ReadBits(7); } guid5[6] = packet.ReadBit(); guid5[3] = packet.ReadBit(); guid4[5] = packet.ReadBit(); guid5[1] = packet.ReadBit(); guid5[4] = packet.ReadBit(); var nameLen = (int)packet.ReadBits(6); guid4[6] = packet.ReadBit(); packet.ReadXORByte(guid5, 6); packet.ReadXORByte(guid5, 0); response.PlayerName = packet.ReadWoWString("Name", nameLen); packet.ReadXORByte(guid4, 5); packet.ReadXORByte(guid4, 2); packet.ReadXORByte(guid5, 3); packet.ReadXORByte(guid4, 4); packet.ReadXORByte(guid4, 3); packet.ReadXORByte(guid5, 4); packet.ReadXORByte(guid5, 2); packet.ReadXORByte(guid4, 7); for (var i = 0; i < 5; ++i) { packet.ReadWoWString("Name Declined", count[i], i); } packet.ReadXORByte(guid4, 6); packet.ReadXORByte(guid5, 7); packet.ReadXORByte(guid5, 1); packet.ReadXORByte(guid4, 1); packet.ReadXORByte(guid5, 5); packet.ReadXORByte(guid4, 0); packet.WriteGuid("Guid4", guid4); packet.WriteGuid("Guid5", guid5); } response.PlayerGuid = packet.WriteGuid("Guid1", guid1); }
public static void HandleNameQueryResponse(Packet packet) { PacketQueryPlayerNameResponse response = packet.Holder.QueryPlayerNameResponse = new(); var guid1 = new byte[8]; var accountId = new byte[8]; var guid2 = new byte[8]; guid1[4] = packet.ReadBit(); guid1[7] = packet.ReadBit(); guid1[6] = packet.ReadBit(); guid1[2] = packet.ReadBit(); guid1[5] = packet.ReadBit(); guid1[1] = packet.ReadBit(); guid1[3] = packet.ReadBit(); guid1[0] = packet.ReadBit(); packet.ReadXORByte(guid1, 0); packet.ReadXORByte(guid1, 6); packet.ReadXORByte(guid1, 3); packet.ReadXORByte(guid1, 7); packet.ReadXORByte(guid1, 2); packet.ReadXORByte(guid1, 4); packet.ReadXORByte(guid1, 1); var hasData = packet.ReadByte("HasData"); if (hasData == 0) { response.HasData = true; response.Class = (uint)packet.ReadByteE <Class>("Class"); response.Gender = (uint)packet.ReadByteE <Gender>("Gender"); packet.ReadInt32("Realm Id"); response.Race = (uint)packet.ReadByteE <Race>("Race"); packet.ReadInt32("Int24"); response.Level = packet.ReadByte("Level"); } packet.ReadXORByte(guid1, 5); if (hasData == 0) { guid2[3] = packet.ReadBit(); accountId[7] = packet.ReadBit(); var count = new int[5]; for (var i = 0; i < 5; ++i) { count[i] = (int)packet.ReadBits(7); } accountId[3] = packet.ReadBit(); guid2[0] = packet.ReadBit(); accountId[5] = packet.ReadBit(); guid2[4] = packet.ReadBit(); accountId[0] = packet.ReadBit(); guid2[6] = packet.ReadBit(); guid2[7] = packet.ReadBit(); accountId[6] = packet.ReadBit(); accountId[1] = packet.ReadBit(); var bit20 = packet.ReadBit(); guid2[1] = packet.ReadBit(); var bits38 = (int)packet.ReadBits(6); guid2[2] = packet.ReadBit(); accountId[4] = packet.ReadBit(); guid2[5] = packet.ReadBit(); accountId[2] = packet.ReadBit(); packet.ReadXORByte(guid2, 4); packet.ReadXORByte(guid2, 1); packet.ReadXORByte(guid2, 5); for (var i = 0; i < 5; ++i) { packet.ReadWoWString("Name Declined", count[i], i); } response.PlayerName = packet.ReadWoWString("Name", bits38); packet.ReadXORByte(accountId, 2); packet.ReadXORByte(accountId, 5); packet.ReadXORByte(guid2, 0); packet.ReadXORByte(guid2, 3); packet.ReadXORByte(accountId, 0); packet.ReadXORByte(accountId, 6); packet.ReadXORByte(accountId, 1); packet.ReadXORByte(guid2, 7); packet.ReadXORByte(accountId, 4); packet.ReadXORByte(accountId, 3); packet.ReadXORByte(guid2, 6); packet.ReadXORByte(accountId, 7); packet.ReadXORByte(guid2, 2); packet.AddValue("Account", BitConverter.ToUInt64(accountId, 0)); packet.WriteGuid("Guid2", guid2); } packet.WriteGuid("Guid1", guid1); }
public static void HandleNameQueryResponse(Packet packet) { PacketQueryPlayerNameResponse response = packet.Holder.QueryPlayerNameResponse = new(); WowGuid guid; if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_1_0_9767)) { response.PlayerGuid = guid = packet.ReadPackedGuid("GUID"); var end = packet.ReadByte("Result"); /* * if (end == 1) * DenyItem(&WDB_CACHE_NAME, v11, v12); * if (end == 2) * RetryItem(&WDB_CACHE_NAME, v11, v12); * if (end == 3) * { * AddItem(&WDB_CACHE_NAME, (int)&v8, v11, v12); * SetTemporary(&WDB_CACHE_NAME, v11, v12); * } */ if (end != 0) { return; } } else { response.PlayerGuid = guid = packet.ReadGuid("GUID"); } response.HasData = true; var name = packet.ReadCString("Name"); response.PlayerName = name; StoreGetters.AddName(guid, name); packet.ReadCString("Realm Name"); if (ClientVersion.AddedInVersion(ClientVersionBuild.V3_1_0_9767)) { response.Race = (uint)packet.ReadByteE <Race>("Race"); response.Gender = (uint)packet.ReadByteE <Gender>("Gender"); response.Class = (uint)packet.ReadByteE <Class>("Class"); } else { response.Race = (uint)packet.ReadInt32E <Race>("Race"); response.Gender = (uint)packet.ReadInt32E <Gender>("Gender"); response.Class = (uint)packet.ReadInt32E <Class>("Class"); } if (!packet.ReadBool("Name Declined")) { return; } for (var i = 0; i < 5; i++) { packet.ReadCString("Declined Name", i); } var objectName = new ObjectName { ObjectType = StoreNameType.Player, ID = (int)guid.GetLow(), Name = name }; Storage.ObjectNames.Add(objectName, packet.TimeSpan); }
public static void HandleNameQueryResponse(Packet packet) { PacketQueryPlayerNameResponse response = packet.Holder.QueryPlayerNameResponse = new(); var guid = new byte[8]; var guid1 = new byte[8]; var guid2 = new byte[8]; packet.StartBitStream(guid, 5, 7, 3, 0, 4, 1, 6, 2); packet.ReadXORByte(guid, 7); packet.ReadXORByte(guid, 4); packet.ReadXORByte(guid, 3); var hasData = packet.ReadByte("Byte18"); if (hasData == 0) { response.HasData = true; packet.ReadInt32("Int24"); response.Race = packet.ReadByte("Race"); response.Gender = packet.ReadByte("Gender"); response.Level = packet.ReadByte("Level"); response.Class = packet.ReadByte("Class"); packet.ReadInt32("Realm Id"); } packet.ReadXORByte(guid, 1); packet.ReadXORByte(guid, 5); packet.ReadXORByte(guid, 0); packet.ReadXORByte(guid, 6); packet.ReadXORByte(guid, 2); if (hasData == 0) { guid2[6] = packet.ReadBit(); guid1[7] = packet.ReadBit(); var bits38 = packet.ReadBits(6); packet.StartBitStream(guid2, 1, 7, 2); guid1[4] = packet.ReadBit(); guid2[4] = packet.ReadBit(); guid2[0] = packet.ReadBit(); guid1[1] = packet.ReadBit(); var count = new int[5]; for (var i = 0; i < 5; ++i) { count[i] = (int)packet.ReadBits(7); } guid1[3] = packet.ReadBit(); guid2[3] = packet.ReadBit(); packet.StartBitStream(guid1, 5, 0); guid2[5] = packet.ReadBit(); packet.ReadBit(); // fake bit guid1[2] = packet.ReadBit(); guid1[6] = packet.ReadBit(); response.PlayerName = packet.ReadWoWString("Name", bits38); packet.ReadXORByte(guid2, 4); packet.ReadXORByte(guid1, 3); packet.ReadXORByte(guid2, 6); packet.ReadXORByte(guid1, 2); packet.ReadXORByte(guid1, 4); packet.ReadXORByte(guid2, 5); packet.ReadXORByte(guid2, 1); packet.ReadXORByte(guid2, 7); for (var i = 0; i < 5; ++i) { packet.ReadWoWString("Name Declined", count[i], i); } packet.ReadXORByte(guid2, 3); packet.ReadXORByte(guid1, 7); packet.ReadXORByte(guid1, 1); packet.ReadXORByte(guid1, 6); packet.ReadXORByte(guid2, 0); packet.ReadXORByte(guid1, 0); packet.ReadXORByte(guid2, 2); packet.ReadXORByte(guid1, 5); packet.WriteGuid("Guid1", guid1); packet.WriteGuid("Guid2", guid2); } response.PlayerGuid = packet.WriteGuid("Guid", guid); }