Guest User

Wander Wonder Item Dump v1

a guest
Apr 12th, 2015
72
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import os
  2. import struct
  3.  
  4. #Gets data
  5. def get_data(filename):
  6.     totalbytes = os.path.getsize(filename)
  7.     infile = open(filename, 'rb')
  8.     totalfiledata = infile.read(totalbytes)
  9.     infile.close()
  10.     return totalfiledata
  11.  
  12. #Tells if the string s is a SHIFT-JIS character or not
  13. def is_jis_char(s):
  14.     if len(s) != 2: #If it's not a string of length 2, then...
  15.         return False
  16.     try:            #Python error handling
  17.         if len(s.decode('cp932')) != 1: #For example, 2 ascii characters will be length 2
  18.             return False                #Two bytes that decode to a SHIFT-JIS character will be length 1
  19.     except UnicodeDecodeError:  #The string couldn't be decoded
  20.         return False            #Not a SHIFT-JIS character
  21.     return True                 #It is a SHIFT-JIS character
  22.  
  23. filedata = get_data('item.sq')  #Get data
  24. ptr = 0                         #Initialize variables
  25. with open('itemdata.csv','wb') as f:    #Open output file
  26.     while ptr < 0x1028:         #Until the end of the pointer table
  27.         target = struct.unpack('<I',filedata[ptr:ptr+4])[0] #Find pointer target
  28.         if ord(filedata[target]) > 31 and ord(filedata[target]) < 127 and \
  29.            ord(filedata[target+1]) > 31 and ord(filedata[target+1]):    #First 2 bytes are both ASCII
  30.             s = filedata[target:filedata.find('\x00',target)]           #Find the string at this position
  31.             if len(s) > 24:                                             #If the string is longer than 24
  32.                 f.write(hex(ptr) + ';' + s[:24] + '\r\n')               #Write pointer and 1st 24 characters
  33.                 f.write(';' + s[24:] + '\r\n')                          #Write remaining characters
  34.             else:
  35.                 f.write(hex(ptr) + ';' + s + '\r\n')                    #Write the pointer and the string
  36.         elif is_jis_char(filedata[target:target+2]):                #First 2 bytes are a SHIFT-JIS character
  37.             s = filedata[target:filedata.find('\x00',target)]       #Same as before
  38.             if len(s) > 24:
  39.                 f.write(hex(ptr) + ';' + s[:24] + '\r\n')
  40.                 f.write(';' + s[24:] + '\r\n')
  41.             else:
  42.                 f.write(hex(ptr) + ';' + s + '\r\n')
  43.         ptr += 4    #Increment the pointer
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×