diff --git a/actions/game_server_MOD.js b/actions/game_server_MOD.js
index e90d4345e..c564f82c5 100644
--- a/actions/game_server_MOD.js
+++ b/actions/game_server_MOD.js
@@ -24,32 +24,27 @@ module.exports = {
},
variableStorage(data, varType) {
- if (parseInt(data.storage, 10) !== varType) return;
- let dataType = 'Unknown Type';
- switch (parseInt(data.info, 10)) {
- case 0:
- dataType = 'Server Name';
- break;
- case 1:
- dataType = 'Map';
- break;
- case 2:
- dataType = 'Number';
- break;
- case 3:
- dataType = 'Number';
- break;
- case 4:
- dataType = 'Server Tags';
- break;
- case 5:
- dataType = 'Boolean';
- break;
+ const type = parseInt(data.storage, 10);
+ if (type === varType) {
+ let dataType = 'Unknown Type';
+ switch (parseInt(data.info, 10)) {
+ case 0: dataType = 'Server Name'; break;
+ case 1: dataType = 'Map'; break;
+ case 2:
+ case 3:
+ case 4: dataType = 'Number'; break;
+ case 5: dataType = 'Server Tags'; break;
+ case 6: dataType = 'Boolean'; break;
+ case 7: dataType = 'Server Player List'; break;
+ }
+ return [data.varName, dataType];
+ }
+ if (parseInt(data.failureVarStorage, 10) === varType) {
+ return [data.failureVarName, 'Boolean'];
}
- return [data.varName, dataType];
},
- fields: ['serverip', 'serverport', 'game', 'info', 'storage', 'varName'],
+ fields: ['serverip', 'serverport', 'game', 'info', 'storage', 'varName', 'failureVarStorage', 'failureVarName'],
html() {
return `
@@ -359,6 +354,11 @@ module.exports = {
+
+
+
+
+
@@ -413,56 +413,53 @@ module.exports = {
const ip = this.evalMessage(data.serverip, cache);
const port = this.evalMessage(data.serverport, cache);
+ const failureStorage = parseInt(data.failureVarStorage, 10);
+ const failureVarName = this.evalMessage(data.failureVarName, cache);
+
const { GameDig } = require('gamedig');
- if (!ip) return console.log('Please provide Server IP & Port.');
- GameDig.query({
- type: gametype,
- host: ip,
- port,
- maxAttempts: 3,
- attemptTimeout: 25000,
- })
- .then((state) => {
- let result;
- switch (info) {
- case 0:
- result = state.name;
- break;
- case 1:
- result = state.map;
- break;
- case 2:
- result = state.raw.numplayers || state.players.length;
- break;
- case 3:
- result = state.raw.numbots;
- break;
- case 4:
- result = state.maxplayers;
- break;
- case 5:
- result = state.raw.tags;
- break;
- case 6:
- result = state.password;
- break;
- case 7:
- result = state.players.map((a) => a.name);
- break;
- default:
- break;
- }
+ if (!ip) {
+ console.log('Please provide Server IP & Port.');
+ if (failureVarName) Actions.storeValue(true, failureStorage, failureVarName, cache);
+ return Actions.callNextAction(cache);
+ }
- if (result !== undefined) {
- const storage = parseInt(data.storage, 10);
- const varName2 = Actions.evalMessage(data.varName, cache);
- Actions.storeValue(result, storage, varName2, cache);
- }
- Actions.callNextAction(cache);
- })
- .catch((error) => console.log(`Game Server Info: ${error}`));
+ try {
+ const state = await GameDig.query({
+ type: gametype,
+ host: ip,
+ port,
+ maxAttempts: 3,
+ attemptTimeout: 25000,
+ });
+
+ let result;
+ switch (info) {
+ case 0: result = state.name; break;
+ case 1: result = state.map; break;
+ case 2: result = state.raw.numplayers || state.players.length; break;
+ case 3: result = state.raw.numbots; break;
+ case 4: result = state.maxplayers; break;
+ case 5: result = state.raw.tags; break;
+ case 6: result = state.password; break;
+ case 7: result = state.players.map((a) => a.name); break;
+ }
+
+ if (result !== undefined) {
+ const storage = parseInt(data.storage, 10);
+ const varName2 = Actions.evalMessage(data.varName, cache);
+ Actions.storeValue(result, storage, varName2, cache);
+ }
+
+ if (failureVarName) Actions.storeValue(false, failureStorage, failureVarName, cache);
+ Actions.callNextAction(cache);
+ } catch (error) {
+ console.log(`Game Server Info: ${error}`);
+ if (failureVarName) Actions.storeValue(true, failureStorage, failureVarName, cache);
+ Actions.callNextAction(cache);
+ }
},
+
mod() {},
};