コード例 #1
0
ファイル: WhoHandler.cs プロジェクト: 0xFh/Asda2-Project
        /// <summary>
        /// Handles an incoming who list request
        /// </summary>
        /// <param name="client">the Session the incoming packet belongs to</param>
        /// <param name="packet">the full packet</param>
        //[ClientPacketHandler((RealmServerOpCode.CMSG_WHO)]
        public static void WhoListRequest(IRealmClient client, RealmPacketIn packet)
        {
            var search = new WhoSearch {
                MaxResultCount = WhoList.MaxResultCount,
                Faction        = client.ActiveCharacter.Faction.Group,
                MinLevel       = (byte)packet.ReadUInt32(),
                MaxLevel       = (byte)packet.ReadUInt32(),
                Name           = packet.ReadCString(),
                GuildName      = packet.ReadCString(),
                RaceMask       = (RaceMask2)packet.ReadUInt32(),
                ClassMask      = (ClassMask2)packet.ReadUInt32()
            };

            uint zoneCount = packet.ReadUInt32();

            if (zoneCount > 0 && zoneCount <= 10)
            {
                for (int i = 0; i < zoneCount; i++)
                {
                    search.Zones.Add((ZoneId)packet.ReadUInt32());
                }
            }

            uint nameCount = packet.ReadUInt32();

            if (nameCount > 0 && nameCount <= 10)
            {
                for (int i = 0; i < nameCount; i++)
                {
                    search.Names.Add(packet.ReadCString().ToLower());
                }
            }

            //Performs the search and retrieves matching characters
            var characters = search.RetrieveMatchedCharacters();

            //Send the character list to the client
            SendWhoList(client, characters);
        }
コード例 #2
0
        /// <summary>Handles an incoming who list request</summary>
        /// <param name="client">the Session the incoming packet belongs to</param>
        /// <param name="packet">the full packet</param>
        public static void WhoListRequest(IRealmClient client, RealmPacketIn packet)
        {
            WhoSearch whoSearch1 = new WhoSearch();

            whoSearch1.MaxResultCount = WhoList.MaxResultCount;
            whoSearch1.Faction        = client.ActiveCharacter.Faction.Group;
            whoSearch1.MinLevel       = (byte)packet.ReadUInt32();
            whoSearch1.MaxLevel       = (byte)packet.ReadUInt32();
            whoSearch1.Name           = packet.ReadCString();
            whoSearch1.GuildName      = packet.ReadCString();
            whoSearch1.RaceMask       = (RaceMask2)packet.ReadUInt32();
            whoSearch1.ClassMask      = (ClassMask2)packet.ReadUInt32();
            WhoSearch whoSearch2 = whoSearch1;
            uint      num1       = packet.ReadUInt32();

            if (num1 > 0U && num1 <= 10U)
            {
                for (int index = 0; (long)index < (long)num1; ++index)
                {
                    whoSearch2.Zones.Add((ZoneId)packet.ReadUInt32());
                }
            }

            uint num2 = packet.ReadUInt32();

            if (num2 > 0U && num2 <= 10U)
            {
                for (int index = 0; (long)index < (long)num2; ++index)
                {
                    whoSearch2.Names.Add(packet.ReadCString().ToLower());
                }
            }

            ICollection <Character> characters = whoSearch2.RetrieveMatchedCharacters();

            SendWhoList(client, characters);
        }