90 lines
2 KiB
JavaScript
90 lines
2 KiB
JavaScript
const Steam = require("steam-server-query")
|
|
const colors = require("colors");
|
|
const fs = require('fs');
|
|
|
|
var removeDuplicates = function (nums) {
|
|
let length = nums.length;
|
|
for (let i = length - 1; i >= 0; i--) {
|
|
for (let j = i - 1; j >= 0; j--) {
|
|
if (nums[i] == nums[j]) {
|
|
nums.splice(j, 1);
|
|
}
|
|
}
|
|
}
|
|
return nums;
|
|
};
|
|
servers = [];
|
|
|
|
// Keyword split to version, dlcs, tps
|
|
function splitKeyword(keyword) {
|
|
data = keyword.split("-")
|
|
switch (data[1]) {
|
|
case "0":
|
|
dlcString = "None"
|
|
break;
|
|
case "1":
|
|
dlcString = "Weapons"
|
|
break;
|
|
case "2":
|
|
dlcString = "Arid"
|
|
break;
|
|
case "3":
|
|
dlcString = "Both"
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return {"version": data[0], dlcString, dlc: data[1] ,"tps": data[2]}
|
|
};
|
|
|
|
const latestVer ="v1.6.7"
|
|
|
|
// Check version and set console log color if outdated
|
|
function checkVersion(version) {
|
|
if (version == latestVer) {
|
|
return colors.green(version)
|
|
} else {
|
|
return colors.red(version)
|
|
}
|
|
};
|
|
|
|
// Color Server TPS
|
|
function colorTPS(tps) {
|
|
if (tps < 45) {
|
|
return colors.red(tps)
|
|
} else if (tps > 40 && tps < 60) {
|
|
return colors.yellow(tps)
|
|
} else if (tps > 65) {
|
|
return colors.magenta(tps)
|
|
} else {
|
|
return colors.green(tps)
|
|
}
|
|
};
|
|
|
|
Steam.queryMasterServer('hl2master.steampowered.com:27011', Steam.REGIONS.ALL, {
|
|
appid: 573090,
|
|
game: "Stormworks",
|
|
}, 1000, 400).then(servers => {
|
|
servers = removeDuplicates(servers);
|
|
for (let i = 0; i < servers.length; i++) {
|
|
Steam.queryGameServerInfo(servers[i]).then(data => {
|
|
if(!data.name.includes("SetSail")) return;
|
|
// console.log(data); //Debug
|
|
|
|
data.keywords.split("-")
|
|
console.log(`${data.name} @ ${servers[i]} - DLC: ${splitKeyword(data.keywords).dlcString} - TPS: ${colorTPS(splitKeyword(data.keywords).tps)} - Version: ${checkVersion(splitKeyword(data.keywords).version)}`)
|
|
servers.push(data);
|
|
}).catch(err => {
|
|
console.log(`Couldn't connect to ${servers[i]}`);
|
|
});
|
|
}
|
|
//sortServers();
|
|
}).catch((err) => {});
|
|
|
|
function sortServers() {
|
|
servers.forEach(server => {
|
|
Steam.queryGameServerInfo
|
|
});
|
|
}
|
|
|