Fixed bug in @batchcommand (Resolves Issue 287). Also updated @dig to again handle deleting ranges of dbrefs (with or without # in front).

This commit is contained in:
Griatch 2012-10-14 16:24:21 +02:00
parent 86a44ab84d
commit 4dff822764
5 changed files with 14 additions and 12 deletions

View file

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

View file

@ -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.

View file

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

View file

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

View file

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