diff options
author | Dico200 <dico.karssiens@gmail.com> | 2015-03-26 16:44:21 +0100 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2015-03-26 16:44:21 +0100 |
commit | 75823ed0427ff48983c83a9510d1e1715056e1bf (patch) | |
tree | 8f858426b6d5541f1d094ea80a5bb5e6fc11cb2c /helpers.py | |
parent | 9855f62e7bb702729c4e939421d650f390040ed2 (diff) |
Added basecommands.py
Contains @simplecommand and @basecommand
Slightly alterred simplecommand, made both display the command's
required permission when displaying help if the sender has the
permission "utils.showpermission".
Also a small tweak in misc.py's join listener.
Diffstat (limited to 'helpers.py')
-rw-r--r-- | helpers.py | 103 |
1 files changed, 0 insertions, 103 deletions
@@ -217,106 +217,3 @@ def toggle(player, ls, name = "Toggle", add = None): msg(player, "&a%s turned on!" % name) - - - - -""" -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_name: 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. -""" - -def simplecommand(cmd_name, aliases = [], permission = None, usage = "[args...]", description = None, sender_limit = -1, min_args = 0, max_args = -1, help_noargs = False, help_subcmd = False): - cmd_name = cmd_name.lower() - if not permission: - permission = "utils." + cmd_name - if not description: - description = "Handles " + cmd_name - - def actualDecorator(function): - - @hook.command(cmd_name, aliases = aliases) - def __call_func__(sender, command, label, args): - try: - message = __run__(sender, command, label, args) - if message: - msg(sender, message) - except: - error(trace()) - - def __run__(sender, command, label, args): - isplayer = is_player(sender) - if not is_sender_valid(isplayer): - return "&cThis command can only be run from the console" if isplayer else "&cThis command can only be run by players" - if not sender.hasPermission(permission): - return "&cYou do not have permission to use this command" - if ((not args) and help_noargs) or (help_subcmd and args and args[0].lower() == "help"): - return help_message(sender) - if not checkargs(sender, args, min_args, max_args): - return None - return function(sender, command, label, args, help_message) - - return __call_func__ - - def is_sender_valid(isplayer): - return True if sender_limit == -1 else sender_limit != isplayer - - def help_message(sender): - """ - Information about command /<cmd>: #Light green - description... #Blue - description... #Blue - - Syntax: /<cmd> <usage> #Light green - Aliases: alias1, alias2, alias3 #Gold - """ - try: - help_msg = "&aInformation about command /%s:\n &9%s" % (cmd_name, description.replace("\n", "\n ")) - help_msg += "\n \n&aSyntax: /%s %s" % (cmd_name, usage) - if aliases: - help_msg += ("\n&6Aliases: " + "".join([(alias + ", ") for alias in aliases]))[:-2] - return help_msg - except: - error(trace()) - - return actualDecorator - - -""" -@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" -""" |