请问白荆回廊有办法解吗

86f600d59ccc92444c1c79032dc483084aadca.zip (5.3 MB)

0xDE3AD1879A0315C443D04617BB1EC62C221A52956C677A2B707FB59A81F326C3

# quickbms script for extracting assets from Ash Echoes
# use it on any file in repo6 folder (old versions) or Store folder (newer versions)
# in case of problems adjust FILES count (only for old versions with "data" files)
# created by spiritovod

quickbmsver "0.11"
callfunction QUICKBMS_4GB_CHECK 1

math FILES = 11		   # amount of "data" files + 1
math STOPPER = 0x10000 # should be 0x20000?

math NEW = 0
open FDSE "index_opt" 20 EXISTS
if EXISTS = 0
	open FDSE "new_index" 20 EXISTS
	math NEW = 1
endif
math INDEX = 20

get SIZE longlong INDEX
get INDICES longlong INDEX
get ZSIZE longlong INDEX
get CHUNK_SIZE long INDEX
get COMP short INDEX
get MAP short INDEX
if COMP = 1
	comtype lz4
elif COMP = 4
	comtype oodle
endif

xmath CHUNKS "SIZE / CHUNK_SIZE"
if SIZE % CHUNK_SIZE
	math CHUNKS + 1
endif
for i = 0 < CHUNKS
	get CHUNK_ZSIZE long INDEX
	putarray 0 i CHUNK_ZSIZE
next i

savepos OFFSET INDEX
log MEMORY_FILE 0 0
append
for i = 0 < CHUNKS
	getarray CHUNK_ZSIZE 0 i
	clog MEMORY_FILE OFFSET CHUNK_ZSIZE CHUNK_SIZE INDEX
	math OFFSET + CHUNK_ZSIZE
next i
append
math MEM = -1
math NAMES = 1

if NEW = 0
	for i = 1 < FILES
		xmath j "i - 1" 
		string FNAME p "data%03d" j
		open FDSE FNAME i
	next i

	goto 0 MEM
	string FOLDER = ""
	get FSIZE asize MEM
	savepos CUR_OFF MEM
	for CUR_OFF = CUR_OFF < FSIZE 
		get CHECK byte MEM
		xmath TYPE "CHECK >> 4"
		xmath NAMEZ "CHECK & 0xF"
		if TYPE = 0 # return to previous folder
			string FOLDER r FOLDER
			string FOLDER | "/"
			string FOLDER r FOLDER
		elif TYPE = 1 || TYPE = 2 # folder
			if TYPE = 2
				get NAMEZ byte MEM
			endif
			getdstring TMP_FOLDER NAMEZ MEM
			string FOLDER p "%s/%s" FOLDER TMP_FOLDER
		elif TYPE = 3 || TYPE = 4 || TYPE = 5 || TYPE = 6 # file
			if TYPE = 4 || TYPE = 6
				get NAMEZ byte MEM
			endif
			getdstring TMP_NAME NAMEZ MEM
			string NAME p "%s/%s" FOLDER TMP_NAME
			getdstring HASH 20 MEM
			if TYPE = 5 || TYPE = 6
				get OFFSET long MEM # in decompressed block
				get SIZE long MEM
			endif		
			callfunction find_extract 1
		endif
		savepos CUR_OFF MEM
	next
else
	callfunction check_size 1
	goto 0 MEM
	string FOLDER = "repo6"
	get FSIZE asize MEM
	savepos CUR_OFF MEM
	for CUR_OFF = CUR_OFF < FSIZE 
		getdstring FOLDER1 2 MEM
		getdstring HASHNAME 38 MEM	
		get PAD byte MEM
		
		if WITH_SIZE = 0
			callfunction get_string 1
		else
			savepos CUR_OFF MEM
			findloc TMP binary "\x09" MEM ""
			xmath NAMESZ "TMP - CUR_OFF"
			getdstring NAME NAMESZ MEM
			get PAD byte MEM
			callfunction get_string 1
		endif
		
		string TMP_NAME = NAME
		string TMP_NAME & "$"
		if TMP_NAME = "$"
			math IS_SINGLE = 1
		else
			math IS_SINGLE = 0
		endif
		
		string OPENED p "%s/%s/%s" FOLDER FOLDER1 HASHNAME
		open FDSE OPENED 10 
		math FILE = 10
		if IS_SINGLE = 1	
			callfunction extract_single 1
		else
			callfunction extract 1
		endif
		savepos CUR_OFF MEM
	next
endif

