Quest & Command tweak + MapleCashDropFetcher + Cash drop tidyup
Solved a possible exploit on starting/completing non-scripted quests. Added missing drop data for Aran's puppeteer questline. Moved GM tier level of some commands. Applied proper synchronization for BuddyList modules. Issued commands now requires "@" heading for normal players and donators (GM level < 2) and "!" for Jr. GM and above (GM level >= 2). Added custom feature: a message will be sent to acquaintances of a player (friends, family, guild, spouse) when they change/upgrade jobs. Removed cash drop entries from the DB. New tool: MapleCashDropFetcher. Reports on a text file all cash-type drop data on DB.
This commit is contained in:
@@ -32,6 +32,14 @@ import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
|
||||
public final class GeneralChatHandler extends net.AbstractMaplePacketHandler {
|
||||
private static boolean isCommandIssue(char heading, MapleCharacter chr) {
|
||||
if(chr.gmLevel() > 1 && heading == '!') {
|
||||
return true;
|
||||
} else {
|
||||
return heading == '@';
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
String s = slea.readMapleAsciiString();
|
||||
@@ -47,7 +55,7 @@ public final class GeneralChatHandler extends net.AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
char heading = s.charAt(0);
|
||||
if (heading == '!' || heading == '@') {
|
||||
if (isCommandIssue(heading, chr)) {
|
||||
String[] sp = s.split(" ");
|
||||
sp[0] = sp[0].toLowerCase().substring(1);
|
||||
|
||||
|
||||
@@ -44,15 +44,21 @@ public final class QuestActionHandler extends AbstractMaplePacketHandler {
|
||||
if (slea.available() >= 4) {
|
||||
slea.readInt();
|
||||
}
|
||||
quest.start(player, npc);
|
||||
|
||||
if(quest.canStart(player, npc)) {
|
||||
quest.start(player, npc);
|
||||
}
|
||||
} else if (action == 2) { // Complete Quest
|
||||
int npc = slea.readInt();
|
||||
slea.readInt();
|
||||
if (slea.available() >= 2) {
|
||||
int selection = slea.readShort();
|
||||
quest.complete(player, npc, selection);
|
||||
} else {
|
||||
quest.complete(player, npc);
|
||||
|
||||
if(quest.canComplete(player, npc)) {
|
||||
if (slea.available() >= 2) {
|
||||
int selection = slea.readShort();
|
||||
quest.complete(player, npc, selection);
|
||||
} else {
|
||||
quest.complete(player, npc);
|
||||
}
|
||||
}
|
||||
} else if (action == 3) {// forfeit quest
|
||||
quest.forfeit(player);
|
||||
|
||||
Reference in New Issue
Block a user