/// <summary>
        /// Get information about each player currently on the server.
        /// </summary>
        /// <param name="host">Endpoint of the server.</param>
        public static async Task <ServerQueryPlayer[]> Players(IPEndPoint host)
        {
            var challenge = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x55 }.Concat(await Challenge(host, ServerType.Source)).ToArray();
            await _client.SendAsync(challenge, 9, host);

            var response = await _client.ReceiveAsync();

            return(ServerQueryPlayer.FromBytes(response.Buffer));
        }
Beispiel #2
0
        public static ServerQueryPlayer[] FromBytes(byte[] buffer)
        {
            int i = 7;

            ServerQueryPlayer[] players = new ServerQueryPlayer[buffer[5]];

            for (int p = 0; p < players.Length; ++p)
            {
                players[p] = new ServerQueryPlayer
                {
                    Name     = buffer.ReadNullTerminatedString(i, ref i),
                    Score    = buffer.ReadShort(i, ref i),
                    Duration = buffer.ReadFloat(i + 2, ref i)
                };

                i += 3;
            }

            return(players);
        }