* 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:
Michael Morrison 2021-02-25 01:58:35 -06:00
parent 7f08381b17
commit f70112d092
9 changed files with 143 additions and 122 deletions

51
lib/Results.js Normal file
View 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;

View file

@ -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;