const { SourceDemoParser } = require('sdp.js'); const fs = require('fs'); const demo = SourceDemoParser.default() .setOptions({ messages: false }) .parse(fs.readFileSync('demo.dem')); console.log(demo); /* SourceDemo { demoFileStamp: 'HL2DEMO', demoProtocol: 3, networkProtocol: 15, serverName: 'localhost:0', clientName: 'Can\'t Even', mapName: 'testchmb_a_00', gameDirectory: 'portal', playbackTime: 3.944999933242798, playbackTicks: 263, playbackFrames: 253, signOnLength: 80641, messages: [] } */
const { SourceDemoParser, DemoMessages: { UserCmd }, } = require('sdp.js'); const fs = require('fs'); const IN_JUMP = 1 << 1; const demo = SourceDemoParser.default() .setOptions({ userCmds: true }) .parse(fs.readFileSync(file)); const registeredJumps = demo.findMessages(UserCmd) .filter(({ userCmd }) => userCmd.buttons && userCmd.buttons & IN_JUMP); console.log('registered jumps: ' + registeredJumps.length); /* registered jumps: 270 */