summaryrefslogtreecommitdiff
path: root/app.js
diff options
context:
space:
mode:
Diffstat (limited to 'app.js')
-rw-r--r--app.js300
1 files changed, 5 insertions, 295 deletions
diff --git a/app.js b/app.js
index d677d3e..fbf081d 100644
--- a/app.js
+++ b/app.js
@@ -17,6 +17,8 @@ console.log("Server started.");
var SOCKET_LIST = {};
const servermsg = "Server: ";
+const Commands = require('./server/Commands')
+const Utils = require('./server/Utils')
const Entity = require('./server/Entities/Entity')
const Player = require('./server/Entities/Player')
const Bullet = require('./server/Entities/Bullet')
@@ -46,21 +48,6 @@ var addUser = function(data, cb){
});
}
-var updateGMLevel = function(username, lvl, cb){
- db.account.update({username:username},{$set:{gmlvl:lvl}},function(err){
- cb();
- });
-}
-
-var hasPermission = function(username, req, cb){
- db.account.find({username:username},function(err,res){
- if (res[0].gmlvl >= req)
- cb(true);
- else
- cb(false);
- });
-}
-
var io = require('socket.io')(serv, {});
io.sockets.on('connection', function(socket){
socket.id = Math.random();
@@ -96,238 +83,16 @@ io.sockets.on('connection', function(socket){
socket.on('sendMsgToServer', function(data){
if (data)
for (var i in SOCKET_LIST){
- SOCKET_LIST[i].emit('addToChat', {ctimestamp: getTimeStamp(0), content: socket.playerName + ': ' + escapeHTML(chatEmote(data)), tab: "world"});
+ SOCKET_LIST[i].emit('addToChat', {ctimestamp: Utils.getTimeStamp(0), content: socket.playerName + ': ' + Utils.escapeHTML(Utils.chatEmote(data)), tab: "world"});
}
});
socket.on('command', function(data){
- modifyer = data[0];
- command = data.slice(1).split(' ');
-
- //staff cmd
- if(modifyer === '@'){
- hasPermission(socket.playerName, 1, function(res){
- if (res)
- switch (command[0].toLowerCase()) {
- // @bc (args: <message>)
- case "bc":
- case "broadcast":
- res = joinArgs(command, 1, 0);
- for (var i in SOCKET_LIST){
- SOCKET_LIST[i].emit('addToChat', {ctimestamp: getTimeStamp(0), content: "<font color='red' weight='bold'>GlobalAnnounce: " + escapeHTML(res) + "</font>", tab: "world"});
- }
- break;
-
- // @lbc (args: <message>)
- case "lbc":
- case "localbroadcast":
- res = joinArgs(command, 1, 0);
- for (var i in Player.Player.list){
- if (Player.Player.list[i].map == Player.Player.list[socket.id].map)
- SOCKET_LIST[i].emit('addToChat', {ctimestamp: getTimeStamp(0), content: "<font color='red' weight='bold'>GlobalAnnounce: " + escapeHTML(res) + "</font>", tab: "world"});
- }
- break;
-
- // @who (args: none)
- case "who":
- res = servermsg;
- for (var i in Player.Player.list){
- res+=Player.Player.list[i].playerName + ", ";
- }
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: res, tab:"any"});
- break;
-
- // @where (args:[playername])
- case "where":
- found = false;
- if(command.length <= 1)
- command[1] = socket.playerName;
- for (var i in Player.Player.list){
- if (Player.Player.list[i].playerName.includes(command[1])){
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + Player.Player.list[i].playerName + ": " + Player.Player.list[i].map + " [" + Player.Player.list[i].x + ", " + Player.Player.list[i].y + "]",tab: "any"});
- found = true;
- }
- }
- if (!found)
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Player not found", tab: "any"});
- break;
-
- // @goto (args:<playername>)
- case "goto":
- found = false;
- if(command.length <= 1)
- command[1] = socket.playerName;
- for (var i in Player.Player.list){
- if (Player.Player.list[i].playerName.includes(command[1])){
- Player.Player.list[socket.id].map = Player.Player.list[i].map;
- Player.Player.list[socket.id].x = Player.Player.list[i].x;
- Player.Player.list[socket.id].y = Player.Player.list[i].y;
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Warped to " + Player.Player.list[i].playerName, tab: "any"});
- found = true;
- break;
- }
- }
- if (!found)
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Player not found", tab:"any"});
- break;
-
- // @recall (args:<playername>)
- case "recall":
- found = false;
- if(command.length <= 1)
- command[1] = socket.playerName;
- for (var i in Player.Player.list){
- if (Player.Player.list[i].playerName.includes(command[1])){
- Player.Player.list[i].map = Player.Player.list[socket.id].map;
- Player.Player.list[i].x = Player.Player.list[socket.id].x;
- Player.Player.list[i].y = Player.Player.list[socket.id].y;
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Recalled " + Player.Player.list[i].playerName + " to you.", tab: "any"});
- SOCKET_LIST[Player.Player.list[i].id].emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "You were Recalled from " + socket.playerName, tab: "any"});
- found = true;
- break;
- }
- }
- if (!found)
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Player not found", tab: "any"});
- break;
-
- // @warp/@tele/@teleport (args:[map] [<x> <y>])
- case "warp":
- case "tele":
- case "teleport":
- hasPermission(socket.playerName, 60, function(res)
- {
- if(res)
- {
- if(command.length < 2 || command.length > 4){
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + escapeHTML("Wrong syntax: @warp [map] [<x> <y>]"), tab: "any"});
- return;
- }
- else if(command.length == 2){
- Player.Player.list[socket.id].map = command[1];
- var new_x = Math.random()*500; // TODO: map size?!
- var new_y = Math.random()*500;
- Player.Player.list[socket.id].x = new_x;
- Player.Player.list[socket.id].y = new_y;
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Warped to map:" + command[1] + " x:" + new_x + " y:" + new_y, tab: "any"});
- }
- else if(command.length == 3){ // only cords
- // TODO: check if map exists
- Player.Player.list[socket.id].x = parseInt(command[1]);
- Player.Player.list[socket.id].y = parseInt(command[2]);
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Warped to x:" + command[1] + " y:" + command[2], tab: "any"});
- }
- else if(command.length == 4){ // map x y
- // TODO: check if map exists
- Player.Player.list[socket.id].map = command[1];
- Player.Player.list[socket.id].x = parseInt(command[2]);
- Player.Player.list[socket.id].y = parseInt(command[3]);
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Warped to map:" + command[1] + " x:" + command[2] + " y:" + command[3], tab: "any"});
- }
- }
- else
- {
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "you dont have permission to use this command!", tab: "any"});
- }
- });
- break;
-
- // @hide
- case "hide":
- hasPermission(socket.playerName, 60, function(res){
- if (res){
- Player.Player.list[socket.id].ignorePlayerAttack = ! Player.Player.list[socket.id].ignorePlayerAttack;
- if (Player.Player.list[socket.id].ignorePlayerAttack)
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "You are now immune to player and monster attacks", tab:"any"});
- else
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "You are no longer immune to player and monster attacks", tab:"any"});
- }
- else
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "you dont have permission to use this command!", tab: "any"});
- });
- break;
-
- // @setgm (args:<playername> <lvl>)
- case "setgm":
- hasPermission(socket.playerName, 99, function(res){
- if (res)
- updateGMLevel(command[1],parseInt(command[2]), function(){
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "GM level set.", tab:"any"});
- });
- else
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "you dont have permission to use this command!", tab: "any"});
- });
- break;
- default:
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Command not found.", tab: "any"});
- break;
- }
- else{
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "you dont have permission to use this command!", tab: "any"});
- }
- });
- }
-
- // player cmd
- else if(modifyer === '/'){
- switch (command[0]) {
- // /who (args: none)
- case "who":
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + Object.keys(Player.Player.list).length + " Player" + ((Object.keys(Player.Player.list).length > 1)? "s" : "") + " Online.", tab: "any"});
- break;
-
- // /where (args: none)
- case "where":
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + Player.Player.list[socket.id].playerName + ": " +
- Player.Player.list[socket.id].map + " [" + Player.Player.list[socket.id].x + ", " + Player.Player.list[socket.id].y + "]", tab: "any"});
-
- break;
-
- // /whisper (args: <playername> <message>)
- case "w":
- case "whisper":
- case "tell":
- case "msg":
- found = false;
-
- for (var i in Player.Player.list){
- if (Player.Player.list[i].playerName == command[1]){
- res = escapeHTML(joinArgs(command, 2, 0));
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: socket.playerName + ": " + res, tab: Player.Player.list[i].playerName});
- SOCKET_LIST[Player.Player.list[i].id].emit('addToChat', {ctimestamp: getTimeStamp(0), content: socket.playerName + ": " + res, tab: socket.playerName});
- found = true;
- break;
- }
- }
- if (!found)
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Player not found", tab: "any"});
- break;
-
- default:
- socket.emit('addToChat', {ctimestamp: getTimeStamp(0), content: servermsg + "Command not found.", tab: "any"});
- break;
- }
- }
-
- // guild commands
- else if(modifyer === '#'){
-
- }
- // party commands
- else if(modifyer === '.'){
-
- }
- // help commands
- else if(modifyer === '?'){
- // ?
- }
- else{
- // this should never happen...
- }
+ Commands.dispatch(data, socket, SOCKET_LIST, servermsg, db, Player);
});
socket.on('evalServer', function(data){
- hasPermission(socket.playerName, 80, function(res){
+ Utils.hasPermission(db, socket.playerName, 80, function(res){
if (res)
socket.emit('evalAnswer', eval(data));
else
@@ -355,58 +120,3 @@ setInterval(function(){
Entity.removePack.bullet = [];
}, 1000/25);
-
-//removes (number)remArgsBefore and (number)remArgsAfter from argument array/list
-joinArgs = function(argsList, remArgsBefore, remArgsAfter){
- var res = "";
- for(var i = 0; i<argsList.length; i++){
- if(i < remArgsBefore)
- continue;
- if(argsList.length - i <= remArgsAfter)
- continue;
- res +=argsList[i] + " ";
- }
- return res;
-}
-
-// gets the current (weird formated) timestamp
-getTimeStamp = function(){
- var date_ob = new Date();
- day = addLeadingZero(date_ob.getDate());
- month = addLeadingZero(date_ob.getMonth());
- year = date_ob.getFullYear();
- hours = addLeadingZero(date_ob.getHours());
- minutes = addLeadingZero(date_ob.getMinutes());
- seconds = addLeadingZero(date_ob.getSeconds());
-
- return (year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds);
-}
-
-// formats number (n) to 2-digit
-addLeadingZero = function(n){
- if (n <= 9)
- return "0"+n;
- return n;
-}
-
-escapeHTML = function(unsafe) {
- return unsafe
- .replace(/&/g, "&amp;")
- .replace(/</g, "&lt;")
- .replace(/>/g, "&gt;")
- .replace(/"/g, "&quot;")
- .replace(/'/g, "&#039;");
- }
-
-chatEmote = function(msg) {
- return msg.replace(":D", "😀")
- .replace("O:)", "😇")
- .replace("0:)", "😇")
- .replace(":)", "🙂")
- .replace(":(", "🙁")
- .replace(":o", "😮")
- .replace(":O", "😲")
- .replace(":'(", "😢")
- .replace(":')", "🥲")
- .replace(":P", "😛");
-}