Merge pull request #125 from SeanWalsh95/kick-unassigned-patch

Auto-Kick-Unassigned patch
This commit is contained in:
Thomas Smyth 2021-01-12 17:08:58 +00:00 committed by GitHub
commit b604ab9195
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 7 deletions

View File

@ -29,6 +29,8 @@ export default class SquadServer extends EventEmitter {
this.players = [];
this.admins = {};
this.plugins = [];
this.squadLayers = new SquadLayers(options.squadLayersSource);
@ -239,14 +241,14 @@ export default class SquadServer extends EventEmitter {
await this.logParser.watch();
}
async getAdminBySteamID(steamID) {
getAdminPermsBySteamID(steamID) {
return this.admins[steamID];
}
async getAdminsWithPermission(perm) {
getAdminsWithPermission(perm) {
const ret = [];
for (const [steamID, perms] of Object.entries(this.admins)) {
if (perm in perms) ret.push(this.admins[steamID]);
if (perm in perms) ret.push(steamID);
}
return ret;
}

View File

@ -82,8 +82,8 @@ export default class AutoKickUnassigned extends BasePlugin {
constructor(server, options, connectors) {
super(server, options, connectors);
this.admins = server.getAdminsWithPermission('canseeadminchat');
this.whitelist = server.getAdminsWithPermission('reserve');
this.adminPermission = 'canseeadminchat';
this.whitelistPermission = 'reserve';
this.kickTimeout = options.unassignedTimer * 1000;
this.warningInterval = options.frequencyOfWarnings * 1000;
@ -152,12 +152,15 @@ export default class AutoKickUnassigned extends BasePlugin {
if (forceUpdate) await this.server.updatePlayerList();
const admins = this.server.getAdminsWithPermission(this.adminPermission);
const whitelist = this.server.getAdminsWithPermission(this.whitelistPermission);
// loop through players on server and start tracking players not in a squad
for (const player of this.server.players) {
const isTracked = player.steamID in this.trackedPlayers;
const isUnassigned = player.squadID === null;
const isAdmin = player.steamID in this.admins;
const isWhitelist = player.steamID in this.whitelist;
const isAdmin = player.steamID in admins;
const isWhitelist = player.steamID in whitelist;
// tracked player joined a squad remove them (redundant afer adding PLAYER_SQUAD_CHANGE, keeping for now)
if (!isUnassigned && isTracked) this.untrackPlayer(player.steamID);