8,484
edits
Paradox-01 (talk | contribs) mNo edit summary  | 
				Paradox-01 (talk | contribs)   (modify file via binary stream while patch data can be ASCII or byte array)  | 
				||
| Line 41: | Line 41: | ||
===read file===  | ===read file===  | ||
====  | ====binary====  | ||
  scan_AKEV_file_table  |   scan_AKEV_file_table  | ||
| Line 135: | Line 135: | ||
  ' [...]  |   ' [...]  | ||
  ' INFO : TXMPWH_DCTRBND  |   ' INFO : TXMPWH_DCTRBND  | ||
===modify file===  | |||
====binary====  | |||
Change FilePath and in case of binary patching use function "StringToByteArray".  | |||
 FilePath =  "C:\path_to\AKEVEnvWarehouse.oni"  | |||
 ' ### create stream objects  | |||
 Set InputStream = CreateObject("ADODB.Stream")  | |||
 InputStream.Type = 1  | |||
 InputStream.Open  | |||
 Set OutputStream = CreateObject("ADODB.Stream")  | |||
 OutputStream.Type = 1  | |||
 OutputStream.Open  | |||
 ' ### load input stream from file  | |||
 InputStream.LoadFromFile FilePath  | |||
 ' ### copy first 16 signs of input stream to output stream  | |||
 OutputStream.Write InputStream.Read(16)  | |||
 ' ### apply patch  | |||
 ' # ASCII patching  | |||
 patch_data = "ABCD"  | |||
 patch_data_length = len(patch_data)  | |||
 '   patch_data_length = 4  | |||
 InputStream.Position = InputStream.Position + patch_data_length  | |||
 OutputStream.Write CreateObject("System.Text.ASCIIEncoding").GetBytes_4(patch_data)  | |||
 ' # binary patching  | |||
 'OutputStream.Write StringToByteArray("41424344")  | |||
 ' ### re-add data that was cut off  | |||
 OutputStream.Write InputStream.Read  | |||
 ' ### unloader  | |||
 InputStream.Close  | |||
 Set InputStream = Nothing  | |||
 ' ### modes: 2 = overwrite; 1 = dontoverwrite  | |||
 ' test: save to new file  | |||
 ' FilePath2 = "C:\path_to\AKEVEnvWarehouseB.oni"  | |||
 OutputStream.SaveToFile FilePath, 2  | |||
 OutputStream.Close  | |||
 Set OutputStream = Nothing  | |||
edits