diff options
author | Dico200 <dico.karssiens@gmail.com> | 2015-04-10 00:37:51 +0200 |
---|---|---|
committer | Dico200 <dico.karssiens@gmail.com> | 2015-04-10 00:37:51 +0200 |
commit | f3833a6733ec6a8d70e5d7a49cf8e693671890ba (patch) | |
tree | d95f426ec977a5ae09d225213d2639b3e50c8cb4 /misc.py | |
parent | d85b96f8752c43372f21a3c4ea2067326562977b (diff) |
Untested change to add pyeval possibility to args
so you do like, for example:
/pex user EVAL:server.getOfflinePlayer("Dico200").getUniqueId()
this could also be used in chat. I know its pretty useless but useful in
some cases.
Diffstat (limited to 'misc.py')
-rw-r--r-- | misc.py | 39 |
1 files changed, 38 insertions, 1 deletions
@@ -157,6 +157,27 @@ def eval_thread(sender, code): msg(sender, ">>> %s: %s" % (eclass.__name__, e) + "\n ", False, "c") thread.exit() +def eval_argument_thread(event): + words = event.getMessage()[5:].split(" ") + for i in range(len(words)): + word = words[i] + if is_pyeval_call(word): + code = word[5:] + try: + result = unicode(eval(code)) + except: + e = exc_info()[1] + try: + eclass = e.__class__ + except AttributeError: + eclass = type(e) + msg(event.getPlayer(), ">>> %s: %s" % (eclass.__name__, e) + "\n ", False, "c") + result = code + words[i] = result + event.setMessage(" ".join(words)) + thread.exit() + + @simplecommand("pyeval", usage = "[code..]", description = "Runs python [code..] and returns the result", @@ -185,4 +206,20 @@ def on_player_teleport(event): player = event.getPlayer() if not event.isCancelled() and str(event.getCause()) == "SPECTATE" and not player.hasPermission("utils.tp.spectate"): event.setCancelled(True) - msg(event.getPlayer(), "&cSpectator teleportation is disabled")
\ No newline at end of file + msg(event.getPlayer(), "&cSpectator teleportation is disabled") + + +@hook.event("player.AsyncPlayerChatEvent", "lowest") +def on_chat(event): + user = event.getPlayer() + if user.hasPermission("utils.pyeval"): + thread.start_new_thread(event) + +@hook.event("player.PlayerCommandPreprocessEvent", "lowest") +def on_cmd(event): + user = event.getPlayer() + if user.hasPermission("utils.pyeval"): + thread.start_new_thread(event) + +def is_pyeval_call(string): + return len(string) > 5 and string[:5] == "EVAL:" |