why r noone responding
|
Infact what you call uKeys are a file consisting of the CRC32's and revision ids of the File Information Tables in cache255, format
Header:
BYTE : Cache (needs to be 255)
SHORT : File (needs to be 255)
BYTE : Compression (needs to be 0 (uncompressed))
DWORD : Length ( the total length of the data block)
Data block:
DWORD : FIT CRC32
DWORD : FIT Revision (0 if FIT is format version 5)
So size of "uKeys" = (numCaches * 8) + 5
Gj Peter, but I guess Super_ was faster.
http://www.rune-server.org/showthread.php?t=104375
Create some tool, which opens the cache, and sort of generates the keys based on the cache.
When you use defyboys update server and his/super_'s grapper on localhost, you can get the update keys, but this method doesn't seem to work with caches from 2008 and later.
He has several errors in his, also he does not explain internal file format :
ubyte servicetype; //14 = game, 15 = update
ushort unused; //always 00,00 WROOOOOOONG
ushort clientver; //the client's revision WROOOOOOONG
SHOULD BE : uint clientver
Anyway the client sends the request:
ubyte requesttype; //this is 0 for getfile
ubyte cacheno; //255 for this
ushort fileno; //255 again
The server then responds with:
ubyte cacheno; //255 for this
ushort fileno; //255 again
after that trails the files data... since in new engine, all files are stored in 'containers', we can use the container header to figure out the size of the file. the header is:
ubyte compressiontype; //0 = none, 1 = gzip, 2 = 'jag' WROOONG
jag == headerless BZIP
utribyte compressedsize;
[ utribyte decompressedsize; OPTIONAL only if compressiontype != 0 ]
reference tables arent compressed, so the data can be thought of as:
ubyte compressiontype; //this is 0
utribyte filesize; //file size
You totally confuzzled me explain it to me on EMESEN LATER
the header just as the name tells the client what the data block applies to, in this the the cache idx255Header:
BYTE : Cache (needs to be 255)
SHORT : File (needs to be 255)
BYTE : Compression (needs to be 0 (uncompressed))
DWORD : Length ( the total length of the data block)
Data block:
DWORD : FIT CRC32
DWORD : FIT Revision (0 if FIT is format version 5)
just as gzip has a header that tells the decompressors that it is a gzipped file, the header is the identity
« Previous Thread | Next Thread » |
Thread Information |
Users Browsing this ThreadThere are currently 1 users browsing this thread. (0 members and 1 guests) |