use a hex editor, open models.pck, open models.pcx, copy+paste models.pcx content to the end of models.pck, save, unpack with pwrepack
Printable View
use a hex editor, open models.pck, open models.pcx, copy+paste models.pcx content to the end of models.pck, save, unpack with pwrepack
Or in dos/windblowz 'command prompt' use the following command and structure :wink:
copy /b filename1.ext+filename2.ext newfilename.ext
int32 for dword ( ideia swoosh )
recompile spck ?
tbnanubis
uint32 for pck size
The idea was to read the pck size as a dword (unsigned int) and thus (theoretically) increase size limit of pck to 4 GB. I am not familiar with structure of pck at all, so anybody here know if there's anything else which would render this approach useless?
the client doesnt like it. You can do it for editing but once you are done you have to split the file after exactly 2 GB
anyone can step by step tell me what to do i am trying to Unpack it crashes. so i followed what was said above made both files 1 now how do i split it back to how they were?
Well i have this question for FW, in the .conf for worlds, there are various gs, all work? or they are like PW some don't work (example: temple of sand) i work in a panel (i try to look like the pwadmin) and i confuse because i don't know much about FW all instances are in main world but i don't have quest for dungeons.
bump for a answer please would appreciate step by step guide
Unzip that and copy models.pck & models.pkx to the folder and run the merge.bat file
oops read the post wrong oh well, if a mod wants to remove the post go ahead.
Actually, if I'm not mistaken (from the test I just conducted on v80) it cannot be split at exactly 2GB (the client will fail to start). That is, if you used "split -b 2g models.pck". You actually want the file split at 2147483392 or "split -b 2147483392 models.pck" :wink:
"Official" structure of .PCK file according to PWI sources:
EDIT:Code:typedef struct _PCK_HEAD {
DWORD dwHeadCheckHead;
DWORD dwPckSize;
DWORD dwHeadCheckTail;
}PCKHEAD, *LPPCKHEAD;
typedef struct _PCK_TAIL {
DWORD dwFileCount;
DWORD dwVersion;
}PCKTAIL, *LPPCKTAIL;
typedef struct _PCK_INDEX_ADDR {
DWORD dwIndexTableCheckHead;
DWORD dwVersion;
DWORD dwIndexValue;
char szAdditionalInfo[MAX_PATH_PCK];
DWORD dwIndexTableCheckTail;
//DWORD dwAddress;
}PCKINDEXADDR, *LPPCKINDEXADDR;
typedef struct _PCK_FILE_INDEX {
char szFilename[MAX_PATH_PCK];
DWORD dwUnknown1;
DWORD dwAddressOffset;
DWORD dwFileClearTextSize;
DWORD dwFileCipherTextSize;
DWORD dwUnknown2;
}PCKFILEINDEX, *LPPCKFILEINDEX;
typedef struct _PCK_INDEX_TABLE {
DWORD dwIndexValueHead;
DWORD dwIndexValueTail;
PCKFILEINDEX cFileIndex;
DWORD dwIndexDataLength;
BOOL bSelected;
}PCKINDEXTABLE, *LPPCKINDEXTABLE;
typedef struct _PCK_PATH_NODE {
char szName[MAX_PATH_PCK];
DWORD dwFilesCount;
DWORD dwDirsCount;
DWORD dwDirClearTextSize;
DWORD dwDirCipherTextSize;
LPPCKINDEXTABLE lpPckIndexTable;
_PCK_PATH_NODE *parentfirst;
_PCK_PATH_NODE *parent;
_PCK_PATH_NODE *child;
_PCK_PATH_NODE *next;
}PCK_PATH_NODE, *LPPCK_PATH_NODE;
typedef struct _FILES_TO_COMPRESS {
DWORD dwCompressedflag;
DWORD dwFileSize;
char *lpszFileTitle;
DWORD nBytesToCopy;
//char szBase64Name[MAX_PATH_PCK];
char szFilename[MAX_PATH];
_FILES_TO_COMPRESS *next;
_PCK_INDEX_TABLE *samePtr;
}FILES_TO_COMPRESS, *LPFILES_TO_COMPRESS;
typedef struct _PCK_INDEX_TABLE_COMPRESS {
DWORD dwIndexValueHead;
DWORD dwIndexValueTail;
BYTE buffer[INDEXTABLE_CLEARTEXT_LENGTH];
DWORD dwIndexDataLength;
DWORD dwCompressedFilesize;
DWORD dwMallocSize;
DWORD dwAddressOfDuplicateOldDataArea;
BOOL bInvalid;
}PCKINDEXTABLE_COMPRESS, *LPPCKINDEXTABLE_COMPRESS;
I think I'll have to put together a PCK extractor base on the official source code...
Time to get to work...