Пример #1
0
        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));
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
        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;
                }
            }
        }
Пример #4
0
        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));
            }
        }
Пример #5
0
        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());
            }
        }