From e9ff338fe714d4e4c5b9dd12cbceac57442402f8 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Wed, 29 Nov 2017 15:52:09 -0200 Subject: [PATCH] Adding proper credits system Added a script for visually improving credit view. Tracked back the server sources before with respective owners. It possibly still needs to be updated. --- scripts/npc/commands.js | 2 +- scripts/npc/credits.js | 138 ++++++++++++++++++ src/client/MapleClient.java | 2 +- src/client/command/Commands.java | 17 +-- .../handlers/login/LoginPasswordHandler.java | 5 +- 5 files changed, 145 insertions(+), 19 deletions(-) create mode 100644 scripts/npc/credits.js diff --git a/scripts/npc/commands.js b/scripts/npc/commands.js index 99b71c9502..41b0f2ec40 100644 --- a/scripts/npc/commands.js +++ b/scripts/npc/commands.js @@ -198,7 +198,7 @@ function writeSolaxiaCommandsLv0() { //Common addCommand("commands", ""); addCommand("time", ""); - addCommand("staff", ""); + addCommand("credits", ""); addCommand("uptime", ""); addCommand("gacha", ""); addCommand("whatdropsfrom", ""); diff --git a/scripts/npc/credits.js b/scripts/npc/credits.js new file mode 100644 index 0000000000..8412c3ad53 --- /dev/null +++ b/scripts/npc/credits.js @@ -0,0 +1,138 @@ +/* @Author Ronan + Name: Heracle + Map(s): Guild Headquarters + Info: Hall of Fame + Script: credits.js +*/ + +var status; + +var name_tree = []; +var role_tree = []; +var name_cursor, role_cursor; + +var servers = ["HeavenMS", "MapleSolaxia", "MoopleDEV", "MetroMS", "BubblesDEV", "ThePackII", "OdinMS"]; +var servers_history = []; + +function addPerson(name, role) { + name_cursor.push(name); + role_cursor.push(role); +} + +function setHistory(from, to) { + servers_history.push([from, to]); +} + +function writeServerStaff_HeavenMS() { + addPerson("Ronan", "Developer"); + addPerson("Vcoc", "Freelance Developer"); + + setHistory(2015, 2017); +} + +function writeServerStaff_MapleSolaxia() { + addPerson("Aria", "Administrator"); + addPerson("Twdtwd", "Administrator"); + addPerson("Exorcist", "Developer"); + addPerson("SharpAceX", "Developer"); + addPerson("Zygon", "Freelance Developer"); + addPerson("SourMjolk", "Game Master"); + addPerson("Kanade", "Game Master"); + addPerson("Kitsune", "Game Master"); + + setHistory(2014, 2015); +} + +function writeServerStaff_MoopleDEV() { + addPerson("kevintjuh93", "Developer"); + setHistory(2010, 2010); +} + +function writeServerStaff_MetroMS() { + addPerson("Moongra", "Developer"); + setHistory(2009, 2010); +} + +function writeServerStaff_BubblesDEV() { + addPerson("Deagan", "Developer"); + setHistory(2009, 2009); +} + +function writeServerStaff_ThePackII() { + addPerson("Hofer", "Developer"); + setHistory(2008, 2009); +} + +function writeServerStaff_OdinMS() { + addPerson("Serpendiem", "Developer"); + setHistory(2007, 2008); +} + +function writeAllServerStaffs() { + for(var i = 0; i < servers.length; i++) { + name_cursor = []; + role_cursor = []; + + var srvName = servers[i]; + eval("writeServerStaff_" + srvName)(); // make sure the server names are lexicograffically EQUALS to the correspondent function. + + name_tree.push(name_cursor); + role_tree.push(role_cursor); + } +} + +function start() { + status = -1; + writeAllServerStaffs(); + action(1, 0, 0); +} + +function action(mode, type, selection) { + if (mode == -1) { + cm.dispose(); + } else { + if (mode == 0 && type > 0) { + cm.dispose(); + return; + } + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + var sendStr = "There is the history tree of all participating parties on the build of this server:\r\n\r\n"; + for(var i = 0; i < servers.length; i++) { + var hist = servers_history[i]; + + if(hist.length > 0) { + sendStr += "#L" + i + "##b" + servers[i] + "#k -- " + ((hist[0] != hist[1]) ? hist[0] + " ~ " + hist[1] : hist[0]) + "#l\r\n"; + } else { + sendStr += "#L" + i + "#" + servers[i] + "#l\r\n"; + } + } + + cm.sendSimple(sendStr); + } else if(status == 1) { + var lvName, lvRole; + + for(var i = 0; i < servers.length; i++) { + if(selection == i) { + lvName = name_tree[i]; + lvRole = role_tree[i]; + break; + } + } + + var sendStr = "The staff of #b" + servers[selection] + "#k:\r\n\r\n"; + for(var i = 0; i < lvName.length; i++) { + sendStr += " #L" + i + "# " + lvName[i] + " - " + lvRole[i]; + sendStr += "#l\r\n"; + } + + cm.sendPrev(sendStr); + } else { + cm.dispose(); + } + } +} diff --git a/src/client/MapleClient.java b/src/client/MapleClient.java index dafb53269c..eacf752589 100644 --- a/src/client/MapleClient.java +++ b/src/client/MapleClient.java @@ -532,7 +532,7 @@ public class MapleClient { if (getLoginState() > LOGIN_NOTLOGGEDIN) { // already loggedin loggedIn = false; loginok = 7; - } else if (pwd.charAt(0) == '$' && pwd.charAt(1) == '2' && BCrypt.checkpw(pwd, passhash)) { + } else if (passhash.charAt(0) == '$' && passhash.charAt(1) == '2' && BCrypt.checkpw(pwd, passhash)) { loginok = (tos == 0) ? 23 : 0; } else if (pwd.equals(passhash) || checkHash(passhash, "SHA-1", pwd) || checkHash(passhash, "SHA-512", pwd + salt)) { loginok = (tos == 0) ? -23 : -10; // migrate to bcrypt diff --git a/src/client/command/Commands.java b/src/client/command/Commands.java index c6fe171362..d159f4e731 100644 --- a/src/client/command/Commands.java +++ b/src/client/command/Commands.java @@ -355,21 +355,10 @@ public class Commands { dateFormat.setTimeZone(TimeZone.getTimeZone(ServerConstants.TIMEZONE)); player.yellowMessage("Solaxia Server Time: " + dateFormat.format(new Date())); break; - + + case "credits": case "staff": - player.yellowMessage("HeavenMS (MapleSolaxiaV2) Staff"); - player.yellowMessage("Ronan - Developer"); - player.yellowMessage("Vcoc - Freelance Developer"); - player.yellowMessage(""); - player.yellowMessage("MapleSolaxia Staff"); - player.yellowMessage("Aria - Administrator"); - player.yellowMessage("Twdtwd - Administrator"); - player.yellowMessage("Exorcist - Developer"); - player.yellowMessage("SharpAceX - Developer"); - player.yellowMessage("Zygon - Freelance Developer"); - player.yellowMessage("SourMjolk - Game Master"); - player.yellowMessage("Kanade - Game Master"); - player.yellowMessage("Kitsune - Game Master"); + c.getAbstractPlayerInteraction().openNpc(2010007, "credits"); break; case "lastrestart": diff --git a/src/net/server/handlers/login/LoginPasswordHandler.java b/src/net/server/handlers/login/LoginPasswordHandler.java index 8d1581fa90..9447960ad5 100644 --- a/src/net/server/handlers/login/LoginPasswordHandler.java +++ b/src/net/server/handlers/login/LoginPasswordHandler.java @@ -48,7 +48,6 @@ public final class LoginPasswordHandler implements MaplePacketHandler { String login = slea.readMapleAsciiString(); String pwd = slea.readMapleAsciiString(); - String bcryptedpass = BCrypt.hashpw(pwd, BCrypt.gensalt(12)); c.setAccountName(login); int loginok = c.login(login, pwd); @@ -61,7 +60,7 @@ public final class LoginPasswordHandler implements MaplePacketHandler { con = DatabaseConnection.getConnection(); ps = con.prepareStatement("INSERT INTO accounts (name, password) VALUES (?, ?);"); ps.setString(1, login); - ps.setString(2, bcryptedpass); + ps.setString(2, BCrypt.hashpw(pwd, BCrypt.gensalt(12))); ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); @@ -75,7 +74,7 @@ public final class LoginPasswordHandler implements MaplePacketHandler { try { con = DatabaseConnection.getConnection(); ps = con.prepareStatement("UPDATE accounts SET password = ? WHERE name = ?;"); - ps.setString(1, bcryptedpass); + ps.setString(1, BCrypt.hashpw(pwd, BCrypt.gensalt(12))); ps.setString(2, login); ps.executeUpdate(); } catch (SQLException e) {