def load_charname(self, book=None) -> None: """ Read our character name; this is a bit dependant on the book number, which is why we pass it in here. If the book number is not passed in, we will scan for map files and then use the first map's book number. If there are no maps in the slot, then we'll raise a LoadException """ # First figure out which book number we are, if we don't have it yet if not book: if not self.maps_loaded: self.load_maps() if len(self.maps) > 0: book = self.maps[0].book else: raise LoadException( 'Could not auto-detect which book version to use for charname') # Now do the actual loading if not os.path.exists(self.char_loc): raise LoadException(f'"char" file not found in {self.char_loc}') df = Savefile(self.char_loc) df.open_r() if book == 1: df.readint() else: df.readuchar() self.charname = df.readstr().decode('UTF-8') self.char_loaded = True df.close()
def load_charname(self, book=None): """ Read our character name; this is a bit dependant on the book number, which is why we pass it in here. If the book number is not passed in, we will scan for map files and then use the first map's book number. If there are no maps in the slot, then we'll raise a LoadException """ # First figure out which book number we are, if we don't have it yet if not book: if not self.maps_loaded: self.load_maps() if len(self.maps) > 0: book = self.maps[0].book else: raise LoadException( 'Could not auto-detect which book version to use for charname' ) # Now do the actual loading if not os.path.exists(self.char_loc): raise LoadException('"char" file not found in %s' % (directory)) df = Savefile(self.char_loc) df.open_r() if book == 1: df.readint() else: df.readuchar() self.charname = df.readstr() self.char_loaded = True df.close()
self.unknowni1) = unpack('<IIII', data[:16]) self.filename = data[16:] self.filename = self.filename[:self.filename.index("\x00")] df = Savefile(sys.argv[1]) df.open_r() header = df.read(4) if (header != '!PAK'): df.close() raise LoadException('Invalid PAK header') # Initial Values unknownh1 = df.readshort() unknownh2 = df.readshort() numfiles = df.readint() compressed_idx_size = df.readint() unknowni1 = df.readint() # Now load in the index decobj = zlib.decompressobj() indexdata = decobj.decompress(df.read()) zeroindex = df.tell() - len(decobj.unused_data) decobj = None fileindex = {} for i in range(numfiles): index = PakIndex(indexdata[:272]) indexdata = indexdata[272:] fileindex[index.filename] = index for filename in fileindex.keys():