From 101454ef1a20bea1a961a1aaa0ec77e0d5369e97 Mon Sep 17 00:00:00 2001 From: jak1 Date: Fri, 13 Jan 2023 14:55:04 +0100 Subject: changed a lot formating seperated Utils & Commands --- app.js | 300 +-------------- client/consts.js | 7 +- client/index.html | 938 +++++++++++++++++++++++++--------------------- client/tmxloader.js | 122 +++--- server/Entities/Bullet.js | 43 ++- server/Entities/Entity.js | 20 +- server/Entities/Player.js | 127 ++++--- 7 files changed, 698 insertions(+), 859 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: ) - case "bc": - case "broadcast": - res = joinArgs(command, 1, 0); - for (var i in SOCKET_LIST){ - SOCKET_LIST[i].emit('addToChat', {ctimestamp: getTimeStamp(0), content: "GlobalAnnounce: " + escapeHTML(res) + "", tab: "world"}); - } - break; - - // @lbc (args: ) - 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: "GlobalAnnounce: " + escapeHTML(res) + "", 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:) - 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:) - 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] [ ]) - 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] [ ]"), 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: ) - 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: ) - 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/g, ">") - .replace(/"/g, """) - .replace(/'/g, "'"); - } - -chatEmote = function(msg) { - return msg.replace(":D", "😀") - .replace("O:)", "😇") - .replace("0:)", "😇") - .replace(":)", "🙂") - .replace(":(", "🙁") - .replace(":o", "😮") - .replace(":O", "😲") - .replace(":'(", "😢") - .replace(":')", "🥲") - .replace(":P", "😛"); -} diff --git a/client/consts.js b/client/consts.js index b7df81d..c64aff5 100644 --- a/client/consts.js +++ b/client/consts.js @@ -1,7 +1,6 @@ // game settings -const WIDTH = 500; -const HEIGHT = 500; - +const WIDTH = 500; +const HEIGHT = 500; // error codes -const CONNECTION_LOST = 10001; \ No newline at end of file +const CONNECTION_LOST = 10001; diff --git a/client/index.html b/client/index.html index c961d93..24403e3 100644 --- a/client/index.html +++ b/client/index.html @@ -1,480 +1,546 @@ - - ThePixelWorld - - -
- Username:
- Password:
- - - + +ThePixelWorld + + +
+ Username:
+ Password:
+ + + +
+
+

Dev-Note:

+ ThePixelWorld requires to load some huge map files, in case u have trouble:
+ Firefox dev tools network inspector truncates responses to 1MB by default.
+ You can change or disable the limit by navigating to about:config
+ and changing devtools.netmonitor.responseBodyLimit.
+ To disable the limit, set it to 0.
-
-

Dev-Note:

- ThePixelWorld requires to load some huge map files, in case u have trouble:
- Firefox dev tools network inspector truncates responses to 1MB by default.
- You can change or disable the limit by navigating to about:config
- and changing devtools.netmonitor.responseBodyLimit.
- To disable the limit, set it to 0. -
-

News:

- tmx maps loading and rendering nearly done, beside collision system.
- basic chat system (guild/party/... wip) {may also implement an api for irc usage?}
- every player has a name drawn above there head now.
-

ToDo

- to much, and to lazy to write it down *blush* -
+

News:

+ tmx maps loading and rendering nearly done, beside collision system.
+ basic chat system (guild/party/... wip) {may also implement an api for irc usage?}
+ every player has a name drawn above there head now.
+

ToDo

+ to much, and to lazy to write it down *blush*
- - -