示例#1
0
        bool ExecuteCommand(RelayUser user, string channel, string cmdName, string cmdArgs)
        {
            Command cmd = Command.Find(cmdName);
            Player  p   = new RelayPlayer(channel, user, this);

            if (cmd == null)
            {
                p.Message("Unknown command!"); return(false);
            }

            string logCmd = cmdArgs.Length == 0 ? cmdName : cmdName + " " + cmdArgs;

            Logger.Log(LogType.CommandUsage, "/{0} (by {1} from {2})", logCmd, user.Nick, RelayName);

            try {
                if (!p.CanUse(cmd))
                {
                    CommandPerms.Find(cmd.name).MessageCannotUse(p);
                    return(false);
                }
                if (!cmd.SuperUseable)
                {
                    p.Message(cmd.name + " can only be used in-game.");
                    return(false);
                }
                cmd.Use(p, cmdArgs);
            } catch (Exception ex) {
                p.Message("CMD Error: " + ex);
                Logger.LogError(ex);
            }
            return(true);
        }
示例#2
0
        bool HandleListPlayers(RelayUser user, string channel, string cmd, bool opchat)
        {
            bool     isWho = cmd == ".who" || cmd == ".players" || cmd == "!players";
            DateTime last  = opchat ? lastOpWho : lastWho;

            if (!isWho || (DateTime.UtcNow - last).TotalSeconds <= 5)
            {
                return(false);
            }

            try {
                RelayPlayer p = new RelayPlayer(channel, user, this);
                p.group = Group.DefaultRank;
                MessagePlayers(p);
            } catch (Exception e) {
                Logger.LogError(e);
            }

            if (opchat)
            {
                lastOpWho = DateTime.UtcNow;
            }
            else
            {
                lastWho = DateTime.UtcNow;
            }
            return(true);
        }
示例#3
0
        protected override void MessagePlayers(RelayPlayer p)
        {
            ChannelSendEmbed embed = new ChannelSendEmbed(p.ChannelID);
            int total;
            List <OnlineListEntry> entries = PlayerInfo.GetOnlineList(p, p.Rank, out total);

            embed.Title = string.Format("{0} player{1} currently online",
                                        total, total.Plural());
            foreach (OnlineListEntry e in entries)
            {
                if (e.players.Count == 0)
                {
                    continue;
                }

                embed.Fields.Add(
                    ConvertMessage(FormatRank(e)),
                    ConvertMessage(FormatPlayers(p, e))
                    );
            }
            api.SendAsync(embed);
        }
示例#4
0
 /// <summary> Outputs the list of online players to the given user </summary>
 protected virtual void MessagePlayers(RelayPlayer p)
 {
     Command.Find("Players").Use(p, "", p.DefaultCmdData);
 }