Added **kwargs to cmdhandler and execute_cmd() methods, to set arbitrary flags on commands at run-time. Unused by default Evennia but may be useful to codedly change operation parameters on commands at run-time.
This commit is contained in:
parent
19d6d4ff9e
commit
a88afabd60
5 changed files with 33 additions and 8 deletions
|
|
@ -251,7 +251,7 @@ def get_and_merge_cmdsets(caller, session, player, obj,
|
||||||
# Main command-handler function
|
# Main command-handler function
|
||||||
|
|
||||||
@inlineCallbacks
|
@inlineCallbacks
|
||||||
def cmdhandler(called_by, raw_string, testing=False, callertype="session", sessid=None):
|
def cmdhandler(called_by, raw_string, testing=False, callertype="session", sessid=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
This is the main function to handle any string sent to the engine.
|
This is the main function to handle any string sent to the engine.
|
||||||
|
|
||||||
|
|
@ -268,6 +268,10 @@ def cmdhandler(called_by, raw_string, testing=False, callertype="session", sessi
|
||||||
giving them precendence for same-name and same-prio commands.
|
giving them precendence for same-name and same-prio commands.
|
||||||
sessid - Relevant if callertype is "player" - the session id will help
|
sessid - Relevant if callertype is "player" - the session id will help
|
||||||
retrieve the correct cmdsets from puppeted objects.
|
retrieve the correct cmdsets from puppeted objects.
|
||||||
|
**kwargs - other keyword arguments will be assigned as named variables on the
|
||||||
|
retrieved command object *before* it is executed. This is unuesed
|
||||||
|
in default Evennia but may be used by code to set custom flags or
|
||||||
|
special operating conditions for a command as it executes.
|
||||||
|
|
||||||
Note that this function returns a deferred!
|
Note that this function returns a deferred!
|
||||||
"""
|
"""
|
||||||
|
|
@ -392,6 +396,10 @@ def cmdhandler(called_by, raw_string, testing=False, callertype="session", sessi
|
||||||
# only return the command instance
|
# only return the command instance
|
||||||
returnValue(cmd)
|
returnValue(cmd)
|
||||||
|
|
||||||
|
# assign custom kwargs to found cmd object
|
||||||
|
for key, val in kwargs.items():
|
||||||
|
setattr(cmd, key, val)
|
||||||
|
|
||||||
# pre-command hook
|
# pre-command hook
|
||||||
yield cmd.at_pre_cmd()
|
yield cmd.at_pre_cmd()
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -482,7 +482,7 @@ class ObjectDB(TypedObject):
|
||||||
# Execution/action methods
|
# Execution/action methods
|
||||||
#
|
#
|
||||||
|
|
||||||
def execute_cmd(self, raw_string, sessid=None):
|
def execute_cmd(self, raw_string, sessid=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Do something as this object. This method is a copy of the execute_
|
Do something as this object. This method is a copy of the execute_
|
||||||
cmd method on the session. This is never called normally, it's only
|
cmd method on the session. This is never called normally, it's only
|
||||||
|
|
@ -492,6 +492,10 @@ class ObjectDB(TypedObject):
|
||||||
Argument:
|
Argument:
|
||||||
raw_string (string) - raw command input
|
raw_string (string) - raw command input
|
||||||
sessid (int) - optional session id to return results to
|
sessid (int) - optional session id to return results to
|
||||||
|
**kwargs - other keyword arguments will be added to the found command
|
||||||
|
object instace as variables before it executes. This is
|
||||||
|
unused by default Evennia but may be used to set flags and
|
||||||
|
change operating paramaters for commands at run-time.
|
||||||
|
|
||||||
Returns Deferred - this is an asynchronous Twisted object that will
|
Returns Deferred - this is an asynchronous Twisted object that will
|
||||||
not fire until the command has actually finished executing. To
|
not fire until the command has actually finished executing. To
|
||||||
|
|
@ -509,7 +513,7 @@ class ObjectDB(TypedObject):
|
||||||
raw_string = to_unicode(raw_string)
|
raw_string = to_unicode(raw_string)
|
||||||
raw_string = self.nicks.nickreplace(raw_string,
|
raw_string = self.nicks.nickreplace(raw_string,
|
||||||
categories=("inputline", "channel"), include_player=True)
|
categories=("inputline", "channel"), include_player=True)
|
||||||
return cmdhandler.cmdhandler(_GA(self, "typeclass"), raw_string, callertype="object", sessid=sessid)
|
return cmdhandler.cmdhandler(_GA(self, "typeclass"), raw_string, callertype="object", sessid=sessid, **kwargs)
|
||||||
|
|
||||||
def msg(self, text=None, from_obj=None, sessid=0, **kwargs):
|
def msg(self, text=None, from_obj=None, sessid=0, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -300,7 +300,7 @@ class Object(TypeClass):
|
||||||
return self.player
|
return self.player
|
||||||
return self.dbobj.search_player(searchdata, quiet=quiet)
|
return self.dbobj.search_player(searchdata, quiet=quiet)
|
||||||
|
|
||||||
def execute_cmd(self, raw_string, sessid=None):
|
def execute_cmd(self, raw_string, sessid=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Do something as this object. This command transparently
|
Do something as this object. This command transparently
|
||||||
lets its typeclass execute the command. This method is
|
lets its typeclass execute the command. This method is
|
||||||
|
|
@ -311,6 +311,10 @@ class Object(TypeClass):
|
||||||
raw_string (string) - raw command input
|
raw_string (string) - raw command input
|
||||||
sessid (int) - id of session executing the command. This sets the
|
sessid (int) - id of session executing the command. This sets the
|
||||||
sessid property on the command.
|
sessid property on the command.
|
||||||
|
**kwargs - other keyword arguments will be added to the found command
|
||||||
|
object instace as variables before it executes. This is
|
||||||
|
unused by default Evennia but may be used to set flags and
|
||||||
|
change operating paramaters for commands at run-time.
|
||||||
|
|
||||||
Returns Deferred - this is an asynchronous Twisted object that will
|
Returns Deferred - this is an asynchronous Twisted object that will
|
||||||
not fire until the command has actually finished executing. To
|
not fire until the command has actually finished executing. To
|
||||||
|
|
|
||||||
|
|
@ -426,7 +426,7 @@ class PlayerDB(TypedObject, AbstractUser):
|
||||||
_GA(self, "aliases").clear()
|
_GA(self, "aliases").clear()
|
||||||
super(PlayerDB, self).delete(*args, **kwargs)
|
super(PlayerDB, self).delete(*args, **kwargs)
|
||||||
|
|
||||||
def execute_cmd(self, raw_string, sessid=None):
|
def execute_cmd(self, raw_string, sessid=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Do something as this player. This method is never called normally,
|
Do something as this player. This method is never called normally,
|
||||||
but only when the player object itself is supposed to execute the
|
but only when the player object itself is supposed to execute the
|
||||||
|
|
@ -434,6 +434,11 @@ class PlayerDB(TypedObject, AbstractUser):
|
||||||
eventual puppets.
|
eventual puppets.
|
||||||
|
|
||||||
raw_string - raw command input coming from the command line.
|
raw_string - raw command input coming from the command line.
|
||||||
|
sessid - the optional session id to be responsible for the command-send
|
||||||
|
**kwargs - other keyword arguments will be added to the found command
|
||||||
|
object instace as variables before it executes. This is
|
||||||
|
unused by default Evennia but may be used to set flags and
|
||||||
|
change operating paramaters for commands at run-time.
|
||||||
"""
|
"""
|
||||||
raw_string = utils.to_unicode(raw_string)
|
raw_string = utils.to_unicode(raw_string)
|
||||||
raw_string = self.nicks.nickreplace(raw_string,
|
raw_string = self.nicks.nickreplace(raw_string,
|
||||||
|
|
@ -448,7 +453,7 @@ class PlayerDB(TypedObject, AbstractUser):
|
||||||
# this can happen for bots
|
# this can happen for bots
|
||||||
sessid = None
|
sessid = None
|
||||||
return cmdhandler.cmdhandler(self.typeclass, raw_string,
|
return cmdhandler.cmdhandler(self.typeclass, raw_string,
|
||||||
callertype="player", sessid=sessid)
|
callertype="player", sessid=sessid, **kwargs)
|
||||||
|
|
||||||
def search(self, searchdata, return_puppet=False, **kwargs):
|
def search(self, searchdata, return_puppet=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -133,7 +133,7 @@ class Player(TypeClass):
|
||||||
"""
|
"""
|
||||||
return self.dbobj.swap_character(new_character, delete_old_character=delete_old_character)
|
return self.dbobj.swap_character(new_character, delete_old_character=delete_old_character)
|
||||||
|
|
||||||
def execute_cmd(self, raw_string, sessid=None):
|
def execute_cmd(self, raw_string, sessid=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Do something as this object. This command transparently
|
Do something as this object. This command transparently
|
||||||
lets its typeclass execute the command. This method
|
lets its typeclass execute the command. This method
|
||||||
|
|
@ -144,6 +144,10 @@ class Player(TypeClass):
|
||||||
raw_string (string) - raw command input
|
raw_string (string) - raw command input
|
||||||
sessid (int) - id of session executing the command. This sets the
|
sessid (int) - id of session executing the command. This sets the
|
||||||
sessid property on the command
|
sessid property on the command
|
||||||
|
**kwargs - other keyword arguments will be added to the found command
|
||||||
|
object instace as variables before it executes. This is
|
||||||
|
unused by default Evennia but may be used to set flags and
|
||||||
|
change operating paramaters for commands at run-time.
|
||||||
|
|
||||||
Returns Deferred - this is an asynchronous Twisted object that will
|
Returns Deferred - this is an asynchronous Twisted object that will
|
||||||
not fire until the command has actually finished executing. To
|
not fire until the command has actually finished executing. To
|
||||||
|
|
@ -155,7 +159,7 @@ class Player(TypeClass):
|
||||||
be useful for coders intending to implement some sort of nested
|
be useful for coders intending to implement some sort of nested
|
||||||
command structure.
|
command structure.
|
||||||
"""
|
"""
|
||||||
return self.dbobj.execute_cmd(raw_string, sessid=sessid)
|
return self.dbobj.execute_cmd(raw_string, sessid=sessid, **kwargs)
|
||||||
|
|
||||||
def search(self, searchdata, return_puppet=False, **kwargs):
|
def search(self, searchdata, return_puppet=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue