ztavern/node-server-manager/Plugins/Penalties.js
2024-10-18 00:19:19 +00:00

46 lines
No EOL
2.1 KiB
JavaScript

const path = require('path')
const { Command, NodeServerManager } = require(path.join(__dirname, `../Lib/Classes.js`))
const Utils = new (require(path.join(__dirname, '../Utils/Utils.js')))()
const Permissions = require(path.join(__dirname, `../Configuration/NSMConfiguration.json`)).Permissions
const Localization = require(path.join(__dirname, `../Configuration/Localization-${process.env.LOCALE}.json`)).lookup
class Plugin {
constructor(Server, Manager) {
this.Server = Server
this.Manager = Manager
this.Server.on('connect', this.onPlayerConnected.bind(this))
}
async onPlayerConnected(Player) {
if (this.Server.getClients().length + this.Server.reservedSlots > this.Server.MaxClients && Player.PermissionLevel < Permissions.Levels['ROLE_MODERATOR']) {
Player.Kick(Localization['KICK_CLIENTSLOT_RESERVED'])
}
try {
var playerPenalties = await this.Server.DB.getAllPenalties(Player.ClientId)
for (var i = 0; i < playerPenalties.length; i++) {
switch (playerPenalties[i].PenaltyType) {
case 'PENALTY_PERMA_BAN':
if (playerPenalties[i].Active) {
Player.Kick(`Banned for: ^5${playerPenalties[i].Reason}`, NodeServerManager)
return
}
break
case 'PENALTY_TEMP_BAN':
var dateDiff = (new Date(playerPenalties[i].Date) - new Date()) / 1000
if (dateDiff + playerPenalties[i].Duration > 0) {
if (playerPenalties[i].Active) {
Player.Kick(`Banned for: ^5${playerPenalties[i].Reason}^7 ${Utils.secondsToDhms(dateDiff + playerPenalties[i].Duration)} left`, NodeServerManager)
return
}
}
break
}
}
}
catch (e) { }
}
}
module.exports = Plugin