Ejemplo n.º 1
0
        public override void OnCommand(CommandArguments command)
        {
            if (command.Message.Length == 0)
            {
                CommandHandler.ReplyToCommand(command, "Usage:{0} servers <filter> - See https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol", Colors.OLIVE);

                return;
            }

            if (command.Message.IndexOf('\\') == -1)
            {
                CommandHandler.ReplyToCommand(command, "That doesn't look like a filter.");

                return;
            }

            var request = new CGameServers_GetServerList_Request
            {
                filter = command.Message,
                limit  = 5000,
            };

            JobManager.AddJob(
                () => GameServers.SendMessage(api => api.GetServerList(request)),
                new JobManager.IRCRequest
            {
                Type    = JobManager.IRCRequestType.TYPE_GAMESERVERS,
                Command = command
            }
                );
        }
Ejemplo n.º 2
0
        public async Task Say([Remainder, Summary("Valve master server query filter")] string filter)
        {
            var request = new CGameServers_GetServerList_Request
            {
                filter = filter,
                limit  = 20000, // max allowed
            };

            var callback2 = await Program.Instance.connection.GameServers.SendMessage(api => api.GetServerList(request));

            var response = callback2.GetDeserializedResponse <CGameServers_GetServerList_Response>();
            var servers  = response.servers;

            if (!servers.Any())
            {
                await Context.Channel.SendMessageAsync("No servers.");
            }

            if (servers.Count() > 0 && servers.Count <= Program.Instance.connection.DISPLAY_AMOUNT)
            {
                foreach (CGameServers_GetServerList_Response.Server server in servers.Take(5))
                {
                    await Context.Channel.SendMessageAsync(string.Format("{0} - {1}/{2} - Map: {3} - AppID: {4} - Version: {5} - Dir: {6} - Tags: {7} - Name: {8} \n\n",
                                                                         new SteamID(server.steamid).Render(true), server.players, server.max_players, server.map, server.appid, server.version, server.gamedir, server.gametype, server.name));
                }
            }
            else if (servers.Count > Program.Instance.connection.DISPLAY_AMOUNT)
            {
                var serv = servers.Take(5).Select(x => string.Format("{0} ({1})", x.addr, x.players));

                await Context.Channel.SendMessageAsync(string.Format("{0}{1}", string.Join(", ", serv), servers.Count() > 5 ? string.Format(", and {0}{1} more", servers.Count() == 5000 ? ">" : "", servers.Count() - 5) : ""));
            }
        }
Ejemplo n.º 3
0
        public override async void OnCommand(CommandArguments command)
        {
            if (command.Message.Length == 0)
            {
                CommandHandler.ReplyToCommand(command, "Usage:{0} servers <filter> - See https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol", Colors.OLIVE);

                return;
            }

            if (command.Message.IndexOf('\\') == -1)
            {
                CommandHandler.ReplyToCommand(command, "That doesn't look like a filter.");

                return;
            }

            var request = new CGameServers_GetServerList_Request
            {
                filter = command.Message,
                limit  = 5000,
            };

            var callback = await GameServers.SendMessage(api => api.GetServerList(request));

            var response = callback.GetDeserializedResponse <CGameServers_GetServerList_Response>();
            var servers  = response.servers;

            if (!servers.Any())
            {
                CommandHandler.ReplyToCommand(command, "No servers.");

                return;
            }

            if (servers.Count == 1)
            {
                var server = servers.First();

                CommandHandler.ReplyToCommand(command, "{0} - {1} - {2}/{3} - Map: {4} - AppID: {5} - Version: {6} - Dir: {7} - Tags: {8} - Name: {9}",
                                              server.addr, new SteamID(server.steamid).Render(true), server.players, server.max_players, server.map, server.appid, server.version, server.gamedir, server.gametype, server.name
                                              );

                return;
            }

            var serv = servers.Take(5).Select(x => string.Format("{0} ({1})", x.addr, x.players));

            CommandHandler.ReplyToCommand(command, "{0}{1}", string.Join(", ", serv), servers.Count > 5 ? string.Format(", and {0}{1} more", servers.Count == 5000 ? ">" : "", servers.Count - 5) : "");
        }
Ejemplo n.º 4
0
        public override async Task OnCommand(CommandArguments command)
        {
            if (command.Message.Length == 0)
            {
                command.Reply("Usage:{0} servers <filter> - See https://developer.valvesoftware.com/wiki/Master_Server_Query_Protocol", Colors.OLIVE);

                return;
            }

            if (command.Message.IndexOf('\\') == -1)
            {
                command.Reply("That doesn't look like a filter.");

                return;
            }

            var request = new CGameServers_GetServerList_Request
            {
                filter = command.Message,
                limit  = int.MaxValue,
            };

            var task = GameServers.SendMessage(api => api.GetServerList(request));

            task.Timeout = TimeSpan.FromSeconds(10);
            var callback = await task;
            var response = callback.GetDeserializedResponse <CGameServers_GetServerList_Response>();
            var servers  = response.servers;

            if (servers.Count == 0)
            {
                command.Reply("No servers.");

                return;
            }

            if (servers.Count == 1)
            {
                var server = servers[0];

                command.Reply($"{server.addr} - {new SteamID(server.steamid).Render(true)} - {Colors.GREEN}{server.players}/{server.max_players}{Colors.NORMAL} - Map: {Colors.DARKGRAY}{server.map}{Colors.NORMAL} - AppID: {Colors.DARKGRAY}{server.appid}{Colors.NORMAL} - Version: {Colors.DARKGRAY}{server.version}{Colors.NORMAL} - Dir: {Colors.DARKGRAY}{server.gamedir}{Colors.NORMAL} - Tags: {Colors.DARKGRAY}{server.gametype}{Colors.NORMAL} - Name: {Colors.DARKGRAY}{server.name}");

                return;
            }

            command.Reply($"{Colors.GREEN}{servers.Sum(x => x.players)}{Colors.NORMAL} players on {Colors.GREEN}{servers.Count}{Colors.NORMAL} servers. First three: {string.Join(" / ", servers.Take(3).Select(x => x.addr))}");
        }