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 |
|
yoogi |
» 2011-03-27 19:59:01 pierwszy raz się spotykam z takim formatem pliku, a co dopiero bibliotekę. |
|
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ć. |
|
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 |
|
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/pakhttp://www.fileinfo.com/extension/pakKtoś jeszcze napisał eksporter do formatu *.pak, nie wiem czy działa :) #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; }
|
|
« 1 » |