Commands overhaul + Selective loot + Antimulticlient Coordinator
Completely overhauled commands layout, each command splitted in Java classes. Optimized "ranks" command, no more calling the DB to get ranking info. Implemented a mechanic where mobs only spawns loots that are visible/collectable by the player's party. Implemented a server flag which sets whether explorers, cygnus and legends are allowed to share the cash shop inventory or not. Implemented support for dynamic server rates at bootup. Rates can now be assigned at the configuration.ini file. Devised the anti-multiclient login coordinator feature. Besides multiclient attempts by the same machine, it also prevents unauthorized login attempts into an account. Fixed PQ instances being forcefully closed even when party leader reassignment upon logout is available. Fixed mob statis not concurrently protected.
This commit is contained in:
@@ -111,6 +111,7 @@ function writeFeatureTab_MonstersMapsReactors() {
|
||||
addFeature("Monsterbook displays updated drop data info.");
|
||||
addFeature("Every skill/mastery book is now obtainable.");
|
||||
addFeature("Mobs now can drop more than one of the same equip.");
|
||||
addFeature("Mobs only drop items collectable by the player/party.");
|
||||
addFeature("Redesigned HT mechanics: assemble & dmg taken.");
|
||||
addFeature("Implemented Zombify disease status.");
|
||||
addFeature("Added Boss HP Bar for dozens of bosses.");
|
||||
@@ -146,10 +147,12 @@ function writeFeatureTab_Playerpotentials() {
|
||||
addFeature("Pet evolutions functional (not GMS-like).");
|
||||
addFeature("Reviewed keybinding system.");
|
||||
addFeature("Character slots per world/server-wide.");
|
||||
addFeature("Optional cash shop inventory separated by classes.");
|
||||
}
|
||||
|
||||
function writeFeatureTab_Serverpotentials() {
|
||||
addFeature("Multi-worlds.");
|
||||
addFeature("Each world can hold it's own rates from server bootup.");
|
||||
addFeature("Dynamic World/Channel deployment.");
|
||||
addFeature("Inventory auto-gather and auto-sorting feature.");
|
||||
addFeature("Enhanced auto-pot system: smart pet potion handle.");
|
||||
@@ -158,13 +161,13 @@ function writeFeatureTab_Serverpotentials() {
|
||||
addFeature("Enhanced inventory check: free slots smartly fetched.");
|
||||
addFeature("Enhanced petloot handler: no brute-force inv. checks.");
|
||||
addFeature("Tweaked pet/mount hunger to a balanced growth rate.");
|
||||
addFeature("Consistent experience gain system.");
|
||||
addFeature("Consistent experience and meso gain system.");
|
||||
addFeature("NPC crafters won't take items freely anymore.");
|
||||
addFeature("Duey: pkg rcvd popup and many delivery mechanics.");
|
||||
addFeature("Pet pickup gives preference to player attacks.");
|
||||
addFeature("Channel capacity bar and worlds with capacity check.");
|
||||
addFeature("Diseases visible for others, even after changing maps.");
|
||||
addFeature("Persistent diseases. Players keep their status on login.");
|
||||
addFeature("Persistent diseases. Players keeps status on login.");
|
||||
addFeature("Poison damage value visible for other players.");
|
||||
addFeature("M. book announcer displays info based on demand.");
|
||||
addFeature("Custom jail system.");
|
||||
@@ -182,9 +185,11 @@ function writeFeatureTab_Serverpotentials() {
|
||||
}
|
||||
|
||||
function writeFeatureTab_AdminGMcommands() {
|
||||
addFeature("Server commands layered by GM levels.");
|
||||
addFeature("Spawn Zakum/Horntail/Pinkbean.");
|
||||
addFeature("Several new commands.");
|
||||
addFeature("Rank command highlighting users by world or overall.");
|
||||
addFeature("Server commands layered by GM levels.");
|
||||
addFeature("Revamped command files layout - thanks Arthur L!");
|
||||
}
|
||||
|
||||
function writeFeatureTab_CustomNPCs() {
|
||||
@@ -219,6 +224,7 @@ function writeFeatureTab_Project() {
|
||||
addFeature("Reviewed SQL data, eliminating duplicated entries.");
|
||||
addFeature("Improved login phase, using cache over DB queries.");
|
||||
addFeature("Protected many flaws with login management system.");
|
||||
addFeature("Developed a robust anti-exploit login coordinator.");
|
||||
addFeature("Usage of HikariCP to improve DB connection calls.");
|
||||
addFeature("Developed many survey tools for content profiling.");
|
||||
addFeature("ThreadTracker: runtime tool for deadlock detection.");
|
||||
|
||||
@@ -6,252 +6,18 @@
|
||||
Script: commands.js
|
||||
*/
|
||||
|
||||
importPackage(Packages.client.command);
|
||||
|
||||
var status;
|
||||
|
||||
var common_heading = "@";
|
||||
var staff_heading = "!";
|
||||
|
||||
var comm_lv6 = [];
|
||||
var desc_lv6 = [];
|
||||
|
||||
var comm_lv5 = [];
|
||||
var desc_lv5 = [];
|
||||
|
||||
var comm_lv4 = [];
|
||||
var desc_lv4 = [];
|
||||
|
||||
var comm_lv3 = [];
|
||||
var desc_lv3 = [];
|
||||
|
||||
var comm_lv2 = [];
|
||||
var desc_lv2 = [];
|
||||
|
||||
var comm_lv1 = [];
|
||||
var desc_lv1 = [];
|
||||
|
||||
var comm_lv0 = [];
|
||||
var desc_lv0 = [];
|
||||
|
||||
var levels = ["Common", "Donator", "JrGM", "GM", "SuperGM", "Developer", "Admin"];
|
||||
|
||||
var comm_cursor, desc_cursor;
|
||||
|
||||
function addCommand(comm, desc) {
|
||||
comm_cursor.push(comm);
|
||||
desc_cursor.push(desc);
|
||||
}
|
||||
|
||||
function writeHeavenMSCommandsLv6() { //Admin
|
||||
comm_cursor = comm_lv6;
|
||||
desc_cursor = desc_lv6;
|
||||
|
||||
addCommand("setgmlevel", "");
|
||||
addCommand("warpworld", "");
|
||||
addCommand("saveall", "");
|
||||
addCommand("dcall", "");
|
||||
addCommand("mapplayers", "");
|
||||
addCommand("getacc", "");
|
||||
addCommand("addchannel", "");
|
||||
addCommand("addworld", "");
|
||||
//addCommand("removechannel", "");
|
||||
//addCommand("removeworld", "");
|
||||
addCommand("shutdown", "");
|
||||
addCommand("shutdownnow", "");
|
||||
addCommand("clearquestcache", "");
|
||||
addCommand("clearquest", "");
|
||||
addCommand("spawnallpnpcs", "");
|
||||
addCommand("eraseallpnpcs", "");
|
||||
}
|
||||
|
||||
function writeHeavenMSCommandsLv5() { //Developer
|
||||
comm_cursor = comm_lv5;
|
||||
desc_cursor = desc_lv5;
|
||||
|
||||
addCommand("debugmonster", "");
|
||||
addCommand("debugpacket", "");
|
||||
addCommand("debugportal", "");
|
||||
addCommand("debugspawnpoint", "");
|
||||
addCommand("debugpos", "");
|
||||
addCommand("debugmap", "");
|
||||
addCommand("debugmobsp", "");
|
||||
addCommand("debugevent", "");
|
||||
addCommand("debugareas", "");
|
||||
addCommand("debugreactors", "");
|
||||
addCommand("debugcoupons", "");
|
||||
addCommand("debugplayercoupons", "");
|
||||
addCommand("debugtimer", "");
|
||||
addCommand("debugmarriage", "");
|
||||
addCommand("showpackets", "");
|
||||
addCommand("set", "");
|
||||
}
|
||||
|
||||
function writeHeavenMSCommandsLv4() { //SuperGM
|
||||
comm_cursor = comm_lv4;
|
||||
desc_cursor = desc_lv4;
|
||||
|
||||
addCommand("servermessage", "");
|
||||
addCommand("proitem", "");
|
||||
addCommand("seteqstat", "");
|
||||
addCommand("exprate", "");
|
||||
addCommand("mesorate", "");
|
||||
addCommand("droprate", "");
|
||||
addCommand("questrate", "");
|
||||
addCommand("itemvac", "");
|
||||
addCommand("forcevac", "");
|
||||
addCommand("zakum", "");
|
||||
addCommand("horntail", "");
|
||||
addCommand("pinkbean", "");
|
||||
addCommand("pap", "");
|
||||
addCommand("pianus", "");
|
||||
addCommand("cake", "");
|
||||
addCommand("playernpcremove", "");
|
||||
addCommand("playernpc", "");
|
||||
}
|
||||
|
||||
function writeHeavenMSCommandsLv3() { //GM
|
||||
comm_cursor = comm_lv3;
|
||||
desc_cursor = desc_lv3;
|
||||
|
||||
addCommand("debuff", "");
|
||||
addCommand("fly", "");
|
||||
addCommand("spawn", "");
|
||||
addCommand("mutemap", "");
|
||||
addCommand("checkdmg", "");
|
||||
addCommand("inmap", "");
|
||||
addCommand("reloadevents", "");
|
||||
addCommand("reloaddrops", "");
|
||||
addCommand("reloadportals", "");
|
||||
addCommand("reloadmap", "");
|
||||
addCommand("reloadshops", "");
|
||||
addCommand("hpmp", "");
|
||||
addCommand("maxhpmp", "");
|
||||
addCommand("music", "");
|
||||
addCommand("monitor", "");
|
||||
addCommand("monitors", "");
|
||||
addCommand("ignore", "");
|
||||
addCommand("ignored", "");
|
||||
addCommand("pos", "");
|
||||
addCommand("togglecoupon", "");
|
||||
addCommand("chat", "");
|
||||
addCommand("fame", "");
|
||||
addCommand("givenx", "");
|
||||
addCommand("givevp", "");
|
||||
addCommand("givems", "");
|
||||
addCommand("id", "");
|
||||
addCommand("expeds", "");
|
||||
addCommand("kill", "");
|
||||
addCommand("seed", "");
|
||||
addCommand("maxenergy", "");
|
||||
addCommand("killall", "");
|
||||
addCommand("notice", "");
|
||||
addCommand("rip", "");
|
||||
addCommand("openportal", "");
|
||||
addCommand("closeportal", "");
|
||||
addCommand("pe", "");
|
||||
addCommand("startevent", "");
|
||||
addCommand("endevent", "");
|
||||
addCommand("online2", "");
|
||||
addCommand("warpsnowball", "");
|
||||
addCommand("ban", "");
|
||||
addCommand("unban", "");
|
||||
addCommand("healmap", "");
|
||||
addCommand("healperson", "");
|
||||
addCommand("hurt", "");
|
||||
addCommand("killmap", "");
|
||||
addCommand("night", "");
|
||||
addCommand("npc", "");
|
||||
addCommand("face", "");
|
||||
addCommand("hair", "");
|
||||
addCommand("startquest", "");
|
||||
addCommand("completequest", "");
|
||||
addCommand("resetquest", "");
|
||||
}
|
||||
|
||||
function writeHeavenMSCommandsLv2() { //JrGM
|
||||
comm_cursor = comm_lv2;
|
||||
desc_cursor = desc_lv2;
|
||||
|
||||
addCommand("recharge", "");
|
||||
addCommand("whereami", "");
|
||||
addCommand("hide", "");
|
||||
addCommand("unhide", "");
|
||||
addCommand("sp", "");
|
||||
addCommand("ap", "");
|
||||
addCommand("empowerme", "");
|
||||
addCommand("buffmap", "");
|
||||
addCommand("buff", "");
|
||||
addCommand("bomb", "");
|
||||
addCommand("dc", "");
|
||||
addCommand("cleardrops", "");
|
||||
addCommand("clearslot", "");
|
||||
addCommand("warp", "");
|
||||
addCommand("warpto", "");
|
||||
addCommand("warphere", "");
|
||||
addCommand("reach", "");
|
||||
addCommand("gmshop", "");
|
||||
addCommand("heal", "");
|
||||
addCommand("item", "");
|
||||
addCommand("level", "");
|
||||
addCommand("levelpro", "");
|
||||
addCommand("setstat", "");
|
||||
addCommand("maxstat", "");
|
||||
addCommand("maxskill", "");
|
||||
addCommand("resetskill", "");
|
||||
addCommand("mesos", "");
|
||||
addCommand("search", "");
|
||||
addCommand("jail", "");
|
||||
addCommand("unjail", "");
|
||||
addCommand("job", "");
|
||||
addCommand("unbug", "");
|
||||
}
|
||||
|
||||
function writeHeavenMSCommandsLv1() { //Donator
|
||||
comm_cursor = comm_lv1;
|
||||
desc_cursor = desc_lv1;
|
||||
|
||||
addCommand("bosshp", "");
|
||||
addCommand("mobhp", "");
|
||||
addCommand("whatdropsfrom", "");
|
||||
addCommand("whodrops", "");
|
||||
addCommand("buffme", "");
|
||||
addCommand("goto", "");
|
||||
}
|
||||
|
||||
function writeHeavenMSCommandsLv0() { //Common
|
||||
comm_cursor = comm_lv0;
|
||||
desc_cursor = desc_lv0;
|
||||
|
||||
addCommand("commands", "");
|
||||
addCommand("droplimit", "");
|
||||
addCommand("time", "");
|
||||
addCommand("credits", "");
|
||||
addCommand("uptime", "");
|
||||
addCommand("gacha", "");
|
||||
addCommand("dispose", "");
|
||||
addCommand("equiplv", "");
|
||||
addCommand("showrates", "");
|
||||
addCommand("rates", "");
|
||||
addCommand("online", "");
|
||||
addCommand("gm", "");
|
||||
addCommand("reportbug", "");
|
||||
//addCommand("points", "");
|
||||
addCommand("joinevent", "");
|
||||
addCommand("leaveevent", "");
|
||||
addCommand("ranks", "");
|
||||
addCommand("str", "");
|
||||
addCommand("dex", "");
|
||||
addCommand("int", "");
|
||||
addCommand("luk", "");
|
||||
}
|
||||
var commands;
|
||||
|
||||
function writeHeavenMSCommands() {
|
||||
writeHeavenMSCommandsLv0(); //Common
|
||||
writeHeavenMSCommandsLv1(); //Donator
|
||||
writeHeavenMSCommandsLv2(); //JrGM
|
||||
writeHeavenMSCommandsLv3(); //GM
|
||||
writeHeavenMSCommandsLv4(); //Developer
|
||||
writeHeavenMSCommandsLv5(); //SuperGM
|
||||
writeHeavenMSCommandsLv6(); //Admin
|
||||
commands = CommandsExecutor.getInstance().getGmCommands();
|
||||
}
|
||||
|
||||
function start() {
|
||||
@@ -282,33 +48,19 @@ function action(mode, type, selection) {
|
||||
cm.sendSimple(sendStr);
|
||||
} else if(status == 1) {
|
||||
var lvComm, lvDesc, lvHead = (cm.getPlayer().gmLevel() < 2) ? common_heading : staff_heading;
|
||||
|
||||
if(selection == 0) {
|
||||
lvComm = comm_lv0;
|
||||
lvDesc = desc_lv0;
|
||||
} else if(selection == 1) {
|
||||
lvComm = comm_lv1;
|
||||
lvDesc = desc_lv1;
|
||||
} else if(selection == 2) {
|
||||
lvComm = comm_lv2;
|
||||
lvDesc = desc_lv2;
|
||||
} else if(selection == 3) {
|
||||
lvComm = comm_lv3;
|
||||
lvDesc = desc_lv3;
|
||||
} else if(selection == 4) {
|
||||
lvComm = comm_lv4;
|
||||
lvDesc = desc_lv4;
|
||||
} else if(selection == 5) {
|
||||
lvComm = comm_lv5;
|
||||
lvDesc = desc_lv5;
|
||||
} else {
|
||||
lvComm = comm_lv6;
|
||||
lvDesc = desc_lv6;
|
||||
|
||||
if(selection > 6) {
|
||||
selection = 6;
|
||||
} else if(selection < 0) {
|
||||
selection = 0;
|
||||
}
|
||||
|
||||
|
||||
lvComm = commands.get(selection).getLeft();
|
||||
lvDesc = commands.get(selection).getRight();
|
||||
|
||||
var sendStr = "The following commands are available for #b" + levels[selection] + "#k:\r\n\r\n";
|
||||
for(var i = 0; i < lvComm.length; i++) {
|
||||
sendStr += " #L" + i + "# " + lvHead + lvComm[i] + " - " + lvDesc[i];
|
||||
for(var i = 0; i < lvComm.size(); i++) {
|
||||
sendStr += " #L" + i + "# " + lvHead + lvComm.get(i) + " - " + lvDesc.get(i);
|
||||
sendStr += "#l\r\n";
|
||||
}
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ function writeServerStaff_MoopleDEV() {
|
||||
}
|
||||
|
||||
function writeServerStaff_MetroMS() {
|
||||
addPerson("Moongra", "Developer");
|
||||
addPerson("Moogra", "Developer");
|
||||
setHistory(2009, 2010);
|
||||
}
|
||||
|
||||
@@ -73,6 +73,7 @@ function writeServerStaff_BubblesDEV() {
|
||||
|
||||
function writeServerStaff_ThePackII() {
|
||||
addPerson("Hofer", "Developer");
|
||||
addPerson("Moogra", "Developer");
|
||||
setHistory(2008, 2009);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user