Jump to content
McKay Development

skr1pt

Member
  • Posts

    8
  • Joined

  • Last visited

Reputation Activity

  1. Like
    skr1pt got a reaction from Booms in unable to read price_sheet from CMsgStoreGetUserData   
    const { LZMA } = require('lzma-native'); function decompressValveLZMA(buffer) {   if (buffer.length < 13) {     throw new Error("Buffer too short to be Valve LZMA");   }   const magic = buffer.readUInt32BE(0); // Big-Endian   if (magic !== 0x4C5A4D41) { // 'LZMA'     throw new Error("Not a Valve LZMA container (magic mismatch)");   }   const uncompressedLength = buffer.readUInt32LE(4);   const compressedLength   = buffer.readUInt32LE(8);   const expectedTotal = 12 + 5 + compressedLength; // header (12) + props(5) + data   if (buffer.length < expectedTotal) {     throw new Error(`Buffer too short: expected ${expectedTotal}, have ${buffer.length}`);   }   const props = buffer.slice(12, 12 + 5);   const lzmaData = buffer.slice(12 + 5, 12 + 5 + compressedLength);   return new Promise((resolve, reject) => {     const lzma = new LZMA();     const lzmaHeader = Buffer.alloc(5 + 8);     props.copy(lzmaHeader, 0); // копируем 5 байт props     lzmaHeader.writeUInt32LE(uncompressedLength, 5);     const fullLzmaStream = Buffer.concat([lzmaHeader, lzmaData]);     lzma.decompress(fullLzmaStream, (result, error) => {       if (error) {         reject(error);       } else {         resolve(Buffer.from(result));       }     });   }); }  
×
×
  • Create New...