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:
parent
a24aaf10d4
commit
5a33567c73
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user