startfunction find_extract
	for i = 1 < FILES
		goto 0 i
		findloc HASH_OFF binary HASH i "" STOPPER
		if HASH_OFF != ""
			break
		endif
	next i
	if HASH_OFF = ""
	else
		math FILE = i
		math HASH_OFF + 20
		goto HASH_OFF FILE
		get CHUNK_OFF long FILE
		get TSIZE long FILE
		
		goto CHUNK_OFF FILE
		if TYPE = 3 || TYPE = 4
			callfunction extract 1		
		elif TYPE = 5 || TYPE = 6
			get SINGLE_SIZE longlong FILE
			get SINGLE_FLAGS longlong FILE
			get SINGLE_ZSIZE longlong FILE
			get SINGLE_CHUNK_SIZE long FILE
			get ASSET_SIZE long FILE # in big endian
			
			savepos TMP_OFF FILE
			math OFFSET + TMP_OFF
			goto OFFSET FILE
			callfunction extract 1
		endif
	endif
endfunction

startfunction extract_single
	goto -8 FILE
	savepos END_OFF FILE
	get INDEX_SIZE long FILE
	math INDEX_SIZE + 8
	goto INDEX_SIZE FILE SEEK_END
	savepos OFFSET FILE
	
	math i = 0
	for OFFSET = OFFSET < END_OFF
		getdstring HASH1 16 FILE
		get SIZE long FILE
		get ZSIZE long FILE
		get NAMESZ short FILE
		getdstring NAME NAMESZ FILE
		get HASH2 long FILE
		savepos OFFSET FILE
		putarray NAMES i NAME
		math i + 1
	next

	goto 0 FILE
	get SINGLE_SIZE longlong FILE
	get SINGLE_FLAGS longlong FILE
	get SINGLE_ZSIZE longlong FILE
	get SINGLE_CHUNK_SIZE long FILE
	get ASSET_SIZE long FILE # in big endian
	
	math FILES = i
	for i = 0 < FILES	
		getarray NAME NAMES i
		callfunction extract 1
		goto OFFSET FILE
	next i
endfunction

startfunction extract
	get SIZE longlong FILE
	get FLAGS longlong FILE
	get ZSIZE longlong FILE
	get CHUNK_SIZE long FILE
	get COMP short FILE
	get MAP short FILE
	if COMP = 1
		comtype lz4
	elif COMP = 4
		comtype oodle
	endif
	
	if COMP = 0
		savepos OFFSET FILE
		log NAME OFFSET SIZE FILE
	else
		xmath CHUNKS "SIZE / CHUNK_SIZE"
		if SIZE % CHUNK_SIZE
			math CHUNKS + 1
		endif
		for x = 0 < CHUNKS
			get CHUNK_ZSIZE long FILE
			putarray 0 x CHUNK_ZSIZE
		next x
		
		savepos OFFSET FILE
		log NAME 0 0
		append
		for x = 0 < CHUNKS
			getarray CHUNK_ZSIZE 0 x
			if COMP = 4
				goto OFFSET FILE
				get CHUNK_SIZE long FILE
				math OFFSET + 4
				math CHUNK_ZSIZE - 4
			endif
			clog NAME OFFSET CHUNK_ZSIZE CHUNK_SIZE FILE
			math OFFSET + CHUNK_ZSIZE
		next x
		append
	endif
endfunction

startfunction check_size
	goto 0 MEM
	getdstring DUMMY 41 MEM
		
	savepos CUR_OFF MEM
	findloc TMP binary "\x0A" MEM ""
	goto CUR_OFF MEM
	findloc TMP1 binary "\x09" MEM ""
	if TMP1 > TMP
		math WITH_SIZE = 0
	else
		math WITH_SIZE = 1
	endif
endfunction

startfunction get_string
	savepos CUR_OFF MEM
	findloc TMP binary "\x0A" MEM ""
	if TMP = ""
		xmath NAMESZ "FSIZE - CUR_OFF"
	else
		xmath NAMESZ "TMP - CUR_OFF"
	endif
	
	if WITH_SIZE = 0
		getdstring NAME NAMESZ MEM
	else
		getdstring NAME1 NAMESZ MEM
	endif
	if TMP != ""
		get PAD byte MEM
	endif
endfunction

startfunction QUICKBMS_4GB_CHECK
    math TMP64 = 0x10000000
    math TMP64 * 16
    if TMP64 == 0
        print "You must use quickbms_4gb_files.exe with this script!"
        cleanexit
    endif
endfunction

谢谢你大哥

请问导出来的.uexp文件怎么打开?FModel好像不行?我用鸣潮拆分工具也拆不出来

am64lin_action1.zip (411.4 KB)

自行用umodel处理,那个工具又不是万能的

导不出来,导出来还是原格式

*** Wrong package tag (56DE5ECA) in file af08fyz/af08fyz_action1/Textures/af08fyz_action1.uasset. Probably the file is encrypted.

白荆回廊的uexp看过,你用文本编辑器打开看一下,atlas和json放在一个uexp里,思路就是把这两玩意提取出来放两个文件就行。

不会写程序,你用记事本打开,把内容复制出来也行

我用上面那个脚本解出来了 角色动态是视频格式的 不是spine

应该是更改了游戏资产,少三2也变成webm

改一下格式就好了we改成png,也可以用格式工厂改