3 New Notifications

New Badge Earned
Get 1K upvotes on your post
Life choices of my cat
Earned 210

Drag Images here or Browse from your computer.

Trending Posts
Sorted by Newest First
A
A_V_S 11.05.22 11:09 pm

Unpacking the game archives (James Cameron's Avatar: The Game)

I don't know if this post is appropriate or if I should have gone to other forums... But still, people, is there any way to unpack the .PAK archives of the game?
All archivers that I found were for other games (Crysis, Aion, Total War) and are unlikely to be suitable for James Cameron's Avatar: The Game. But I really need to get the models out of there, for further animation in 3D Max.
You may have to write a game unpacker on your own (and maybe even a plug-in for 3D Max itself), but unfortunately I'm not a programmer. Is there anyone here who can help?
http://img13.imageshost.ru/img/2012/10/03/image_506c90a173312.png
3 Comments
Sort by:
F
Figli1 11.05.22

The game was released 4 years ago, so far no one has picked it open. In the wilds of the Internet, I only found a resource unpacker. Actually, not an unpacker, but a script for quickbms.exe I don’t remember the link to the source, here is its text:
# Avatar: The Game (UNFINISHED, DO NOT USE!)
# script for QuickBMS http://aluigi.org/papers.htm# quickbms

set MAX_CHUNKSZ long 0x10000

idstring "PAK!"
get DUMMY long
get OFFSET long
get ZSIZE asize
math ZSIZE -= OFFSET
log MEMORY_FILE OFFSET ZSIZE

math TMP = ZSIZE
math TMP += MAX_CHUNKSZ
putvarchr MEMORY_FILE TMP 0

get OFFSET long MEMORY_FILE
goto OFFSET MEMORY_FILE
get CHUNKS long MEMORY_FILE
math CHUNKS -= 1
append
for i = 0 < CHUNKS
get OFFSET1 long MEMORY_FILE
get OFFSET2 long MEMORY_FILE
if OFFSET2 & 0x80000000
set ZIP long 1
else
set ZIP long 0
endif
math OFFSET1 &= 0x7fffffff
math OFFSET2 &= 0x7fffffff

math ZSIZE = MAX_CHUNKSZ

goto OFFSET2
MEMORY_FILE2
if ZIP == 0
log MEMORY_FILE2 OFFSET2 MAX_CHUNKSZ MEMORY_FILE
else
clog MEMORY_FILE2 OFFSET2 ZSIZE MAX_CHUNKSZ MEMORY_FILE
endif
next i
append
goto 0 MEMORY_FILE2

comtype lzo1x
get DUMMY byte MEMORY_FILE2
get FILES long MEMORY_FILE2
savepos INFO_OFF MEMORY_FILE2
for extract = 0 < 2
for i = 0 < FILES
get OFFSET long MEMORY_FILE2
get SIZE long MEMORY_FILE2 # full filesize
get DUMMY long MEMORY_FILE2
math CHUNKS = SIZE
math CHUNKS /= MAX_CHUNKSZ
math TMP = SIZE
math TMP %= MAX_CHUNKSZ
if TMP != 0
math CHUNKS += 1
endif

if extract == 0
for j = 0 < CHUNKS
get ZCHUNKSZ short MEMORY_FILE2
get CHUNKSZ short MEMORY_FILE2
next j
else
savepos TMP MEMORY_FILE2
goto NAME_OFF MEMORY_FILE2
get DUMMY longlong MEMORY_FILE2
get NAMESZ byte MEMORY_FILE2
getdZring MEMO NAMES2
savepos NAME_OFF MEMORY_FILE2
goto TMP MEMORY_FILE2

callfunction unpack
endif
next i
if extract == 0
savepos NAME_OFF MEMORY_FILE2
endif
goto INFO_OFF MEMORY_FILE2
next extract

startfunction unpack
putvarchr MEMORY_FILE SIZE 0
log MEMORY_FILE 0 0
append
for j = 0 < CHUNKSZ
get
ZCHUNKSZ short MEMORY_FILE2
if CHUNKSZ == 0
set CHUNKSZ long MAX_CHUNKSZ
endif
if ZCHUNKSZ == 0
if CHUNKSZ == 0xffff
log MEMORY_FILE OFFSET MAX_CHUNKSZ
math OFFSET += MAX_CHUNKSZ
else
log MEMORY_FILE OFFSET CHUNKSZ
math OFFSET += CHUNKSZ endif
else
if
CHUNKSZ == 0xffff
get TMP asize MEMORY_FILE
log MEMORY_FILE OFFSET ZCHUNKSZ
math TMP += CHUNKSZ putvarchr
MEMORY_FILE TMP 0
else
clog MEMORY_FILE OFF ZCHUNKSZ CHUNKSZ # problem here =
endif
math OFF j append log NAME 0 SIZE MEMORY_FILE endfunction And one more option, but it doesn't work for me: # Avatar: The Game (0.1a not 100% supported) # script for QuickBMS http://aluigi.org/papers.htm#quickbmsset MAX_CHUNKSZ long 0x10000idstring "PAK!" get DUMMY long











get OFFSET long
get ZSIZE asize
math ZSIZE -= OFFSET
log MEMORY_FILE OFFSET ZSIZEmath TMP = ZSIZE
math TMP += MAX_CHUNKSZ
putvarchr MEMORY_FILE TMP 0

get OFFSET long MEMORY_FILE
goto OFFSET MEMORY_FILE
get CHUNKS long MEMORY_FILE
math CHUNKS -= 1
append CH
for i = 0 <
get OFFSET1 long MEMORY_FILE
get OFFSET2 long MEMORY_FILE
if OFFSET2 & 0x80000000
set ZIP long 1
else
set ZIP long 0
endif
math OFFSET1 &= 0x7fffffff
math OFFSET2 &= 0x7fffffff

math ZSIZE = MAX_CHUNKSZ

goto OFFSET1 MEMORY_FILE2
#goto OFFFILE 2
if ZIP == 0
log MEMORY_FILE2 OFFSET2 MAX_CHUNKSZ MEMORY_FILE
else
clog MEMORY_FILE2 OFFSET2 ZSIZE MAX_CHUNKSZ MEMORY_FILE
endif
next i
append
goto 0 MEMORY_FILE2

comtype lzo1x
get DUMMY byte MEMORY_FILE2
get FILES long MEMORY_FILE2
savepos INFO_OFF MEMORY_FILE2
for extract = 0 < 2
for i = 0 < FILES
get OFFSET long MEMORY_FILE2
get SIZE long MEMORY_FILE2 # full filesize
get DUMMY long MEMORY_FILE2
math CHUNKS = SIZE
math CHUNKS /= MAX_CHUNKSZ
math TMP = SIZE
math TMP %= MAX_CHUNKSZ
if TMP != 0
math CHUNKS += 1
endif

if extract == 0
for j = 0 < CHUNKS
get ZCHUNKSZ short MEMORY_FILE2
get CHUNKSZ short MEMORY_FILE2
next j
else
savepos TMP MEMORY_FILE2
goto NAME_OFF MEMORY_FILE2
get DUMMY longlong MEMORY_FILE2
get NAMESZ byte MEMORY_FILE2
getdstring NAME NAMESZ MEMORY_FILE2
savepos NAME_OFF MEMORY_FILE2
goto TMP MEMORY_FILE2

callfunction unpack
endif
next i
if extract == 0
savepos NAME_OFF MEMORY_FILE2
endif
goto INFO_OFF MEMORY_FILE2
next extract

startfunction unpack
putvarchr MEMORY_FILE SIZE 0
log MEMORY_FILE 0 0
append
for j = 0 < CHUNKS
get ZCHUNKSZ short MEMORY_FILE2
get CHUNKSZ short MEMORY_FILE2
if CHUNKSZ == 0
set CHUNKSZ long MAX_CHUNKSZ
endif
#if ZCHUNKSZ == 0
# log MEMORY_FILE OFFSET CHUNKSZ
# math OFFSET += CHUNKSZ
#else
if ZCHUNKSZ == 0
if CHUNKSZ == 0xffff
log MEMORY_FILE OFFSET MAX_CHUNKSZ
math OFFSET += MAX_CHUNKSZ
else
log MEMORY_FILE OFFSET CHUNKSZ
math OFFSET += CHUNKSZ
endif
else
if CHUNKSZ == 0xffff
get TMP asize MEMORY_FILE
log MEMORY_FILE OFFSET ZCHUNKSZ
math TMP += CHUNKSZRY putvarchr
MEMO

clog MEMORY_FILE OFFSET ZCHUNKSZ CHUNKSZ # problem here
endif
math OFFSET += ZCHUNKSZ
endif
next j
append
log NAME 0 SIZE MEMORY_FILE
endfunction

In the first line of the first script, note # Avatar: The Game (UNFINISHED, DO NOT USE!) - not ready not to use. Perhaps somewhere incorrectly unpacks.
data.pak unpacked completely. You can still figure out the textures, they are in the DDS format, although there are extra 32 bytes in the head. But the problem is with avatars and models. I'm writing a MaxScript, figured out the skeleton, the tops of the faces, but I still don't understand how the mesh is written.
Plugins and scripts for this format *.xbg did not see.

u
ulvi rzayev 11.05.22

pomoqoite pojalusta ob iqre Avatar moy ID FB4456B0F6EE5ACFB8B2F06C0E1F4B6A

S
Sukachew 11.05.22

Figli1
how to unpack the date??? I need textures from there. and then nothing comes out