コード例 #1
0
        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);
        }
コード例 #2
0
        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;
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
 protected virtual T?Process(PacketBase basePacket, PacketQueryPlayerNameResponse packet) => default;
コード例 #6
0
        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);
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }