Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Biblioteka do obsługi plików *.pak

Ostatnio zmodyfikowano 2011-03-27 21:45
Autor Wiadomość
asembler
Temat założony przez niniejszego użytkownika
[C++] Biblioteka do obsługi plików *.pak
» 2011-03-27 19:58:01
Zna ktoś może bibliotekę do obsługi plików *.pak? Jeśli tak to poprosił bym o link do niej
P-29851
yoogi
» 2011-03-27 19:59:01
pierwszy raz się spotykam z takim formatem pliku, a co dopiero bibliotekę.
P-29852
pekfos
» 2011-03-27 20:20:46
jeżeli spotkałeś ten format przy zasobach programu to znaczy że nie jest to ustandaryzowany format. jak piszesz swoje programy to robisz swoje rozszerzenia do plików by zasoby uporządkować.
P-29853
asembler
Temat założony przez niniejszego użytkownika
» 2011-03-27 21:34:48
Niet towarzysze, te pliki są używane do pakowania w nich obiektów z gier
P-29857
SeaMonster131
» 2011-03-27 21:45:02
tutaj jest opis: http://en.wikipedia.org/wiki/PAK_(file_format)

A biblioteka hmm... Tutaj masz programy obsługujące format *.pak:
http://filext.com/file-extension/pak
http://www.fileinfo.com/extension/pak

Ktoś jeszcze napisał eksporter do formatu *.pak, nie wiem czy działa :)
C/C++
#include <iostream>
#include <string>

using namespace std;

string remove_path( string path );

int main( int argc, char * argv[] )
{
    if( argc > 1 ) {
        fpos_t position;
        int ktore = 1;
        char buffer;
        FILE * pFile = fopen( argv[ 1 ], "rb" );
        fseek( pFile, 8, SEEK_SET );
        int size_file;
        fread( & size_file, sizeof( size_file ), 1, pFile );
        fseek( pFile, 12, SEEK_CUR );
        while( !feof( pFile ) ) {
            if( ftell( pFile ) >= size_file ) {
                break;
            }
            fseek( pFile, 32, SEEK_CUR );
            ktore++;
        }
        printf( "W pliku jest %i skompresowanych plikow\n", --ktore );
        printf( "Rozpoczynam eksportacje\n" );
        fseek( pFile, 16, SEEK_SET );
        int ktore2 = 1;
        string path;
        int pos, size;
        char tab[ 24 ];
        while( !feof( pFile ) ) {
            path = "";
            fread( & pos, sizeof( pos ), 1, pFile );
            fread( & size, sizeof( size ), 1, pFile );
            fread( & tab, sizeof( tab ), 1, pFile );
            for( int i = 0; i < 24; i++ ) {
                if(( int ) tab[ i ] == 0 ) {
                    break;
                }
                path += tab[ i ];
            }
            path = remove_path( path );
            printf( "Eksportacja %i/%i | %s \n", ktore2++, ktore, path.c_str() );
            fgetpos( pFile, & position );
            FILE * pFile2 = fopen( path.c_str(), "wb" );
            if( pFile2 != NULL ) {
                fseek( pFile, pos, SEEK_SET );
                while( ftell( pFile ) <= pos + size ) {
                    fread( & buffer, sizeof( buffer ), 1, pFile );
                    fwrite( & buffer, 1, sizeof( buffer ), pFile2 );
                }
                fclose( pFile2 );
                fsetpos( pFile, & position );
            }
            if( ftell( pFile ) >= size_file ) {
                break;
            }
        }
        fclose( pFile );
    }
    system( "PAUSE" );
    return EXIT_SUCCESS;
}

string remove_path( string path ) {
    string buffor;
    int skad = 0;
    for( int i = path.length(); i >= 0; i-- ) {
        if(( int ) path[ i ] == 47 ||( int ) path[ i ] == 92 ) {
            skad = i + 1;
            break;
        }
    }
    for( int i = skad; i < path.length(); i++ ) {
        buffor += path[ i ];
    }
    return buffor;
}
P-29858
« 1 »
  Strona 1 z 1