feat: add support for source 2

This commit is contained in:
2023-10-22 19:33:42 +02:00
parent 24e44a346d
commit 14ace4cd49
6 changed files with 106 additions and 59 deletions

View File

@@ -6,6 +6,8 @@ export default {
const stats = await utils.rconCommand(client, 'status');
let statusLine = null;
let res = null;
let tv = null;
let regexStatus = null;
if (stats) {
statusLine = stats.split(/\r?\n/);
} else {
@@ -17,32 +19,70 @@ export default {
statusLine.shift();
statusLine.shift();
statusLine.shift();
if (game === 'csgo') {
if (statusLine[0].search('gotv') !== -1) {
statusLine.shift();
}
res = statusLine[0].split(/players : (\d+) humans, (\d+) bots \((\d+)\/0 max\)/);
} else {
if (statusLine[0].search('sourcetv') !== -1) {
statusLine.shift();
}
res = statusLine[0].split(/players : (\d+) humans, (\d+) bots \((\d+) max\)/);
}
res.pop();
res.shift();
if (game === "csgo") {
tv = "gotv";
regexStatus = /players : (\d+) humans, (\d+) bots \((\d+)\/0 max\)/;
} else {
tv = "sourcetv";
regexStatus = /players : (\d+) humans, (\d+) bots \((\d+) max\)/;
}
if (statusLine[0].search(tv) !== -1) {
statusLine.shift();
}
res = statusLine[0].split(regexStatus);
res.pop();
res.shift();
return res;
},
setStatusMetrics(response) {
let players = 0;
let bots = 0;
let maxPlayers = 0;
if (response) {
[players, bots, maxPlayers] = response;
}
metrics.players.set((Number(players)));
metrics.bots.set((Number(bots)));
metrics.maxPlayers.set((Number(maxPlayers)));
},
async requestStatusCs2(client, game) {
let stats = await utils.rconCommand(client, 'status_json');
stats = JSON.parse(stats)
return stats;
},
setStatusMetrics(response) {
let players = 0;
let bots = 0;
let maxPlayers = 0;
if (response) {
[players, bots, maxPlayers] = response;
}
metrics.players.set((Number(players)));
metrics.bots.set((Number(bots)));
metrics.maxPlayers.set((Number(maxPlayers)));
},
setCs2StatusMetrics(response) {
let clients_human = 0;
let clients_bot = 0;
let cpu = 0;
let status = 0;
let uptime = 0;
let maps = '';
if (response) {
let { server } = response;
uptime = response.process_uptime
clients_human = server.clients_human;
clients_bot = server.clients_bot;
cpu = server.cpu_usage;
maps = server.maps;
status = 1;
}
metrics.players.set((Number(clients_human)));
metrics.bots.set((Number(clients_bot)));
//metrics.maxPlayers.set((Number(maxPlayers)));
metrics.status.set((Number(status)));
metrics.cpu.set((Number(cpu)));
//metrics.netin.set((Number(netin)));
//metrics.netout.set((Number(netout)));
metrics.uptime.set((Number(uptime)));
//metrics.maps.set((Number(maps)));
// metrics.fps.set((Number(fps)));
// metrics.svms.set((Number(svms)));
// metrics.varms.set((Number(varms)));
//metrics.svMaxUpdateRate.set((Number(maxUpdateRate)));
},
async requestStats(client, game) {
const stats = await utils.rconCommand(client, 'stats');
let statusLine = null;