From 134c34fa5867580b2d33a7221118315993d5ff65 Mon Sep 17 00:00:00 2001 From: ronancpl Date: Wed, 18 Apr 2018 13:35:42 -0300 Subject: [PATCH] Autoassigner patch Fixed autoassigner handler not reading the client's packet properly when using USE_SERVER_AUTOASSIGNER = false. Updated questid for some drops on the DB. Added scripts for some quests on the Aran's Full Swing skill questline. --- .gitignore | 32 ++++++------ docs/mychanges_ptbr.txt | 6 ++- scripts/npc/commands.js | 9 ++-- scripts/quest/21750.js | 44 ++++++++++++++++ scripts/quest/21753.js | 46 ++++++++++++++++ scripts/quest/21754.js | 52 +++++++++++++++++++ scripts/quest/21757.js | 46 ++++++++++++++++ scripts/quest/21766.js | 7 +-- scripts/quest/21767.js | 15 +++--- sql/db_database.sql | 12 ++--- sql/db_drops.sql | 23 ++++---- src/client/command/Commands.java | 4 +- src/constants/ServerConstants.java | 2 +- .../channel/handlers/AutoAssignHandler.java | 16 +++--- wz/Quest.wz/Check.img.xml | 12 ----- 15 files changed, 256 insertions(+), 70 deletions(-) create mode 100644 scripts/quest/21750.js create mode 100644 scripts/quest/21753.js create mode 100644 scripts/quest/21754.js create mode 100644 scripts/quest/21757.js diff --git a/.gitignore b/.gitignore index 232f549d1e..5259791185 100644 --- a/.gitignore +++ b/.gitignore @@ -5,66 +5,66 @@ /build/ /dist/ -/nbproject/private/ +/nbproject/ /tools/MapleArrowFetcher/build/ /tools/MapleArrowFetcher/dist/ -/tools/MapleArrowFetcher/nbproject/private/ +/tools/MapleArrowFetcher/nbproject/ -/tools/MapleBossHpBarFetcher/nbproject/private/ +/tools/MapleBossHpBarFetcher/nbproject/ /tools/MapleBossHpBarFetcher/build/ /tools/MapleBossHpBarFetcher/dist/ -/tools/MapleCashDropFetcher/nbproject/private/ +/tools/MapleCashDropFetcher/nbproject/ /tools/MapleCashDropFetcher/build/ /tools/MapleCashDropFetcher/dist/ /tools/MapleCouponInstaller/build/ /tools/MapleCouponInstaller/dist/ -/tools/MapleCouponInstaller/nbproject/private/ +/tools/MapleCouponInstaller/nbproject/ /tools/MapleIdRetriever/build/ /tools/MapleIdRetriever/dist/ -/tools/MapleIdRetriever/nbproject/private/ +/tools/MapleIdRetriever/nbproject/ /tools/MapleInvalidItemIdFetcher/build/ /tools/MapleInvalidItemIdFetcher/dist/ -/tools/MapleInvalidItemIdFetcher/nbproject/private/ +/tools/MapleInvalidItemIdFetcher/nbproject/ /tools/MapleMapInfoRetriever/build/ /tools/MapleMapInfoRetriever/dist/ -/tools/MapleMapInfoRetriever/nbproject/private/ +/tools/MapleMapInfoRetriever/nbproject/ /tools/MapleMesoFetcher/build/ /tools/MapleMesoFetcher/dist/ -/tools/MapleMesoFetcher/nbproject/private/ +/tools/MapleMesoFetcher/nbproject/ /tools/MapleMobBookIndexer/build/ /tools/MapleMobBookIndexer/dist/ -/tools/MapleMobBookIndexer/nbproject/private/ +/tools/MapleMobBookIndexer/nbproject/ /tools/MapleMobBookUpdate/build/ /tools/MapleMobBookUpdate/dist/ -/tools/MapleMobBookUpdate/nbproject/private/ +/tools/MapleMobBookUpdate/nbproject/ -/tools/MapleQuestItemCountFetcher/nbproject/private/ +/tools/MapleQuestItemCountFetcher/nbproject/ /tools/MapleQuestItemCountFetcher/build/ /tools/MapleQuestItemCountFetcher/dist/ /tools/MapleQuestItemFetcher/build/ /tools/MapleQuestItemFetcher/dist/ -/tools/MapleQuestItemFetcher/nbproject/private/ +/tools/MapleQuestItemFetcher/nbproject/ /tools/MapleQuestMesoFetcher/build/ /tools/MapleQuestMesoFetcher/dist/ -/tools/MapleQuestMesoFetcher/nbproject/private/ +/tools/MapleQuestMesoFetcher/nbproject/ /tools/MapleSkillMakerFetcher/build/ /tools/MapleSkillMakerFetcher/dist/ -/tools/MapleSkillMakerFetcher/nbproject/private/ +/tools/MapleSkillMakerFetcher/nbproject/ /tools/MapleSkillMakerReagentIndexer/build/ /tools/MapleSkillMakerReagentIndexer/dist/ -/tools/MapleSkillMakerReagentIndexer/nbproject/private/ +/tools/MapleSkillMakerReagentIndexer/nbproject/ /out diff --git a/docs/mychanges_ptbr.txt b/docs/mychanges_ptbr.txt index 82be832739..c1f115882d 100644 --- a/docs/mychanges_ptbr.txt +++ b/docs/mychanges_ptbr.txt @@ -863,7 +863,9 @@ Implementado questline do Dyle. Corrigido possível exploit com sistema de quests, onde jogador podia começar e completar quaisquer quests livremente. Nova ferramenta: MapleCashDropFetcher. Aplicação busca por drop data de cash na DB e reporta. -13 Merço 2018, +13 - 14 Março 2018, Adicionado feature de anúncio de mudança de classe. Adicionado drops faltando da questline Puppeteer de Aran. -Movimentação de GM rank para alguns comandos. \ No newline at end of file +Movimentação de GM rank para alguns comandos. +Corrigido autoassigner inesperadamente desconectando jogadores, quando o autoassigner do cliente está sendo utilizado. +Adicionado scripts para a questline de Full Swing de Aran. \ No newline at end of file diff --git a/scripts/npc/commands.js b/scripts/npc/commands.js index a355847ffb..44e168326f 100644 --- a/scripts/npc/commands.js +++ b/scripts/npc/commands.js @@ -8,6 +8,9 @@ var status; +var common_heading = "@"; +var staff_heading = "!"; + var comm_lv6 = []; var desc_lv6 = []; @@ -220,9 +223,9 @@ function writeSolaxiaCommandsLv0() { //Common addCommand("leaveevent", ""); addCommand("ranks", ""); addCommand("str", ""); + addCommand("dex", ""); addCommand("int", ""); addCommand("luk", ""); - addCommand("dex", ""); } function writeSolaxiaCommands() { @@ -262,7 +265,7 @@ function action(mode, type, selection) { cm.sendSimple(sendStr); } else if(status == 1) { - var lvComm, lvDesc; + var lvComm, lvDesc, lvHead = (cm.getPlayer().gmLevel() < 2) ? common_heading : staff_heading; if(selection == 0) { lvComm = comm_lv0; @@ -289,7 +292,7 @@ function action(mode, type, selection) { 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 + "# " + lvComm[i] + " - " + lvDesc[i]; + sendStr += " #L" + i + "# " + lvHead + lvComm[i] + " - " + lvDesc[i]; sendStr += "#l\r\n"; } diff --git a/scripts/quest/21750.js b/scripts/quest/21750.js new file mode 100644 index 0000000000..d40883b126 --- /dev/null +++ b/scripts/quest/21750.js @@ -0,0 +1,44 @@ +/* + This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server + Copyleft (L) 2017 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var status = -1; + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("Aran, you're finally back!!! How you've been doing? Where did you go for so long? We have so much to catch up..."); + qm.forceCompleteQuest(); + + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/21753.js b/scripts/quest/21753.js new file mode 100644 index 0000000000..0d90e5b00c --- /dev/null +++ b/scripts/quest/21753.js @@ -0,0 +1,46 @@ +/* + This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server + Copyleft (L) 2017 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("Aran, I've discovered some disturbing news... You said you've come from the eastern forest section, right? We traced and studied the magic being used to support the portal over there. It turns out that's of a #rtemporal#k-type. The garments you're using... They were never seen around before. That must mean, #ryou must have come from the future#k."); + } else if (status == 1) { + qm.sendNext("Now about the problem: the Seal Stone that seems to have been missing in your timeline... It is a powerful artifact, that prevents the army of the #rBlack Mage#k from laying siege on our world. If that stone goes away, nothing more can prevent him. As this is a matter of great importance, find the #rself of mine#k from the future. I'm actually a #rfairy#k with a great life expectancy, I must be alive even on your timeline. Got it, #rfetch the me from the future#k!"); + qm.forceStartQuest(); + + qm.dispose(); + } + } +} diff --git a/scripts/quest/21754.js b/scripts/quest/21754.js new file mode 100644 index 0000000000..d804957a8c --- /dev/null +++ b/scripts/quest/21754.js @@ -0,0 +1,52 @@ +/* + This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server + Copyleft (L) 2017 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var status = -1; + +function start(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + if(!qm.canHold(4032328, 1)) { + qm.sendNext("Hm, I will need you to prepare a ETC slot for a letter I need to give you."); + qm.dispose(); + return; + } + + qm.sendNext("Here, take this. Send it to #r#p1002104##k, it contains a relevant matter for protecting this world. Please comply to this request."); + } else if (status == 1) { + qm.forceStartQuest(); + + qm.gainItem(4032328, 1); + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/21757.js b/scripts/quest/21757.js new file mode 100644 index 0000000000..dbc7df1876 --- /dev/null +++ b/scripts/quest/21757.js @@ -0,0 +1,46 @@ +/* + This file is part of the HeavenMS (MapleSolaxiaV2) MapleStory Server + Copyleft (L) 2017 RonanLana + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as + published by the Free Software Foundation version 3 as published by + the Free Software Foundation. You may not use, modify or distribute + this program under any other version of the GNU Affero General Public + License. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +var status = -1; + +function end(mode, type, selection) { + if (mode == -1) { + qm.dispose(); + } else { + if(mode == 0 && type > 0) { + qm.dispose(); + return; + } + + if (mode == 1) + status++; + else + status--; + + if (status == 0) { + qm.sendNext("Oh, a letter for the #rempress#k? From the #bheroes#k?!"); + qm.gainExp(1000 * qm.getPlayer().getExpRate()); + qm.gainItem(4032330, -1); + qm.forceCompleteQuest(); + + qm.dispose(); + } + } +} \ No newline at end of file diff --git a/scripts/quest/21766.js b/scripts/quest/21766.js index f26db43190..52a9bee1e1 100644 --- a/scripts/quest/21766.js +++ b/scripts/quest/21766.js @@ -8,11 +8,12 @@ function start(mode, type, selection) { qm.sendNext("He used to scowl and whine about his arthritis until just recently, but he''s suddenly become all happy and smiley!!"); } else if (status == 2) { qm.sendNext("I have a feeling there is a secret behind that wooden box. Could you stealthily look into the wooden box next to #p20000#?"); + } else if (status == 3) { + qm.sendNext("You know where #p20000# is, right? Hes to the right. Just keep going until you see where Vikin is, then head down past the hanging shark and octopus, and you''ll see John. The box should be right next to him."); } else { - qm.sendNext("You know where #p20000# is, right? He''s to the right. Just keep going until you see where Vikin is, then head down past the hanging shark and octopus, and you''ll see John. The box should be right next to him."); - qm.forceStartQuest(); + qm.forceStartQuest(); qm.dispose(); - } + } } function end(mode, type, selection) { diff --git a/scripts/quest/21767.js b/scripts/quest/21767.js index 390278e171..5d8d774512 100644 --- a/scripts/quest/21767.js +++ b/scripts/quest/21767.js @@ -3,14 +3,17 @@ var status = -1; function start(mode, type, selection) { status++; if (status == 0) { + if(qm.haveItem(4032423, 1)) { + qm.forceStartQuest(); + qm.dispose(); + return; + } + qm.sendNext("#bHm, there's a medicinal substance in the box. What could this be? You better take this to John and ask him what it is.#k"); } else { - qm.gainItem(4032423,1); - qm.forceCompleteQuest(); + qm.gainItem(4032423,1); + + qm.forceStartQuest(); qm.dispose(); } -} - -function end(mode, type, selection) { - qm.dispose(); } \ No newline at end of file diff --git a/sql/db_database.sql b/sql/db_database.sql index b4775a491b..695670b3ab 100644 --- a/sql/db_database.sql +++ b/sql/db_database.sql @@ -11429,11 +11429,11 @@ INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, (11210, 9001002, 4031059, 1, 1, 0, 999999), (11211, 9001003, 4031059, 1, 1, 0, 999999), (11212, 9001004, 4031059, 1, 1, 0, 999999), -(11213, 9001005, 4031857, 1, 1, 0, 300000), +(11213, 9001005, 4031857, 1, 1, 2192, 300000), (11214, 9001012, 4032311, 1, 1, 0, 300000), (11215, 9001012, 4032311, 1, 1, 0, 300000), (11216, 9001013, 4032312, 1, 1, 0, 999999), -(11217, 9001013, 4032339, 1, 1, 0, 999999), +(11217, 9001013, 4032339, 1, 1, 21303, 999999), (11219, 4230113, 1452016, 1, 1, 0, 700), (11220, 4230103, 1452016, 1, 1, 0, 700), (11221, 2230102, 1452016, 1, 1, 0, 700), @@ -11628,7 +11628,7 @@ INSERT IGNORE INTO `temp_data` (`id`, `dropperid`, `itemid`, `minimum_quantity`, (11628, 6220000, 1472055, 1, 1, 0, 1250), (11627, 5120500, 1472055, 1, 1, 0, 750), (11626, 5120000, 1472055, 1, 1, 0, 750), -(11625, 9001006, 4031856, 1, 1, 0, 400000), +(11625, 9001006, 4031856, 1, 1, 2191, 400000), (11624, 8190003, 4031461, 1, 1, 6169, 1000), (11623, 9400218, 4001106, 25, 50, 0, 999999), (11622, 9400217, 4001106, 1, 3, 0, 999999), @@ -16584,8 +16584,8 @@ INSERT INTO `reactordrops` (`reactordropid`, `reactorid`, `itemid`, `chance`, `q (37, 2212002, 2000002, 3, -1), (38, 2212001, 4031141, 2, -1), (39, 2212002, 4031143, 2, -1), -(40, 2212003, 4031107, 2, -1), -(41, 2212004, 4031116, 2, -1), +(40, 2212003, 4031107, 2, 3409), +(41, 2212004, 4031116, 2, 3419), (42, 2212004, 2000001, 2, -1), (43, 2212005, 4031136, 8, 3439), (44, 2222000, 4031231, 2, 3620), @@ -16669,7 +16669,7 @@ INSERT INTO `reactordrops` (`reactordropid`, `reactorid`, `itemid`, `chance`, `q (122, 2201001, 4001022, 1, -1), (123, 1402000, 4032309, 1, 21013), (124, 1402000, 4032310, 1, 21013), -(125, 1022001, 4032319, 7, -1), +(125, 1022001, 4032319, 7, 21723), (126, 1022002, 4001340, 1, 28167), (127, 1202000, 4001366, 1, 28194), (128, 1202003, 4001346, 3, 28225), diff --git a/sql/db_drops.sql b/sql/db_drops.sql index 2a83061591..2237a67dc0 100644 --- a/sql/db_drops.sql +++ b/sql/db_drops.sql @@ -2850,9 +2850,9 @@ USE `heavenms`; (3110100, 4000032, 1, 1, 0, 200000), (9300234, 4000032, 1, 1, 0, 200000), (9500108, 4000032, 1, 1, 0, 200000), -(3110100, 4031164, 1, 1, 0, 7000), -(9300234, 4031164, 1, 1, 0, 7000), -(9500108, 4031164, 1, 1, 0, 7000), +(3110100, 4031164, 1, 1, 2084, 7000), +(9300234, 4031164, 1, 1, 2084, 7000), +(9500108, 4031164, 1, 1, 2084, 7000), (3110100, 4031405, 1, 1, 0, 7000), (9300234, 4031405, 1, 1, 0, 7000), (9500108, 4031405, 1, 1, 0, 7000), @@ -9148,8 +9148,8 @@ USE `heavenms`; (9420530, 1002212, 1, 1, 0, 700), (9420530, 1472013, 1, 1, 0, 700), (9420530, 1051006, 1, 1, 0, 700), -(5130107, 4031218, 1, 1, 0, 7000), -(9400504, 4031218, 1, 1, 0, 7000), +(5130107, 4031218, 1, 1, 3071, 7000), +(9400504, 4031218, 1, 1, 3071, 7000), (5130107, 2000002, 1, 1, 0, 40000), (9400504, 2000002, 1, 1, 0, 40000), (5130107, 2000003, 1, 1, 0, 40000), @@ -9202,7 +9202,7 @@ USE `heavenms`; (9400504, 1060083, 1, 1, 0, 700), (5130107, 1482008, 1, 1, 0, 700), (9400504, 1482008, 1, 1, 0, 700), -(5130108, 4031218, 1, 1, 0, 7000), +(5130108, 4031218, 1, 1, 3071, 7000), (5130108, 2000002, 1, 1, 0, 40000), (5130108, 2000003, 1, 1, 0, 40000), (5130108, 2000004, 1, 1, 0, 40000), @@ -11082,8 +11082,8 @@ USE `heavenms`; (9420534, 1061102, 1, 1, 0, 700), (6230300, 4000129, 1, 1, 0, 200000), (9300317, 4000129, 1, 1, 0, 200000), -(6230300, 4031189, 1, 1, 0, 7000), -(9300317, 4031189, 1, 1, 0, 7000), +(6230300, 4031189, 1, 1, 3448, 7000), +(9300317, 4031189, 1, 1, 3448, 7000), (6230300, 2000002, 1, 1, 0, 40000), (9300317, 2000002, 1, 4, 0, 40000), (6230300, 2043701, 1, 1, 0, 750), @@ -19239,7 +19239,7 @@ USE `heavenms`; (9400578, 1032013, 1, 1, 0, 1200), (9400578, 1372009, 1, 1, 0, 1200), (9400578, 1372009, 1, 1, 0, 1200), -(9300011, 4031130, 1, 1, 0, 10000), +(9300011, 4031130, 1, 1, 3238, 10000), (7160000, 2385015, 1, 1, 0, 10000), (3230306, 2022355, 1, 1, 3248, 100000), (4230113, 2022354, 1, 1, 3248, 100000), @@ -20185,7 +20185,10 @@ USE `heavenms`; (1110130, 4032317, 1, 1, 21717, 40000), (1110130, 4032318, 1, 1, 21718, 40000), (1140130, 4032319, 1, 1, 21723, 100000), -(2230131, 4032321, 1, 1, 21727, 20000); +(2230131, 4032321, 1, 1, 21727, 20000), +(5250002, 4032326, 1, 1, 21752, 100000), +(2110301, 4032401, 1, 1, 2261, 100000), +(2110300, 4032402, 1, 1, 2263, 100000); # (dropperid, itemid, minqty, maxqty, questid, chance) diff --git a/src/client/command/Commands.java b/src/client/command/Commands.java index ed77335191..599eb63672 100644 --- a/src/client/command/Commands.java +++ b/src/client/command/Commands.java @@ -594,9 +594,9 @@ public class Commands { // stat autoassigning command credited to HeliosMS dev team case "str": + case "dex": case "int": case "luk": - case "dex": int amount = (sub.length > 1) ? Integer.parseInt(sub[1]) : player.getRemainingAp(); boolean str = sub[0].equalsIgnoreCase("str"); boolean Int = sub[0].equalsIgnoreCase("int"); @@ -764,7 +764,7 @@ public class Commands { case "goto": if (sub.length < 2){ - player.yellowMessage("Syntax: !goto "); + player.yellowMessage("Syntax: @goto "); break; } diff --git a/src/constants/ServerConstants.java b/src/constants/ServerConstants.java index 8e466a79c5..c9b1082f6f 100644 --- a/src/constants/ServerConstants.java +++ b/src/constants/ServerConstants.java @@ -57,7 +57,7 @@ public class ServerConstants { public static final boolean USE_PARTY_FOR_STARTERS = true; //Players level 10 or below can create/invite other players on the given level range. public static final boolean USE_AUTOBAN = false; //Commands the server to detect infractors automatically. public static final boolean USE_AUTOSAVE = true; //Enables server autosaving feature (saves characters to DB each 1 hour). - public static final boolean USE_SERVER_AUTOASSIGNER = true; //Server-builtin autoassigner, uses algorithm based on distributing AP accordingly with required secondary stat on equipments. + public static final boolean USE_SERVER_AUTOASSIGNER = true; //HeavenMS-builtin autoassigner, uses algorithm based on distributing AP accordingly with required secondary stat on equipments. public static final boolean USE_REFRESH_RANK_MOVE = true; public static final boolean USE_ENFORCE_HPMP_SWAP = false; //Forces players to reuse stats (via AP Resetting) located on HP/MP pool only inside the HP/MP stats. public static final boolean USE_ENFORCE_MOB_LEVEL_RANGE = true; //Players N levels below the killed mob will gain no experience from defeating it. diff --git a/src/net/server/channel/handlers/AutoAssignHandler.java b/src/net/server/channel/handlers/AutoAssignHandler.java index 4fa15c28d7..bb1960543a 100644 --- a/src/net/server/channel/handlers/AutoAssignHandler.java +++ b/src/net/server/channel/handlers/AutoAssignHandler.java @@ -52,19 +52,18 @@ public class AutoAssignHandler extends AbstractMaplePacketHandler { @Override public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) { MapleCharacter chr = c.getPlayer(); + if (chr.getRemainingAp() < 1) return; + int[] statGain = new int[4]; int[] statEqpd = new int[4]; - statGain[0] = 0; statGain[1] = 0; statGain[2] = 0; statGain[3] = 0; slea.skip(8); - byte opt = slea.readByte(); // useful for pirate autoassigning - - if (chr.getRemainingAp() < 1) return; if(ServerConstants.USE_SERVER_AUTOASSIGNER) { // --------- Ronan Lana's AUTOASSIGNER --------- // This method excels for assigning APs in such a way to cover all equipments AP requirements. + byte opt = slea.readByte(); // useful for pirate autoassigning int str = 0, dex = 0, luk = 0, int_ = 0; List eqpStrList = new ArrayList<>(); @@ -324,16 +323,13 @@ public class AutoAssignHandler extends AbstractMaplePacketHandler { //---------------------------------------------------------------------------------------- c.announce(MaplePacketCreator.serverNotice(1, "Better AP applications detected:\r\nSTR: +" + statGain[0] + "\r\nDEX: +" + statGain[1] + "\r\nINT: +" + statGain[3] + "\r\nLUK: +" + statGain[2])); - } - else { - int total = 0; - int extras = 0; + } else { if(slea.available() < 16) { AutobanFactory.PACKET_EDIT.alert(chr, "Didn't send full packet for Auto Assign."); c.disconnect(false, false); return; } - + MapleInventory iv = chr.getInventory(MapleInventoryType.EQUIPPED); Collection equippedC = iv.list(); for (Item item : equippedC) { //selecting the biggest AP value of each stat from each equipped item. @@ -345,6 +341,8 @@ public class AutoAssignHandler extends AbstractMaplePacketHandler { statEqpd[3] += nEquip.getInt(); } + int total = 0; + int extras = 0; for (int i = 0; i < 2; i++) { int type = slea.readInt(); int tempVal = slea.readInt(); diff --git a/wz/Quest.wz/Check.img.xml b/wz/Quest.wz/Check.img.xml index 149571986a..995419f46b 100644 --- a/wz/Quest.wz/Check.img.xml +++ b/wz/Quest.wz/Check.img.xml @@ -22876,12 +22876,6 @@ - - - - - - @@ -22903,12 +22897,6 @@ - - - - - -