From 4dff822764488b450541ab79264e2e4d0a9af463 Mon Sep 17 00:00:00 2001 From: Griatch Date: Sun, 14 Oct 2012 16:24:21 +0200 Subject: [PATCH] Fixed bug in @batchcommand (Resolves Issue 287). Also updated @dig to again handle deleting ranges of dbrefs (with or without # in front). --- game/gamesrc/world/examples/batch_code.py | 12 ++++++------ src/commands/default/batchprocess.py | 2 +- src/commands/default/building.py | 6 +++--- src/objects/models.py | 2 +- src/utils/utils.py | 4 +++- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/game/gamesrc/world/examples/batch_code.py b/game/gamesrc/world/examples/batch_code.py index cd9ecc38ce..12f9fdb6d5 100644 --- a/game/gamesrc/world/examples/batch_code.py +++ b/game/gamesrc/world/examples/batch_code.py @@ -43,11 +43,11 @@ # everything in this block will be appended to the beginning of # all other #CODE blocks when they are executed. -from ev import create, search +from ev import create_object, search_object from game.gamesrc.objects.examples import red_button -from game.gamesrc.objects import baseobjects +from ev import Object -limbo = search.objects('Limbo', global_search=True)[0] +limbo = search_object('Limbo')[0] #CODE (create red button) @@ -59,7 +59,7 @@ limbo = search.objects('Limbo', global_search=True)[0] # won't be able to be deleted in debug mode. # create a red button in limbo -red_button = create.create_object(red_button.RedButton, key="Red button", +red_button = create_object(red_button.RedButton, key="Red button", location=limbo, aliases=["button"]) # we take a look at what we created @@ -76,8 +76,8 @@ caller.msg("A %s was created." % red_button.key) # the python variables we assign to must match the ones given in the # header for the system to be able to delete them afterwards during a # debugging run. -table = create.create_object(baseobjects.Object, key="Table", location=limbo) -chair = create.create_object(baseobjects.Object, key="Chair", location=limbo) +table = create_object(Object, key="Table", location=limbo) +chair = create_object(Object, key="Chair", location=limbo) string = "A %s and %s were created. If debug was active, they were deleted again." caller.msg(string % (table, chair)) diff --git a/src/commands/default/batchprocess.py b/src/commands/default/batchprocess.py index 01b631b27b..447e241421 100644 --- a/src/commands/default/batchprocess.py +++ b/src/commands/default/batchprocess.py @@ -392,7 +392,7 @@ class CmdBatchCode(MuxCommand): # un in-process (will block) for inum in range(len(codes)): # loop through the batch file - if not batch_cmd_exec(caller): + if not batch_code_exec(caller): return step_pointer(caller, 1) # clean out the safety cmdset and clean out all other temporary attrs. diff --git a/src/commands/default/building.py b/src/commands/default/building.py index 11ed9c8c8d..1af8b62259 100644 --- a/src/commands/default/building.py +++ b/src/commands/default/building.py @@ -545,7 +545,7 @@ class CmdDestroy(MuxCommand): if not obj: self.caller.msg(" (Objects to destroy must either be local or specified with a unique dbref.)") return "" - if not "override" in self.switches and obj.dbid == int(settings.CHARACTER_DEFAULT_HOME): + if not "override" in self.switches and obj.dbid == int(settings.CHARACTER_DEFAULT_HOME.lstrip("#")): return "\nYou are trying to delete CHARACTER_DEFAULT_HOME. If you want to do this, use the /override switch." objname = obj.name if not obj.access(caller, 'delete'): @@ -572,10 +572,10 @@ class CmdDestroy(MuxCommand): for objname in self.lhslist: if '-' in objname: # might be a range of dbrefs - dmin, dmax = [utils.dbref(part) for part in objname.split('-', 1)] + dmin, dmax = [utils.dbref(part, reqhash=False) for part in objname.split('-', 1)] if dmin and dmax: for dbref in range(int(dmin),int(dmax+1)): - string += delobj(str(dbref)) + string += delobj("#" + str(dbref)) else: string += delobj(objname) else: diff --git a/src/objects/models.py b/src/objects/models.py index 77837519d6..908bc2f968 100644 --- a/src/objects/models.py +++ b/src/objects/models.py @@ -801,7 +801,7 @@ class ObjectDB(TypedObject): """ # Gather up everything that thinks this is its location. objs = ObjectDB.objects.filter(db_location=self) - default_home_id = int(settings.CHARACTER_DEFAULT_HOME) + default_home_id = int(settings.CHARACTER_DEFAULT_HOME.lstrip("#")) try: default_home = ObjectDB.objects.get(id=default_home_id) if default_home.dbid == _GA(self, "dbid"): diff --git a/src/utils/utils.py b/src/utils/utils.py index fe0dd186f2..189e3efef9 100644 --- a/src/utils/utils.py +++ b/src/utils/utils.py @@ -284,12 +284,14 @@ def pypath_to_realpath(python_path, file_ending='.py'): return "%s%s" % (path, file_ending) return path -def dbref(dbref): +def dbref(dbref, reqhash=True): """ Converts/checks if input is a valid dbref Valid forms of dbref (database reference number) are either a string '#N' or an integer N. Output is the integer part. """ + if reqhash and not (isinstance(dbref, basestring) and dbref.startswith("#")): + return None if isinstance(dbref, basestring): dbref = dbref.lstrip('#') try: