Example #1
0
        public static void Execute(string str, IrcUser sender, IIrcMessageTarget target)
        {
            var args = new IRCCommandEventArgs(str, sender, target);

            string commandName = args[-1].ToLowerInvariant();
            if (TShockIRC.Config.IgnoredCommands.Contains(commandName))
                return;

            var ircCommand = Commands.FirstOrDefault(c => c.Names.Contains(commandName));
            var senderGroup = TShockIRC.IrcUsers[sender];
            if (ircCommand != null)
            {
                if (String.IsNullOrEmpty(ircCommand.Permission) || senderGroup.HasPermission(ircCommand.Permission))
                {
                    if (ircCommand.DoLog)
                        Log.Info("{0} executed: /{1}.", sender.NickName, str);
                    ircCommand.Execute(args);
                }
                else
                {
                    Log.Warn("{0} tried to execute /{1}.", sender.NickName, str);
                    TShockIRC.SendMessage(target, "\u00035You do not have access to this command.");
                }
            }
            else if (senderGroup.HasPermission("tshockirc.command"))
            {
                var tsIrcPlayer = new TSIrcPlayer(sender.NickName, senderGroup, target);
                var commands = TShockAPI.Commands.ChatCommands.Where(c => c.HasAlias(commandName));

                if (commands.Count() != 0)
                {
                    Main.rand = new Random();
                    WorldGen.genRand = new Random();
                    foreach (Command command in commands)
                    {
                        if (!command.CanRun(tsIrcPlayer))
                        {
                            Log.Warn("{0} tried to execute /{1}.", sender.NickName, str);
                            TShockIRC.SendMessage(target, "\u00035You do not have access to this command.");
                        }
                        else if (!command.AllowServer)
                            TShockIRC.SendMessage(target, "\u00035You must use this command in-game.");
                        else
                        {
                            var parms = args.ParameterRange(0, args.Length);
                            if (TShockAPI.Hooks.PlayerHooks.OnPlayerCommand(tsIrcPlayer, command.Name, str, parms, ref commands))
                                return;
                            if (command.DoLog)
                                Log.Info("{0} executed: /{1}.", sender.NickName, str);
                            command.Run(str, tsIrcPlayer, parms);
                        }
                    }
                }
                else
                    TShockIRC.SendMessage(target, "\u00035Invalid command.");
            }
            else
            {
                Log.Warn("{0} tried to execute /{1}.", sender.NickName, str);
                TShockIRC.SendMessage(target, "\u00035You do not have access to this command.");
            }
        }
Example #2
0
        public static void Execute(string str, IrcUser sender, IIrcMessageTarget target)
        {
            var args = new IRCCommandEventArgs(str, sender, target);

            string commandName = args[-1].ToLowerInvariant();

            if (TShockIRC.Config.IgnoredCommands.Contains(commandName))
            {
                return;
            }

            var ircCommand  = Commands.FirstOrDefault(c => c.Names.Contains(commandName));
            var senderGroup = TShockIRC.IrcUsers[sender];

            if (ircCommand != null)
            {
                if (String.IsNullOrEmpty(ircCommand.Permission) || senderGroup.HasPermission(ircCommand.Permission))
                {
                    if (ircCommand.DoLog)
                    {
                        Log.Info("{0} executed: /{1}.", sender.NickName, str);
                    }
                    ircCommand.Execute(args);
                }
                else
                {
                    Log.Warn("{0} tried to execute /{1}.", sender.NickName, str);
                    TShockIRC.SendMessage(target, "\u00035You do not have access to this command.");
                }
            }
            else if (senderGroup.HasPermission("tshockirc.command"))
            {
                var tsIrcPlayer = new TSIrcPlayer(sender.NickName, senderGroup, target);
                var commands    = TShockAPI.Commands.ChatCommands.Where(c => c.HasAlias(commandName));

                if (commands.Count() != 0)
                {
                    Main.rand        = new Random();
                    WorldGen.genRand = new Random();
                    foreach (Command command in commands)
                    {
                        if (!command.CanRun(tsIrcPlayer))
                        {
                            Log.Warn("{0} tried to execute /{1}.", sender.NickName, str);
                            TShockIRC.SendMessage(target, "\u00035You do not have access to this command.");
                        }
                        else if (!command.AllowServer)
                        {
                            TShockIRC.SendMessage(target, "\u00035You must use this command in-game.");
                        }
                        else
                        {
                            var parms = args.ParameterRange(0, args.Length);
                            if (TShockAPI.Hooks.PlayerHooks.OnPlayerCommand(tsIrcPlayer, command.Name, str, parms, ref commands))
                            {
                                return;
                            }
                            if (command.DoLog)
                            {
                                Log.Info("{0} executed: /{1}.", sender.NickName, str);
                            }
                            command.Run(str, tsIrcPlayer, parms);
                        }
                    }
                }
                else
                {
                    TShockIRC.SendMessage(target, "\u00035Invalid command.");
                }
            }
            else
            {
                Log.Warn("{0} tried to execute /{1}.", sender.NickName, str);
                TShockIRC.SendMessage(target, "\u00035You do not have access to this command.");
            }
        }