Перейти к содержимому
Zone of Games Forum

Craftsk8

Новички
  • Публикации

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Нейтральная

О Craftsk8

  • Звание
    Новичок
  1. Игровые утилиты со всего мира

    В общем понял в чём ошибался. Всё проимпортировал. Но с некоторыми играми проблема возникает при импорте. Импортирую лишь один изменённый фай TEXT.CSV и выдаёт ошибку: - REIMPORT MEMORY_FILE WORK-AROUND: "STUFF\TEXT\TEXT.CSV"Error: unsupported compression 294 in reimport modeLast script line before the error or that produced the error: 501 clog MEMORY_FILE2 OFFSET CHUNK_ZSIZE CHUNK_SIZE Полазил по инету и нашёл один рекомендованый способ через редактирование хексом самого архива перед реимпортом. Сформировал файлик по данной комманде: quickbms.exe -l -V ttgames.bms patch.dat > info.txt и в нём нашёл следующее: . 00000028. 00000000 getarr FULLNAME "\stuff\text\text.csv" 10:40.. 00000000 getvarc TMP0 0x0000005c 1. 00000000 getvarc CHR 0x00000053 1.................................. 0000024d. 00000000 getarr TMP 0x13431bdd 0:589.. 0000024e. 00000000 getarr TMP 0x1347d7cd 0:590. 00000000 putarr 1 0x00000001 11:590. 00000000 getarr OFFSET 0x4b8fa7f0 2:590. 00000000 getarr ZSIZE 0x0029aa5f 3:590. 00000000 getarr SIZE 0x0074d8c7 4:590. 00000000 getarr PACKED 0x00000008 5:590.. 4b8fa7f0 getdstr SIGN "DFLT" 444 46 4c 54 DFLT.. 0074d8c7 putvarc 0x00000000 1. 4b8fa7f0 getdstr SIGN "DFLT" 444 46 4c 54 DFLT. 4b8fa7f4 get CHUNK_ZSIZE 0x000043d8 4. 4b8fa7f8 get CHUNK_SIZE 0x00010000 4.. 4b8febd4 getdstr SIGN "DFLT" 444 46 4c 54 DFLT. 4b8febd8 get CHUNK_ZSIZE 0x00004533 4. 4b8febdc get CHUNK_SIZE 0x00010000 4.......................................... 4bb91413 getdstr SIGN "DFLT" 444 46 4c 54 DFLT. 4bb91417 get CHUNK_ZSIZE 0x00003e30 4. 4bb9141b get CHUNK_SIZE 0x0000d8c7 4. 00000000 7657671 STUFF\TEXT\TEXT.CSV И тут что-то должно подсказать что и где в хексе менять, но что-то никак не пойму что именно, какой параметр в хексе искать? игра LEGO Star Wars Force Awakens. Ещё точно такая же проблема с LEGO Marvel's Avengers. С остальными лего играми всё получилось без ошибок.
  2. Игровые утилиты со всего мира

    Да, в этом косяк. На это как раз и ругается. Можно как-то обойти данную проблему? Вопрос, если подкидывать распакованные файлы, то как их располагать? К примеру у меня в папке content лежали GAME.DAT, GAME0.DAT, GAME1.DAT, GAME2.DAT. Распаковал и там куча файлов и папок. так понимаю класть в папку content все что распаковалось, или надо создавать какие-то папки, к примеру GAME, GAME1 и тд ?
  3. Игровые утилиты со всего мира

    Такой вопрос, я так понимаю что бы обратно в DAT запихнуть всё модифицированное надо что бы этот самый DAT файл был в папке? А то я после распаковки его удаляю =) Т.е. я так понимаю программа не создаёт DAT файлы, а в уже имеющийся их импортирует?
  4. Игровые утилиты со всего мира

    День добрый! Подскажите по Lego играм. использую quickbms, скрипт взял с сайта программы. # Traveller's Tales games DAT files extractor (script 0.9.7)# Lego Movie: The Video Game# LEGO Batman 1# LEGO Batman 2# LEGO Star Wars# LEGO Star Wars III# LEGO Indiana Jones# LEGO Harry Potter# LEGO Pirates of the Caribbean# LEGO Lord of the Rings# Transformers# LEGO Worlds# LEGO MARVELs Avengers# LEGO Dimensions# Lego Marvel Super Heroes# Lego Star Wars: The Force Awakens# others, check them on http://www.ttgames.com## In case of problems with the extraction try setting NAMELESS to 1# thanx to who fixed the handling of the names!## Note that the script may not work with the compressed files of# Lego Movie for PS3, in case of crashes or other issues you can# extract only the non compressed files by setting# EXTRACT_COMPRESSED to 0.## script for QuickBMS http://quickbms.aluigi.orgquickbmsver "0.7.4"set NAMELESS long 0 # set to 1 to extract the files without namesset EXTRACT_COMPRESSED long 1 # set to 0 to extract ONLY the non-compressed filesmath HAVE_CRCS = 0set SIGN_1234567a binary "\x7a\x56\x34\x12"getdstring SIGN 4goto 0math ONE_FILE = 0 if SIGN == "LZ2K"math ONE_FILE = 1elif SIGN == "DFLT"math ONE_FILE = 1elif SIGN == "ZLIB" # currently doesn't existmath ONE_FILE = 1elif SIGN == "LZMA" # currently doesn't existmath ONE_FILE = 1elif SIGN == "ZIPX"math ONE_FILE = 1elif SIGN == "RFPK"math ONE_FILE = 1elif SIGN == "Defl" # "Deflate_v1.0"goto 0math OFFSET = 0get SIZE asizeget NAME basenameget EXT extensionstring NAME + "_unpack."string NAME + EXTcallfunction DEFLATE_UNPACK 1cleanexitendifif SIGN u== SIGN_1234567agoto 0callfunction EXTRACT_1234567a 1cleanexitendifif ONE_FILE != 0math OFFSET = 0get ZSIZE asizemath SIZE = ZSIZEcallfunction UNPACKlog "" 0 SIZE MEMORY_FILE2cleanexitendifget HDR_NAME basenamestring HDR_NAME += ".hdr"open FDSE HDR_NAME 1 EXISTSif EXISTS != 0get NAME filenameif NAME == HDR_NAME get NAME basename string NAME += ".dat" open FDSE NAMEendifcallfunction HANDLE_COMPRESSED_DAT 1get HDR_SIZE asize 1log MEMORY_FILE 0 HDR_SIZE 1get DUMMY long MEMORY_FILEelsecallfunction HANDLE_COMPRESSED_DAT 1get INFO_OFF longif INFO_OFF & 0x80000000 math INFO_OFF ^= 0xffffffff math INFO_OFF <<= 8 math INFO_OFF += 0x100endifget INFO_SIZE longlog MEMORY_FILE INFO_OFF INFO_SIZEendifget TYPE_BOH signed_long MEMORY_FILEget FILES long MEMORY_FILEmath NEW_FORMAT = 1if TYPE_BOH != 0x3443432e # game.hdrif TYPE_BOH != 0x2e434334if FILES != 0x3443432e # game.datif FILES != 0x2e434334math NEW_FORMAT = 0endifendifendifendifif NEW_FORMAT == 1 # ".CC400TAD"goto 0 MEMORY_FILEendian bigget HDR_SIZE long MEMORY_FILEidstring MEMORY_FILE ".CC4"idstring MEMORY_FILE "0TAD"get TYPE_BOH signed_long MEMORY_FILE # -8get NEW_FORMAT_VER long MEMORY_FILE # 1get FILES long MEMORY_FILEget NAMES long MEMORY_FILEget NAMES_SIZE long MEMORY_FILEsavepos NAMES_OFF MEMORY_FILEmath OFFSET = NAMES_OFFmath OFFSET + NAMES_SIZEgoto OFFSET MEMORY_FILEputarray 10 NAMES "" # necessary and usefulputarray 1 NAMES "" # necessary and usefulget DUMMY long MEMORY_FILEmath MYID = 0xmath LAST_NAME_WORKAROUND "NAMES - 1"for i = 0 < NAMES get NAME_OFF long MEMORY_FILE get FOLDER_ID short MEMORY_FILE if NEW_FORMAT_VER >= 2 get DUMMY_ID short MEMORY_FILE endif get SOME_ID signed_short MEMORY_FILE get FILE_ID short MEMORY_FILE if NAME_OFF != 0xffffffff savepos TMP MEMORY_FILE math NAME_OFF + NAMES_OFF goto NAME_OFF MEMORY_FILE get NAME string MEMORY_FILE goto TMP MEMORY_FILE # I will find a solution another day maybe... if i == LAST_NAME_WORKAROUND math FILE_ID = MYID endif getarray PATH 1 FOLDER_ID string NAME p "%s\%s" PATH NAME if FILE_ID != 0 putarray 10 MYID NAME math MYID + 1 else putarray 1 i NAME endif endifnext iget TYPE_BOH signed_long MEMORY_FILE # -8get FILES long MEMORY_FILE# performance putarray 2 FILES 0 putarray 3 FILES 0 putarray 4 FILES 0 putarray 5 FILES 0for i = 0 < FILES if TYPE_BOH <= -11 get OFFSET longlong MEMORY_FILE else get OFFSET long MEMORY_FILE endif get ZSIZE long MEMORY_FILE get SIZE long MEMORY_FILE if TYPE_BOH <= -10 math PACKED = SIZE math SIZE & 0x7fffffff math PACKED u>> 31 if PACKED != 0 math PACKED = 2 # useless, but we need & 2 endif else get PACKED byte MEMORY_FILE get ZERO short MEMORY_FILE get OFFSET2 byte MEMORY_FILE math OFFSET u<< 8 math OFFSET | OFFSET2 endif putarray 2 i OFFSET putarray 3 i ZSIZE putarray 4 i SIZE putarray 5 i PACKEDnext icallfunction GET_CRCS 1open FDDE "DAT" # in case HDR has been openedfor i = 0 < FILES getarray FULLNAME 10 i callfunction GET_NAME 1 getarray OFFSET 2 IDX getarray ZSIZE 3 IDX getarray SIZE 4 IDX getarray PACKED 5 IDX callfunction EXTRACT_FILE 1next ielsesavepos INFO_OFF MEMORY_FILEmath TMP = FILESmath TMP *= 16math NAME_INFO = INFO_OFFmath NAME_INFO += TMPgoto NAME_INFO MEMORY_FILEget NAMES long MEMORY_FILEsavepos NAME_INFO MEMORY_FILEmath NAME_FIELD_SIZE = 8if TYPE_BOH <= -5 math NAME_FIELD_SIZE = 12endifmath TMP = NAMESmath TMP *= NAME_FIELD_SIZEmath NAME_OFF = NAME_INFOmath NAME_OFF += TMPgoto NAME_OFF MEMORY_FILEget NAMECRC_OFF long MEMORY_FILEsavepos NAME_OFF MEMORY_FILEmath NAMECRC_OFF += NAME_OFFgoto NAMECRC_OFF MEMORY_FILEcallfunction GET_CRCS 1if TYPE_BOH <= -2 get DUMMY1 signed_long MEMORY_FILE get DUMMY2 long MEMORY_FILEendif# print "files: %FILES%"# print "names: %NAMES%"# print "info_off: %INFO_OFF%"# print "info_size: %INFO_SIZE%"# print "name_info: %NAME_INFO%"# print "name_off: %NAME_OFF%"# print "namecrc_off: %NAMECRC_OFF%"set NAMEZ long 0set FULLNAME string ""set FULLPATH string ""for i = 0 < FILES callfunction SET_NAME 1 callfunction GET_NAME 1 math IDX *= 16 math IDX += INFO_OFF goto IDX MEMORY_FILE get OFFSET long MEMORY_FILE get ZSIZE long MEMORY_FILE get SIZE long MEMORY_FILE get PACKED threebyte MEMORY_FILE get OFFSET2 byte MEMORY_FILE if TYPE_BOH == -1 # do nothing else math OFFSET <<= 8 endif math OFFSET += OFFSET2 callfunction EXTRACT_FILE 1next iendifstartfunction GET_CRCSmath HAVE_CRCS = 0putarray 0 FILES 0putarray 11 FILES 0get TMP1 asize MEMORY_FILEsavepos TMP2 MEMORY_FILEif TMP2 u< TMP1 xmath TMP2 "TMP2 + (FILES * 4)" if TMP2 u< TMP1 math HAVE_CRCS = 1 for i = 0 < FILES get CRC long MEMORY_FILE putarray 0 i CRC putarray 11 i 0 # file has been extracted? next i endifendifif HAVE_CRCS == 0 for i = 0 < FILES putarray 0 i 0 putarray 11 i 0 # file has been extracted? next iendifendfunctionstartfunction EXTRACT_FILEendian little # necessary, they are little endian on big endian archives toogoto OFFSETgetdstring SIGN 4 if SIGN == "LZ2K" set PACKED long 2elif SIGN == "DFLT" set PACKED long 3elif SIGN == "ZLIB" set PACKED long 3elif SIGN == "LZMA" set PACKED long 3elif SIGN == "ZIPX" set PACKED long 3elif SIGN == "RFPK" set PACKED long 3else set PACKED long 0endifif PACKED & 2 # includes both 2 and 3 if EXTRACT_COMPRESSED != 0 callfunction UNPACK log FULLNAME 0 SIZE MEMORY_FILE2 endifelse if SIZE != 0 if ZSIZE != 0 if SIZE != ZSIZE print "SIZE (%SIZE%) and ZSIZE (%ZSIZE%) differ at offset %OFFSET|x%, contact me" cleanexit endif endif endif log FULLNAME OFFSET SIZEendifendfunctionstartfunction SET_NAMEdo goto NAME_INFO MEMORY_FILE get NEXT signed_short MEMORY_FILE get PREV signed_short MEMORY_FILE get OFF signed_long MEMORY_FILE if TYPE_BOH <= -5 # if NAME_FIELD_SIZE >= 12 get DUMMY long MEMORY_FILE endif savepos NAME_INFO MEMORY_FILE if OFF < 0 set NAME string "" else math OFF += NAME_OFF goto OFF MEMORY_FILE get NAME string MEMORY_FILE endif # used only for LEGO the game if you don't use the hdr file getvarchr TMP0 NAME 0 if TMP0 >= 0xf0 set NAME string "" endif #string NAME u= NAME # needed for the crc check, but doesn't improve performances so much if PREV != 0 getarray FULLPATH 1 PREV endif putarray 1 NAMEZ FULLPATH # putarray 1 NAMEZ NAME if NEXT > 0 # folder getarray TMP 1 PREV if TMP != "" # long story to avoid things like 2foldername that gives problems to QuickBMS set OLDNAME string \ # do not use / string OLDNAME += TMP string OLDNAME += \ # do not use / string FULLPATH >>= OLDNAME endif if NAME != "" #string FULLPATH += \ # do not use / string FULLPATH += NAME string FULLPATH += \ # do not use / endif endif math NAMEZ += 1while NEXT > 0set FULLNAME string FULLPATHstring FULLNAME += NAMEendfunctionstartfunction GET_CURRENT_NAMEfor j = 0 < FILES getarray TMP 11 j if TMP == 0 # the first file not extracted yet math IDX = j break endifnext jendfunctionstartfunction GET_NAMEif HAVE_CRCS == 0 callfunction GET_CURRENT_NAME 1else getvarchr TMP0 FULLNAME 0 if TMP0 == '\\' string FULLNAME <<= 1 endif math IDX = i if NAMELESS == 0 strlen NAMESZ FULLNAME string FULLNAME u= FULLNAME string FULLNAME R= / \ math CRC = 0x811c9dc5 for j = 0 < NAMESZ getvarchr CHR FULLNAME j math CRC ^= CHR math CRC *= 0x199933 next j math CRC &= 0xffffffff # quickbms_4gb_files for j = 0 < FILES getarray TMP 0 j # CRC database if CRC == TMP math IDX = j break endif next j if j >= FILES print "Alert: the crc of the file %FULLNAME% has not been found, I extract the current file" callfunction GET_CURRENT_NAME 1 endif else set FULLNAME string "" endifendifputarray 11 IDX 1 # the file has been extractedendfunctionstartfunction UNPACKputvarchr MEMORY_FILE2 SIZE 0log MEMORY_FILE2 0 0appendfor TMPSZ = 0 < ZSIZE goto OFFSET getdstring SIGN 4 if SIGN == "LZ2K" comtype lz2k get CHUNK_SIZE long get CHUNK_ZSIZE long elif SIGN == "DFLT" comtype dflt get CHUNK_ZSIZE long get CHUNK_SIZE long elif SIGN == "ZLIB" # currently doesn't exist comtype zlib get CHUNK_ZSIZE long get CHUNK_SIZE long elif SIGN == "LZMA" # currently doesn't exist comtype lzma get CHUNK_ZSIZE long get CHUNK_SIZE long elif SIGN == "ZIPX" comtype deflate # ??? not tested get CHUNK_ZSIZE long get CHUNK_SIZE long string TMP = CHUNK_ZSIZE encryption rc4 TMP "" 0 4 elif SIGN == "RFPK" comtype rfpk get CHUNK_ZSIZE long get CHUNK_SIZE long else print "Error: the compressing signature at offset %OFFSET% (%SIGN%) is not known, contact me" cleanexit endif savepos OFFSET if CHUNK_ZSIZE == CHUNK_SIZE log MEMORY_FILE2 OFFSET CHUNK_SIZE else clog MEMORY_FILE2 OFFSET CHUNK_ZSIZE CHUNK_SIZE endif encryption "" "" math OFFSET += CHUNK_ZSIZE savepos TMP MEMORY_FILE2 math TMPSZ += 12 math TMPSZ += CHUNK_ZSIZEnextappendendfunctionstartfunction HANDLE_COMPRESSED_DATgoto 0getdstring TMP 16if TMP == "CMP2CMP2CMP2CMP2" comtype lzma getdstring DAT_HASH 16 get DAT_SIZE longlong savepos DAT_OFFSET get DAT_ZSIZE asize math DAT_ZSIZE - DAT_OFFSET clog TEMPORARY_FILE DAT_OFFSET DAT_ZSIZE DAT_SIZE open "." TEMPORARY_FILEendifgoto 0endfunctionstartfunction EXTRACT_1234567aidstring "\x7a\x56\x34\x12" # 0x1234567aget FILES longget PAK_SIZE longget CRC longget ZERO longget ZERO longfor i = 0 < FILES get NAME_OFF long get OFFSET long get SIZE long get DUMMY long # it's ever 4 in any case get ZERO long get CRC long get ZERO long savepos TMP_OFF goto NAME_OFF get NAME string goto OFFSET callfunction DEFLATE_UNPACK 1 goto TMP_OFFnext iendfunctionstartfunction DEFLATE_UNPACKgetdstring SIGN 0x20if SIGN == "Deflate_v1.0" comtype dflt get XSIZE long math OFFSET + 0x24 math SIZE - 0x24 clog NAME OFFSET SIZE XSIZEelse log NAME OFFSET SIZEendifendfunction Распаковать DAT файл получилось, вопрос только как его собрать обратно в DAT? пробовал вот этим: for %%a in (*.DAT) do quickbms.exe -w -r dat.bms "%%a" Unpacked\ но не срабатывает. файлы для запаковки в папке Unpacked.
Zone of Games © 2003–2024 | Реклама на сайте.

×