/// <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)); }
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); }