From 2c4d5645c695b6048037e82a43fd7bf27354fac7 Mon Sep 17 00:00:00 2001 From: Cronick Date: Tue, 13 Sep 2016 01:30:54 +0200 Subject: [PATCH] Update - Added getPlayerByName() & validPlayerName() - Added kickPlayer() command again (Still needs removePlayer()) - Added dump to .help - Changed the way arguments where made in the process.js file - Fixed type in process.js (killall -> kickall) - Removed update from .help --- .help | 6 ++--- src/models/World/players.js | 53 +++++++++++++++++++++++++++++++++++++ src/process.js | 11 ++++---- 3 files changed, 62 insertions(+), 8 deletions(-) diff --git a/.help b/.help index 0172898..f6007c1 100644 --- a/.help +++ b/.help @@ -1,8 +1,8 @@ players : How many players are connected exit : Exit the server -update : Update the server -kick [Username] : Kick player by username +kick [Username] : Kick player by username kickall : Kick all players clear : Clear the server console save : Save all players into database -spawn [Username] [Pkmn] [Amount] : Spawn pokemons at users position \ No newline at end of file +spawn [Username] [Pkmn] [Amount] : Spawn pokemons at users position +dump : Dump assets \ No newline at end of file diff --git a/src/models/World/players.js b/src/models/World/players.js index c4de65e..406327b 100644 --- a/src/models/World/players.js +++ b/src/models/World/players.js @@ -73,6 +73,39 @@ export function getPlayerByIP(ip) { } +/** + * @param {String} name + */ +export function getPlayerByName(name) { + + let players = this.players; + + let ii = 0; + let length = this.connectedPlayers; + + for (; ii < length; ++ii) { + if (players[ii].username === name) { + return (players[ii]); + } + }; + + return (null); + +} + +/** + * @param {String} name + * @return {Boolean} + */ +export function validPlayerName(name) { + return !( + name === null || + name === void 0 || + typeof name === "string" && + name.length <= 1 + ); +} + /** * @param {String} email */ @@ -123,4 +156,24 @@ export function addPlayer(req, res) { */ export function removePlayer(player) { print(`Removed ${player.email}`, 36); +} + +/** + * @param {String} name + */ +export function kickPlayer(name) { + + if (!this.validPlayerName(name)) { + print(`Invalid player name!`, 31); + return void 0; + } + + let player = this.getPlayerByName(name); + + if (player !== null) { + this.removePlayer(player); + print(`Kicked ${name} from the server!`); + } + else print(`Failed to kick ${name} from the server!`, 31); + } \ No newline at end of file diff --git a/src/process.js b/src/process.js index 9bde330..5b3dadc 100644 --- a/src/process.js +++ b/src/process.js @@ -18,9 +18,9 @@ export function processCommand(cmd, data) { this.shutdown(); break; case "/kick": - this.kickPlayer(data[1]); + this.world.kickPlayer(data[0]); break; - case "/killall": + case "/kickall": var length = players.length; this.removeAllPlayers(); var result = length - players.length; @@ -41,7 +41,7 @@ export function processCommand(cmd, data) { print(`Saved ${length} player${length === 1 ? "": "s"} into database!`); break; case "/spawn": - this.spawnPkmnAtPlayer(data[1], data[2], data[3] || 1); + this.spawnPkmnAtPlayer(data[0], data[1], data[2] || 1); break; case "/dump": print("Preparing dump session.."); @@ -57,8 +57,9 @@ export function processCommand(cmd, data) { export function stdinInput(data) { if (data.length <= 1) return void 0; - let cmds = data.split(" "); - this.processCommand(cmds[0], cmds.splice(0, 1)); + let args = data.split(" "); + let cmds = args.shift() + this.processCommand(cmds, args); }; export function uncaughtException(e) {