Results 1 to 4 of 4
  1. #1
    h4x0r
    h4x0r is offline
    h4x0r's Avatar
    Join Date
    2011 Aug
    Location
    ..\root\home\pgc
    Posts
    826
    Thanks Thanks Given 
    64
    Thanks Thanks Received 
    525
    Thanked in
    205 Posts
    Rep Power
    15

    JX3 Online PAK Unpack Script

    Script by aluigi
    Game: JX3 Online

    For unpack you need QuickBMS Tool.

    PHP Code:
    comtype NRV2b
    idstring PACK
    get FILES long
    get INFO_OFF long
    get BASE_OFF long
    goto INFO_OFF
    for FILES
        get CRC long
        get OFFSET long
        get SIZE long
        get ZSIZE long

        set doit long 0
        
    if CRC == -360607879    # some files are invalid!
        #elif CRC == 12345678   # put their crc/name here
        
    else                    # for skipping them!
            
    set doit long 1
        
    endif

        if 
    doit != 0
            
    if ZSIZE 0x10000000
                math ZSIZE 
    &= 0x0fffffff
                callfunction unpack_0x10000000
            elif ZSIZE 
    0x20000000
                math ZSIZE 
    &= 0x0fffffff
                clog CRC OFFSET ZSIZE SIZE
            elif ZSIZE 
    0x40000000
                
    print "Error: type 0x40000000 not supported"
                
    cleanexit
            elif ZSIZE 
    0x80000000
                
    print "Error: type 0x80000000 not supported"
                
    cleanexit
            
    else
                
    log CRC OFFSET SIZE
            
    endif
        endif
    next i

    startfunction unpack_0x10000000
        savepos TMP
        
    goto OFFSET
        get CHUNKS long
        get CHUNKS_OFFSET long
        math CHUNKS_OFFSET 
    += OFFSET
        
    goto CHUNKS_OFFSET
        putvarchr MEMORY_FILE SIZE 0    
    # pre-allocate for speed
        
    log MEMORY_FILE 0 0             # reset
        
    append
        
    for CHUNKS
            get OFFSETX long
            get SIZEX long
            get ZSIZEX long
            math OFFSETX 
    += OFFSET
            
    if ZSIZEX 0x10000000
                
    print "Error: type2 0x10000000 not supported"
                
    cleanexit
            elif ZSIZEX 
    0x20000000
                math ZSIZEX 
    &= 0x0fffffff
                clog MEMORY_FILE OFFSETX ZSIZEX SIZEX
            elif ZSIZEX 
    0x40000000
                
    print "Error: type2 0x40000000 not supported"
                
    cleanexit
            elif ZSIZEX 
    0x80000000
                
    print "Error: type2 0x80000000 not supported"
                
    cleanexit
            
    else
                
    log MEMORY_FILE OFFSETX SIZEX
            
    endif
        
    next x
        append
        log CRC 0 SIZE MEMORY_FILE
        
    goto TMP
    endfunction 
    HOW TO Use:

    1. Run QuickBMS
    2. Select script
    3. Select file for unpack
    4. Select dir to unpack
    5. Enjoy

  2. #2
    Beyastard
    Beyastard is offline
    Guest
    Join Date
    2012 Jul
    Posts
    1
    Thanks Thanks Given 
    0
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0
    I know this post is over a year old but, is there a way to retain original file names during extraction?

  3. #3
    troll1981
    troll1981 is offline
    Guest
    Join Date
    2014 Apr
    Posts
    2
    Thanks Thanks Given 
    1
    Thanks Thanks Received 
    0
    Thanked in
    0 Posts
    Rep Power
    0

    Script error

    Can anybody update Script for new JX3 client

    error:

    Please register or login to download attachments.


  4. #4
    P.o.X
    P.o.X is offline
    Member-in-training P.o.X's Avatar
    Join Date
    2012 May
    Posts
    64
    Thanks Thanks Given 
    11
    Thanks Thanks Received 
    11
    Thanked in
    7 Posts
    Rep Power
    0

    Exclamation Script updated by Aluigi

    Code:
    # JX3 Online new (script 0.1.2)
    #   This script is completely heuristic because there is a sort of padding (0xce byte) between the files
    #   If you use quickbms.exe the tool will use a particular way to guess if the current position is
    #   correct, while if you use quickbms_4gb_files it will use another one... yes it's a total work-around.
    # script for QuickBMS http://quickbms.aluigi.org
    
    comtype lzo1x
    get FULLSIZE asize
    
    get NAME basename
    strlen i NAME
    for i -= 1 >= 0
        getvarchr TMP NAME i
        if TMP < '0' || TMP > '9'
            break
        endif
    next i -= 1
    math i += 1
    string NAME <<= i
    math BASE_GUESS = NAME  # not used at the moment
    
    math TMP = 0x10000000
    math TMP *= 16
    math QUICKBMS64 = 0
    if TMP != 0
        math QUICKBMS64 = 1
    endif
    
    math BASE_OFF = 0
    math FILE_NUM = 0
    math CHECK_SIZE = FULLSIZE
    math CHECK_SIZE -= 40
    for OFFSET = 0 u< CHECK_SIZE
        # you will receive an error, ignore it
        goto OFFSET
        do
            get TMP byte
        while TMP == 0xce
        goto -1 0 SEEK_CUR
        savepos MYENTRY_OFF
    
        # offset guessed, this is a work-around used in both quickbms64 and 32
        for
            getdstring DUMMY 0xc
            getdstring SIZE 5
            get SIZE2 threebyte
            getdstring ENTRY_OFF 5
            get ENTRY_OFF2 threebyte    # 40 bits grants over 1500 package.dat
            if SIZE2 == 0 && ENTRY_OFF2 == 0
                break
            endif
            math MYENTRY_OFF -= 1
            goto MYENTRY_OFF
        next
        goto MYENTRY_OFF
        
        # offset guessed, this is a work-around
        for
            getdstring DUMMY 0xc
            get SIZE longlong
            get ENTRY_OFF longlong
            math ENTRY_OFF -= BASE_OFF
            if ENTRY_OFF == 0
                break
            elif ENTRY_OFF == MYENTRY_OFF
                break
            elif ENTRY_OFF u>= FULLSIZE # multi packages
                break
            endif
            math MYENTRY_OFF -= 1
            goto MYENTRY_OFF
        next
        if ENTRY_OFF u>= FULLSIZE
            if FILE_NUM == 0
                if QUICKBMS64 != 0
                    math BASE_OFF = ENTRY_OFF
                endif
            endif
        endif
        
        get ZSIZE longlong
        get ZIP long
        getdstring DUMMY 0x10
        savepos OFFSET
        if ZIP == 0
            log "" OFFSET SIZE
        elif ZIP == 1
            clog "" OFFSET ZSIZE SIZE
        else
            # unknown
            log "" OFFSET ZSIZE
        endif
        math OFFSET += ZSIZE
        math FILE_NUM += 1
    next

  5. The Following User Says Thank You to P.o.X For This Useful Post:


Similar Threads

  1. [Info] Seven Souls Online CFS Unpack Script
    By h4x0r in forum Game Files
    Replies: 7
    Last Post: 2014-08-21, 08:28 PM
  2. [Info] CW Online Unpack Script
    By h4x0r in forum Game Files
    Replies: 0
    Last Post: 2012-02-16, 08:24 PM
  3. [Info] TZ Online EVP Unpack Script
    By h4x0r in forum Game Files
    Replies: 1
    Last Post: 2012-02-09, 05:13 AM
  4. [Info] DK Online XAC Unpack Script
    By h4x0r in forum Game Files
    Replies: 0
    Last Post: 2012-02-08, 09:31 PM
  5. [Info] Corum Online PCK Unpack Script
    By h4x0r in forum Game Files
    Replies: 0
    Last Post: 2012-02-07, 06:15 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •