def findlock(socket, command, arguments): if len(arguments) == 0: socket.sysmessage( tr('Usage: findlock <lock>') ) return lock = arguments.strip().lower() items = wolfpack.itemiterator() item = items.first while item: if item.hasscript( "lock" ): if item.hastag( "lock" ) and item.gettag( "lock" ).lower() == lock: container = item.getoutmostitem() if container.container: container = container.container socket.sysmessage( tr("Going to item '%s' [Serial: 0x%x; Top: 0x%x]." % (item.getname(), item.serial, container.serial)) ) pos = container.pos socket.player.removefromview() socket.player.moveto(pos) socket.player.update() socket.resendworld() if item.container: socket.sendobject(item.container) if item.container.isitem(): socket.sendcontainer(item.container) return True item = items.next socket.sysmessage( "A matching lock with the id '%s' was not found." % lock )
def sort( self ): it = wolfpack.itemiterator() item = it.first while item: if not self.filter(item): if not item.pos.map in self.maps: self.maps[item.pos.map] = {} if not item.id in self.maps[item.pos.map]: self.maps[item.pos.map][item.id] = [] self.maps[item.pos.map][item.id].append(item) item = it.next
def sort(self): it = wolfpack.itemiterator() item = it.first while item: if not self.filter(item): if not item.pos.map in self.maps: self.maps[item.pos.map] = {} if not item.id in self.maps[item.pos.map]: self.maps[item.pos.map][item.id] = [] self.maps[item.pos.map][item.id].append(item) item = it.next
def sort( self ): self.socket.sysmessage("In sort()") it = wolfpack.itemiterator() item = it.first while item: if not self.filter(item): self.socket.sysmessage("Adding item") if not self.maps.has_key(item.pos.map): self.maps[item.pos.map] = {} if not self.maps[item.pos.map].has_key(item.id): self.maps[item.pos.map][item.id] = [] self.maps[item.pos.map][item.id].append(item) item = it.next
def wipeAllWorld( player, accept, state ): if not accept: player.socket.sysmessage( "Wipe command have been canceled" ) return 1 player.socket.sysmessage( "Removing all items from world, this may take a while" ) iterator = wolfpack.itemiterator() item = iterator.first count = 0; while item: if item.container == None: item.delete() count += 1 item = iterator.next player.socket.sysmessage( "%i items have been removed from world" % count )
def goitem(socket, command, arguments): if len(arguments) == 0: socket.sysmessage('Usage: goitem <name>') return items = wolfpack.itemiterator() item = items.first name = hash(arguments.lower()) found = [] while item: if hash(item.name.lower()) == name: found.append( item ) item = items.next if socket.hastag( "goitem" ): i = socket.gettag( "goitem" ) + 1 if i >= len(found): # No more items with the same name, start from the beginning i = 0 socket.settag( "goitem", i ) else: socket.settag( "goitem", 0 ) i = 0 if len(found) == 0: socket.sysmessage('An item with the given name was not found.') else: item = found[i] container = item.getoutmostitem() if container.container: container = container.container socket.sysmessage("Going to item '%s' [Serial: 0x%x; Top: 0x%x]." % (item.name, item.serial, container.serial)) pos = container.pos socket.player.removefromview() socket.player.moveto(pos) socket.player.update() socket.resendworld() if item.container: socket.sendobject(item.container) if item.container.isitem(): socket.sendcontainer(item.container)
def wipeMap( player, accept, state ): if not accept: player.socket.sysmessage( tr("Wipe command have been canceled") ) return 1 player.socket.sysmessage( tr("Removing all items from this map, this may take a while") ) iterator = wolfpack.itemiterator() item = iterator.first counter = 0 while item: if item.pos.map == player.pos.map: if item.container == None: item.delete() counter += 1 item = iterator.next player.socket.sysmessage( tr("%i items have been removed from this map") % counter ) return
def wipeAllWorld(player, accept, state): if not accept: player.socket.sysmessage(tr("Wipe command have been canceled")) return 1 player.socket.sysmessage( tr("Removing all items from world, this may take a while")) iterator = wolfpack.itemiterator() item = iterator.first counter = 0 while item: if item.container == None: item.delete() counter += 1 item = iterator.next player.socket.sysmessage( tr("%i items have been removed from world") % counter) return
def wipeAllWorld( player, accept, state ): if not accept: player.socket.sysmessage( "Wipe command have been canceled" ) return 1 player.socket.sysmessage( "Removing all items from world, this may take a while" ) iterator = wolfpack.itemiterator() item = iterator.first serials = [] while item: if item.container == None: serials.append(item.serial) item = iterator.next for serial in serials: item = wolfpack.finditem(serial) if item: item.delete() player.socket.sysmessage( "%i items have been removed from world" % len(serials) ) return
def gobaseid(socket, command, arguments): if len(arguments) == 0: socket.sysmessage('Usage: gobaseid <baseid>') return items = wolfpack.itemiterator() item = items.first baseid = hash(arguments.lower()) found = [] while item: if hash(item.baseid.lower()) == baseid: found.append( item ) item = items.next chars = wolfpack.chariterator() char = chars.first while char: if hash(char.baseid.lower()) == baseid: found.append( char ) char = chars.next if socket.hastag( "gobaseid" ): i = socket.gettag( "gobaseid" ) + 1 if i >= len(found): # No more items with the same baseid, start from the beginning i = 0 socket.settag( "gobaseid", i ) else: socket.settag( "gobaseid", 0 ) i = 0 if len(found) == 0: socket.sysmessage('An object with the given baseid was not found.') return False object = found[i] uid = hex2dec(object.serial) # Item if uid > 0x40000000: container = object.getoutmostitem() if container.container: container = container.container if object.name != '': socket.sysmessage("Going to item '%s' [Serial: 0x%x; Top: 0x%x]." % (object.name, object.serial, container.serial)) else: socket.sysmessage("Going to item [Serial: 0x%x; Top: 0x%x]." % (object.serial, container.serial)) pos = container.pos socket.player.removefromview() socket.player.moveto(pos) socket.player.update() socket.resendworld() if object.container: socket.sendobject(object.container) if object.container.isitem(): socket.sendcontainer(object.container) # Char elif uid > 0: if object.rank > socket.player.rank: return False socket.sysmessage('Going to char 0x%x.' % (uid)) pos = object.pos socket.player.removefromview() socket.player.moveto(pos) socket.player.update() socket.resendworld()