public A2S_INFO InfoPoll() { var client = GetConn(); byte[] req = new byte[] { 0xFF, 0xFF, 0xFF, 0xFF, 0x54, 0x53, 0x6F, 0x75, 0x72, 0x63, 0x65, 0x20, 0x45, 0x6E, 0x67, 0x69, 0x6E, 0x65, 0x20, 0x51, 0x75, 0x65, 0x72, 0x79, 0x00 }; var response = ServerConnector.GetData(ref client, req); return(A2S_INFO.Read(response)); }
public ServerInfo Get(string IP = "162.244.55.44", int Port = 64152) { var serverINfo = new A2S_INFO(new IPEndPoint(IPAddress.Parse(IP), Port)); if (serverINfo.IsValid) { return(new ServerInfo(serverINfo)); } else { return(null); } }
public ServerInfo(A2S_INFO from) { var tags = from.Keywords.Split(';').ToArray(); Name = from.Name; MaxPlayers = from.MaxPlayers; NumPlayers = from.Players; TimeOfDay = tags[0]; int numPlayers = 0; if (Int32.TryParse(tags[1], out numPlayers)) { if (NumPlayers != numPlayers) { NumPlayers = numPlayers; } } }
public async Task <IActionResult> GetServerStats() { var rconStatus = await RunRCON(""); if (rconStatus == Status.ONLINE) { try { IPEndPoint ip = new IPEndPoint(Dns.GetHostAddresses("arks-zoo.xyz")[0], 27015); A2S_INFO a2S_INFO = new A2S_INFO(ip); A2S_PLAYER a2S_PLAYER = new A2S_PLAYER(ip); if (a2S_INFO.Players > 0) { ArrayList playerStats = new ArrayList(); playerStats.Add(a2S_INFO.Players); playerStats.Add(a2S_INFO.MaxPlayers); playerStats.Add(a2S_PLAYER.Players); return(Ok(playerStats)); } else { return(NoContent()); } } catch (SocketException ex) { Debug.WriteLine(ex.ToString()); return(NoContent()); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); return(NoContent()); } } else { return(StatusCode(StatusCodes.Status404NotFound)); } }
public async Task GetStatus([Remainder] string args = null) { foreach (var server in servers) { var embed = new EmbedBuilder(); embed.Title = server.Name; embed.WithColor(new Color(0, 255, 0)); try { var ip = Dns.GetHostAddresses(server.Address).FirstOrDefault(); var endPoint = new IPEndPoint(ip, server.Port); var q = new A2S_INFO(endPoint); var players = new A2S_PLAYER(endPoint); var playerString = new StringBuilder(); foreach (var player in players.Players) { playerString.AppendLine(player.Name); } if (players.Players.Count() == 0) { playerString.AppendLine("There are no players."); } embed.AddField("Map", q.Map); embed.AddField("Players", $"{q.Players}/{q.MaxPlayers}"); embed.AddField("Player List", playerString.ToString()); } catch (Exception e) { embed.WithColor(new Color(255, 0, 0)); embed.Description = "Server is not responding."; } _ = ReplyAsync(null, false, embed.Build()); } }