diff --git a/src/console.ts b/src/console.ts index 7586b2b..4605d4b 100755 --- a/src/console.ts +++ b/src/console.ts @@ -1,5 +1,4 @@ import ansiEscapes from "ansi-escapes"; -import readline from "readline"; import chalk from "chalk"; import { getGame } from "./moomoo/Game"; import { PacketFactory } from "./packets/PacketFactory"; @@ -70,7 +69,6 @@ dispatcher.register( dispatcher.register( literal("kill").then( argument("playerSID", integer()).executes((context) => { - let packetFactory = PacketFactory.getInstance(); let playerSID = context.getArgument("playerSID", Number); let game = getGame(); @@ -92,7 +90,6 @@ dispatcher.register( dispatcher.register( literal("ban").then( argument("playerSID", integer()).executes((context) => { - let packetFactory = PacketFactory.getInstance(); let playerSID = context.getArgument("playerSID", Number); let game = getGame(); @@ -111,6 +108,27 @@ dispatcher.register( ) ); +dispatcher.register( + literal("promote").then( + argument("playerSID", integer()).executes((context) => { + let playerSID = context.getArgument("playerSID", Number); + let game = getGame(); + + if (game) { + let player = game.state.players.find( + (player) => player.id == playerSID + ); + + if (player && player.client) { + game.addModerator(player.client); + } + } + + return 0; + }) + ) +); + dispatcher.register( literal("set").then( argument("playerSID", integer()).then( @@ -209,9 +227,6 @@ function log(text: any) { logMethod("> " + coloredCommand); } -function warn(text: string) { - log(chalk.yellowBright(text)); -} function error(text: string) { process.stderr.write(ansiEscapes.eraseLines(lastMessage.split("\n").length)); diff --git a/src/moomoo/Game.ts b/src/moomoo/Game.ts index 1794ee9..7cdfa26 100755 --- a/src/moomoo/Game.ts +++ b/src/moomoo/Game.ts @@ -215,6 +215,17 @@ export default class Game { } } + async addModerator(client: Client) { + if (this.db) { + if (!this.db.get("moderatorIPs").includes(client.ip).value()) { + await this.db.get("moderatorIPs").push(client.ip).write(); + } + + console.log(`Promoted ${client.id} with ip ${client.ip} to Moderator`); + this.kickClient(client, "Refresh to be moderator!"); + } + } + killPlayer(player: Player) { let packetFactory = PacketFactory.getInstance();