1
0
mirror of https://github.com/RaidMax/IW4M-Admin.git synced 2025-06-08 22:28:15 -05:00

tweak game interface plugin for consistency

This commit is contained in:
RaidMax 2024-06-30 11:52:31 -05:00
parent a24aaf10d4
commit 5a33567c73

View File

@ -94,7 +94,7 @@ const plugin = {
onServerValueSetCompleted: async function (serverValueEvent) { onServerValueSetCompleted: async function (serverValueEvent) {
this.logger.logDebug('Set {dvarName}={dvarValue} success={success} from {server}', serverValueEvent.valueName, this.logger.logDebug('Set {dvarName}={dvarValue} success={success} from {server}', serverValueEvent.valueName,
serverValueEvent.value, serverValueEvent.success, serverValueEvent.server.id); serverValueEvent.value, serverValueEvent.success, serverValueEvent.server.id);
if (serverValueEvent.valueName !== inDvar && serverValueEvent.valueName !== outDvar) { if (serverValueEvent.valueName !== inDvar && serverValueEvent.valueName !== outDvar) {
this.logger.logDebug('Ignoring set complete of {name}', serverValueEvent.valueName); this.logger.logDebug('Ignoring set complete of {name}', serverValueEvent.valueName);
return; return;
@ -124,7 +124,7 @@ const plugin = {
// loop restarts // loop restarts
this.requestGetDvar(inDvar, serverValueEvent.server); this.requestGetDvar(inDvar, serverValueEvent.server);
}, },
onServerMonitoringStart: function (monitorStartEvent) { onServerMonitoringStart: function (monitorStartEvent) {
this.initializeServer(monitorStartEvent.server); this.initializeServer(monitorStartEvent.server);
}, },
@ -162,7 +162,7 @@ const plugin = {
serverState.enabled = true; serverState.enabled = true;
serverState.running = true; serverState.running = true;
serverState.initializationInProgress = false; serverState.initializationInProgress = false;
// todo: this might not work for all games // todo: this might not work for all games
responseEvent.server.rconParser.configuration.floodProtectInterval = 150; responseEvent.server.rconParser.configuration.floodProtectInterval = 150;
@ -233,7 +233,7 @@ const plugin = {
// todo: refactor to mapping if possible // todo: refactor to mapping if possible
if (event.eventType === 'ClientDataRequested') { if (event.eventType === 'ClientDataRequested') {
const client = server.getClientByNumber(event.clientNumber); const client = server.connectedClients[event.clientNumber];
if (client != null) { if (client != null) {
this.logger.logDebug('Found client {name}', client.name); this.logger.logDebug('Found client {name}', client.name);
@ -269,8 +269,9 @@ const plugin = {
} }
} }
let _;
if (event.eventType === 'SetClientDataRequested') { if (event.eventType === 'SetClientDataRequested') {
let client = server.getClientByNumber(event.clientNumber); let client = server.connectedClients[event.clientNumber];
let clientId; let clientId;
if (client != null) { if (client != null) {
@ -298,12 +299,12 @@ const plugin = {
const parsedValue = parseInt(event.data['value']); const parsedValue = parseInt(event.data['value']);
const key = event.data['key'].toString(); const key = event.data['key'].toString();
if (!isNaN(parsedValue)) { if (!isNaN(parsedValue)) {
event.data['direction'] == 'increment' ? _ = event.data['direction'] === 'increment' ?
(await metaService.incrementPersistentMeta(key, parsedValue, clientId, token)).result : (await metaService.incrementPersistentMeta(key, parsedValue, clientId, token)).result :
(await metaService.decrementPersistentMeta(key, parsedValue, clientId, token)).result; (await metaService.decrementPersistentMeta(key, parsedValue, clientId, token)).result;
} }
} else { } else {
const _ = (await metaService.setPersistentMeta(event.data['key'], event.data['value'], clientId, token)).result; _ = (await metaService.setPersistentMeta(event.data['key'], event.data['value'], clientId, token)).result;
} }
if (event.data['key'] === 'PersistentClientGuid') { if (event.data['key'] === 'PersistentClientGuid') {
@ -342,34 +343,34 @@ const plugin = {
if (typeof response !== 'string' && !(response instanceof String)) { if (typeof response !== 'string' && !(response instanceof String)) {
response = JSON.stringify(response); response = JSON.stringify(response);
} }
const max = 10; const max = 10;
this.logger.logDebug(`response length ${response.length}`); this.logger.logDebug(`response length ${response.length}`);
let quoteReplace = '\\"'; let quoteReplace = '\\"';
// todo: may be more than just T6 // todo: may be more than just T6
if (server.gameCode === 'T6') { if (server.gameCode === 'T6') {
quoteReplace = '\\\\"'; quoteReplace = '\\\\"';
} }
let chunks = chunkString(response.replace(/"/gm, quoteReplace).replace(/[\n|\t]/gm, ''), 800); let chunks = chunkString(response.replace(/"/gm, quoteReplace).replace(/[\n|\t]/gm, ''), 800);
if (chunks.length > max) { if (chunks.length > max) {
this.logger.logWarning(`Response chunks greater than max (${max}). Data truncated!`); this.logger.logWarning(`Response chunks greater than max (${max}). Data truncated!`);
chunks = chunks.slice(0, max); chunks = chunks.slice(0, max);
} }
this.logger.logDebug(`chunk size ${chunks.length}`); this.logger.logDebug(`chunk size ${chunks.length}`);
for (let i = 0; i < chunks.length; i++) { for (let i = 0; i < chunks.length; i++) {
this.sendEventMessage(server, false, 'UrlRequestCompleted', null, null, this.sendEventMessage(server, false, 'UrlRequestCompleted', null, null,
null, { entity: event.data.entity, remaining: chunks.length - (i + 1), response: chunks[i]}); null, {entity: event.data.entity, remaining: chunks.length - (i + 1), response: chunks[i]});
} }
}); });
} }
if (event.eventType === 'RegisterCommandRequested') { if (event.eventType === 'RegisterCommandRequested') {
this.registerDynamicCommand(event); this.registerDynamicCommand(event);
} }
if (event.eventType === 'GetBusModeRequested') { if (event.eventType === 'GetBusModeRequested') {
if (event.data?.directory && event.data?.mode) { if (event.data?.directory && event.data?.mode) {
busMode = event.data.mode; busMode = event.data.mode;
@ -433,10 +434,10 @@ const plugin = {
}); });
} }
}); });
return; return;
} }
const serverEvents = importNamespace('SharedLibraryCore.Events.Server'); const serverEvents = importNamespace('SharedLibraryCore.Events.Server');
const requestEvent = new serverEvents.ServerValueRequestEvent(dvarName, server); const requestEvent = new serverEvents.ServerValueRequestEvent(dvarName, server);
requestEvent.delayMs = this.config.pollingRate; requestEvent.delayMs = this.config.pollingRate;
@ -467,8 +468,8 @@ const plugin = {
requestSetDvar: function (dvarName, dvarValue, server) { requestSetDvar: function (dvarName, dvarValue, server) {
const serverState = servers[server.id]; const serverState = servers[server.id];
if ( busMode === 'file' ) { if (busMode === 'file') {
this.scriptHelper.requestNotifyAfterDelay(250, async () => { this.scriptHelper.requestNotifyAfterDelay(250, async () => {
const io = importNamespace('System.IO'); const io = importNamespace('System.IO');
try { try {
@ -493,7 +494,7 @@ const plugin = {
}); });
} }
}) })
return; return;
} }
@ -526,7 +527,7 @@ const plugin = {
} }
}, },
parseUrlRequest: function(event) { parseUrlRequest: function (event) {
const url = event.data?.url; const url = event.data?.url;
if (url === undefined) { if (url === undefined) {
@ -556,8 +557,8 @@ const plugin = {
const script = importNamespace('IW4MAdmin.Application.Plugin.Script'); const script = importNamespace('IW4MAdmin.Application.Plugin.Script');
return new script.ScriptPluginWebRequest(url, body, method, contentType, headerDict); return new script.ScriptPluginWebRequest(url, body, method, contentType, headerDict);
}, },
registerDynamicCommand: function(event) { registerDynamicCommand: function (event) {
const commandWrapper = { const commandWrapper = {
commands: [{ commands: [{
name: event.data['name'] || 'DEFAULT', name: event.data['name'] || 'DEFAULT',
@ -571,9 +572,9 @@ const plugin = {
if (!validateEnabled(gameEvent.owner, gameEvent.origin)) { if (!validateEnabled(gameEvent.owner, gameEvent.origin)) {
return; return;
} }
if (gameEvent.data === '--reload' && gameEvent.origin.level === 'Owner') { if (gameEvent.data === '--reload' && gameEvent.origin.level === 'Owner') {
this.sendEventMessage(gameEvent.owner, true, 'GetCommandsRequested', null, null, null, { name: gameEvent.extra.name }); this.sendEventMessage(gameEvent.owner, true, 'GetCommandsRequested', null, null, null, {name: gameEvent.extra.name});
} else { } else {
sendScriptCommand(gameEvent.owner, `${event.data['eventKey']}Execute`, gameEvent.origin, gameEvent.target, { sendScriptCommand(gameEvent.owner, `${event.data['eventKey']}Execute`, gameEvent.origin, gameEvent.target, {
args: gameEvent.data args: gameEvent.data
@ -582,7 +583,7 @@ const plugin = {
} }
}] }]
} }
this.scriptHelper.registerDynamicCommand(commandWrapper); this.scriptHelper.registerDynamicCommand(commandWrapper);
} }
}; };
@ -920,6 +921,6 @@ const fileForDvar = (dvar) => {
if (dvar === inDvar) { if (dvar === inDvar) {
return busFileIn; return busFileIn;
} }
return busFileOut; return busFileOut;
} }