diff options
author | Dico200 <dico.karssiens@gmail.com> | 2015-05-13 21:39:25 +0200 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2015-05-13 21:39:25 +0200 |
commit | 0ef318d6b95c3f602c4409e6849bea8e29ac9367 (patch) | |
tree | 22453b4695c0761fdffff5c14e0852fd4b2c1243 /basecommands.py | |
parent | 9f4d096a57c4efee3fc3c53e60c6312dfafed227 (diff) |
Removed a lot of shit from basecommands.py
Diffstat (limited to 'basecommands.py')
-rw-r--r-- | basecommands.py | 276 |
1 files changed, 0 insertions, 276 deletions
diff --git a/basecommands.py b/basecommands.py index b88731f..605aab5 100644 --- a/basecommands.py +++ b/basecommands.py @@ -1,156 +1,7 @@ from helpers import * -import inspect, new - -current_subs = [] -current_main = None to_see_permission = "utils.showpermission" # See cmd permission in help -def maincommand(function): - current_main = function - return function - -class subcommand(): - - def __init__(self, cmd, - aliases = [], - amin = 0, - amax = -1, - description = None, - usage = "[args...]", - senderLimit = -1, - helpNoargs = False, - helpSubcmd = False): - cmd = cmd.lower() - self.description = description - self.cmd = cmd - self.usage = usage - self.aliases = aliases - self.amin = amin - self.amax = amax - self.senderLimit = senderLimit - self.helpNoargs = helpNoargs - self.helpSubcmd = helpSubcmd - self.permission = None - self.parent = None - self.call = None - - def __call__(self, f): - def call_sub(sender, command, label, args): - isPlayer = is_player(sender) - if not isSenderValid(senderLimit, isPlayer): - return invalidSenderMsg(isPlayer) - if not sender.hasPermission(permission): - return "&cYou do not have permission to use that command" - if ((not args) and helpNoargs) or (helpSubcmd and args and args[0].lower() == "help"): - return getHelp(sender) - if not checkargs(sender, args, amin, amax): - return None - return f(sender, command, label, args) - - self.call = call_sub - current_subs.append(self) - return call_sub - - def getHelp(sender): - return helpMsg(sender, "%s %s" % (parent, cmd), description, usage, aliases, permission) - - def setParent(self, parent): - self.parent = parent - self.permission = "utils.%s.%s" % (parent, self.cmd) - self.description = self.description if self.description else "Handles /" + parent - - def isCalled(self, subcmd): - alias = self.cmd - i = 0 - while i <= len(self.aliases): - if alias == subcmd: - return True - alias = self.aliases[i] - i += 1 - return False - - -def command(cmd, - aliases = [], - usage = "[args...]", - description = None, - senderLimit = -1, - amin = 0, - amax = -1, - helpNoargs = False, - helpSubcmd = False): - - cmd = cmd.lower() - - subcommands = [] - for subcmd in current_subs: - subcmd.setParent(cmd) - subcommands.append(subcmd) - info(subcommands) - current_subs = [] - - main_function = current_main - current_main = None - if main_function == None and len(subcommands) != 0: - error("No main function found for " + cmd) - - permission = "utils." + cmd - if not description: - description = "Handles " + cmd - if not usage: - usage = "/%s <subcmd>" % cmd - - def getHelp(sender): - return helpMsg(sender, cmd, description, usage, aliases, permission) - - def getCalledCmd(cmdName): - for subcmd in subcommands: - if subcmd.isCalled(cmdName): - return subcmd - return None - - def decorator(function): - - if len(subcommands) == 0: - main_function = function - - @hook.command(cmd, aliases = aliases) - def call(sender, command, label, args): - message = run(sender, command, label, args) - if message: - if message == "HELP": - message = getHelp(sender) - msg(sender, message) - return True - - def run(sender, command, label, args): - isPlayer = is_player(sender) - if not isSenderValid(senderLimit, isPlayer): - return invalidSenderMsg(isPlayer) - - if args: - arg1 = args[0].lower() - if (not args) and helpNoargs: - return getHelp(sender) - if helpSubcmd and arg1 == "help": - if len(args) > 1: - sub = getCalledCmd(args[1].lower()) - return sub.getHelp(sender) if sub and sub.helpSubcmd else "&c%s is not a command!" % args[1] - return getHelp(sender) - sub = getCalledCmd(args[0].lower()) - if sub: - return sub.call(sender, command, label, args[1:]) - if not sender.hasPermission(permission): - return "&cYou do not have permission to use that command" - if not checkargs(sender, args, amin, amax): - return None - return main_function(sender, command, label, args) - return call - return decorator - - - def isSenderValid(senderLimit, isPlayer): return True if senderLimit == -1 else senderLimit != isPlayer @@ -214,133 +65,6 @@ def simplecommand(cmd, return decorator -""" -def advancedcommand(cmd, - aliases = [], - description = None, - usage = None, - senderLimit = -1, - subCommands = []): - cmd = cmd.lower() - - def isSenderValid(isPlayer): - return True if senderLimit == -1 else senderLimit != isPlayer - - def getHelp(sender): - return helpMsg(sender, cmd, description, usage, aliases) - - def getSubCmd(alias): - called = None - for sub in subCommands: - if sub.isCalled(alias): - called = sub - - @hook.command(cmd, aliases = aliases) - def call(sender, command, label, args): - message = run(sender, command, label, args) - if message: - if message == "HELP": - message = getHelp(sender) - msg(sender, message) - return True - - def run(sender, command, label, args): - isPlayer = is_player(sender) - if not isSenderValid(senderLimit, isPlayer): - return invalidSenderMsg(isPlayer) - if not args: - return getHelp() - subcmd = args[0].lower() - if subcmd == "help": - if len(args) == 2: - called = getSubCmd(args[1].lower()) - if called: - return called.getHelp(sender) - else: - return getHelp() - called = getSubCmd(subcmd) - if not called: - return getHelp() - if not isSenderValid(called.senderLimit, isPlayer): - return invalidSenderMsg(isPlayer) - if not sender.hasPermission(called.permission): - return "&cYou do not have permission to use that command" - if not checkargs(sender, args[1:], called.amin, called.amax): - return None - return called.call(sender, command, label, args) - - def decorator(function): - #functions = [new.function(c, globals()) for c in function.func_code.co_consts if inspect.iscode(c)] - functions = function() - for sub in subCommands: - sub.setParent(cmd) - for func in functions: - if sub.cmd == func.__name__.lower(): - sub.setCalledFunction(func) - if not sub.call: - error("No function found for /%s %s" % (cmd, sub.cmd)) - return call - return decorator -""" - - -""" -Use this instead of @hook.command for your command methods. (@simplecommand(things...)) - -It will take care of the following things: -- Basic permission check. The default permission is utils.<cmd_name> -- Sender type check. You can pass whether the sender must be a player, a consolesender, or both. (see sender_limit below) -- Minimum and maximum args. Works with checkargs from helpers.py. -- A '/<cmd> help' message containing the description, usage and aliases of the command. - -Information about some arguments: -- cmd: The command you type in chat. -- usage: For example "<player> <other_player" and is part of the help message. -- description: A brief description of what the command does. (also part of the help message) -- aliases: A list of aliases for the command -- permission: The basic permission for the command. Defaults to utils.<cmd> -- sender_limit: Defines what sendertype can use the command. Leave blank for console & player, 0 for player only, 1 for console only. -- min_args: The least arguments for the command. -- max_args: You guessed it right. Defaults to infinity (-1). -- help_noargs: Whether to send help if no arguments are given -- help_subcmd: Whether to send help upon '/<cmd> help' - -*** DISCLAIMER *** - -Your command function must take four arguments: sender, command, label, args and help_msg. -help_msg is a function which can be called like 'return help_msg(sender)' to send them information about the command. - -Your function must also not return a boolean like before, but a String instead. The string returned will be sent to the player (&-codes supported). -Use None or "" for no message. - -Feel free to edit or give suggestions (but don't break existing commands) - -See below for an example command: - -@simplecommand("test", usage = "<player>", description = "Kicks a player", aliases = ["kickp", "tek"], permission = "utils.kickuser", sender_limit = 0, min_args = 1, max_args = 2) -def on_test(sender, command, label, args): - target = server.getPlayer(args[0]); - if target: - target.kickPlayer("Kicked from the server") - return None - return "&cThat player could not be found" -""" - -""" -Example @command: - -@command("forcefield") -def forcefield_command(): - @subcommand("add") - def func(sender, command, label, args): - ...add to whitelist - @maincommand - def other(sender, command, label, args): - ...Execute command if no sub commands were called -@command("simplestuff") -def simplestuff_command(sender, command, label, args): - msg(sender, "hi, I do not use subcommands!") -""" |