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.
This commit is contained in:
Dico200
2015-04-10 00:37:51 +02:00
parent d85b96f875
commit f3833a6733

39
misc.py
View File

@@ -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")
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:"