mirror of
https://github.com/tribufu/node-gamedig
synced 2026-06-01 09:42:41 +00:00
* Properly handle non-indexed team names in gamespy1 Fixes #213
* Rename raw.steamappid and raw.gameid to raw.appId in steam protocol * Don't query valve rules by default, unless requestRules option is set Fixes #176
This commit is contained in:
parent
7f08381b17
commit
f70112d092
9 changed files with 143 additions and 122 deletions
51
lib/Results.js
Normal file
51
lib/Results.js
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
class Player {
|
||||
name = '';
|
||||
raw = {};
|
||||
|
||||
constructor(data) {
|
||||
if (typeof data === 'string') {
|
||||
this.name = data;
|
||||
} else {
|
||||
const {name, ...raw} = data;
|
||||
if (name) this.name = name;
|
||||
if (raw) this.raw = raw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Players extends Array {
|
||||
setNum(num) {
|
||||
// If the server specified some ridiculous number of players (billions), we don't want to
|
||||
// run out of ram allocating these objects.
|
||||
num = Math.min(num, 10000);
|
||||
|
||||
while(this.players.length < num) {
|
||||
this.push({});
|
||||
}
|
||||
}
|
||||
|
||||
push(data) {
|
||||
super.push(new Player(data));
|
||||
}
|
||||
}
|
||||
|
||||
class Results {
|
||||
name = '';
|
||||
map = '';
|
||||
password = false;
|
||||
|
||||
raw = {};
|
||||
|
||||
maxplayers = 0;
|
||||
players = new Players();
|
||||
bots = new Players();
|
||||
|
||||
set players(num) {
|
||||
this.players.setNum(num);
|
||||
}
|
||||
set bots(num) {
|
||||
this.bots.setNum(num);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Results;
|
||||
|
|
@ -115,12 +115,12 @@ class Reader {
|
|||
if(bytes === 1) r = this.buffer.readUInt8(this.i);
|
||||
else if(bytes === 2) r = this.buffer.readUInt16BE(this.i);
|
||||
else if(bytes === 4) r = this.buffer.readUInt32BE(this.i);
|
||||
else if(bytes === 8) r = readUInt64BE(this.buffer,this.i).toString();
|
||||
else if(bytes === 8) r = readUInt64BE(this.buffer,this.i);
|
||||
} else {
|
||||
if(bytes === 1) r = this.buffer.readUInt8(this.i);
|
||||
else if(bytes === 2) r = this.buffer.readUInt16LE(this.i);
|
||||
else if(bytes === 4) r = this.buffer.readUInt32LE(this.i);
|
||||
else if(bytes === 8) r = readUInt64LE(this.buffer,this.i).toString();
|
||||
else if(bytes === 8) r = readUInt64LE(this.buffer,this.i);
|
||||
}
|
||||
}
|
||||
this.i += bytes;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue