Guild PQ + fixed negative EXP error
Implemented Guild PQ. Fixed a problem introduced earlier where negative EXP would be deemed as "integer overflow", provoking many game breaking issues as result.
This commit is contained in:
@@ -49,7 +49,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
if (slea.available() == 0) { //Cash Shop :)
|
||||
if(!chr.getCashShop().isOpened()) {
|
||||
c.disconnect(false, false);
|
||||
c.disconnect(false, false);
|
||||
return;
|
||||
}
|
||||
String[] socket = c.getChannelServer().getIP().split(":");
|
||||
@@ -84,14 +84,14 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
|
||||
chr.announce(MaplePacketCreator.showWheelsLeft(chr.getItemQuantity(5510000, false)));
|
||||
} else {
|
||||
chr.cancelAllBuffs(false);
|
||||
to = chr.getMap().getReturnMap();
|
||||
to = chr.getWarpMap(chr.getMap().getReturnMapId());
|
||||
chr.setStance(0);
|
||||
}
|
||||
chr.setHp(50);
|
||||
chr.changeMap(to, to.getRandomPlayerSpawnpoint());
|
||||
}
|
||||
} else if (targetid != -1 && chr.isGM()) {
|
||||
MapleMap to = c.getChannelServer().getMapFactory().getMap(targetid);
|
||||
MapleMap to = chr.getWarpMap(targetid);
|
||||
chr.changeMap(to, to.getPortal(0));
|
||||
} else if (targetid != -1 && !chr.isGM()) {//Thanks celino for saving me some time (:
|
||||
final int divi = chr.getMapId() / 100;
|
||||
@@ -124,7 +124,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
}
|
||||
if (warp) {
|
||||
final MapleMap to = c.getChannelServer().getMapFactory().getMap(targetid);
|
||||
final MapleMap to = chr.getWarpMap(targetid);
|
||||
chr.changeMap(to, to.getPortal(0));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -59,7 +59,7 @@ public final class DueyHandler extends AbstractMaplePacketHandler {
|
||||
TOCLIENT_SAMEACC_ERROR(0x0D),
|
||||
TOCLIENT_SUCCESSFULLY_SENT(0x12),
|
||||
TOCLIENT_SUCCESSFUL_MSG(0x17),
|
||||
TOCLIENT_PACKAGE_MSG(0x1B); // Ending byte; 4 if recieved. 3 if delete.
|
||||
TOCLIENT_PACKAGE_MSG(0x1B); // Ending byte; 4 if received. 3 if delete.
|
||||
final byte code;
|
||||
|
||||
private Actions(int code) {
|
||||
|
||||
@@ -37,9 +37,9 @@ public final class GeneralChatHandler extends net.AbstractMaplePacketHandler {
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
String s = slea.readMapleAsciiString();
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
if(chr.getAutobanManager().getLastSpam(7) + 200 > System.currentTimeMillis()) {
|
||||
return;
|
||||
}
|
||||
if(chr.getAutobanManager().getLastSpam(7) + 200 > System.currentTimeMillis()) {
|
||||
return;
|
||||
}
|
||||
if (s.length() > Byte.MAX_VALUE && !chr.isGM()) {
|
||||
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit in General Chat.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + s.length() + "\r\n");
|
||||
@@ -70,13 +70,13 @@ public final class GeneralChatHandler extends net.AbstractMaplePacketHandler {
|
||||
chr.dropMessage(5, "The map you are in is currently muted. Please try again later.");
|
||||
return;
|
||||
}
|
||||
if (!chr.isHidden()){
|
||||
if (!chr.isHidden()) {
|
||||
chr.getMap().broadcastMessage(MaplePacketCreator.getChatText(chr.getId(), s, chr.getWhiteChat(), show));
|
||||
} else {
|
||||
chr.getMap().broadcastGMMessage(MaplePacketCreator.getChatText(chr.getId(), s, chr.getWhiteChat(), show));
|
||||
}
|
||||
}
|
||||
chr.getAutobanManager().spam(7);
|
||||
chr.getAutobanManager().spam(7);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -54,6 +54,8 @@ public final class ItemMoveHandler extends AbstractMaplePacketHandler {
|
||||
} else {
|
||||
MapleInventoryManipulator.move(c, type, src, action);
|
||||
}
|
||||
|
||||
if (c.getPlayer().getMap().getHPDec() > 0) c.getPlayer().resetHpDecreaseTask();
|
||||
c.getPlayer().getAutobanManager().spam(6);
|
||||
}
|
||||
}
|
||||
@@ -38,6 +38,9 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
if(System.currentTimeMillis() - c.getPlayer().getNpcCooldown() < ServerConstants.BLOCK_NPC_RACE_CONDT)
|
||||
return;
|
||||
|
||||
int oid = slea.readInt();
|
||||
MapleMapObject obj = c.getPlayer().getMap().getMapObject(oid);
|
||||
if (obj instanceof MapleNPC) {
|
||||
@@ -45,10 +48,7 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler {
|
||||
if(ServerConstants.USE_DEBUG == true) c.getPlayer().dropMessage(5, "Talking to NPC " + npc.getId());
|
||||
|
||||
if (npc.getId() == 9010009) { //is duey
|
||||
if(System.currentTimeMillis() - c.getPlayer().getDuey() < ServerConstants.BLOCK_DUEY_RACE_COND)
|
||||
return;
|
||||
|
||||
c.getPlayer().setDuey(System.currentTimeMillis());
|
||||
c.getPlayer().setNpcCooldown(System.currentTimeMillis());
|
||||
c.announce(MaplePacketCreator.sendDuey((byte) 8, DueyHandler.loadItems(c.getPlayer())));
|
||||
} else if (npc.hasShop()) {
|
||||
if (c.getPlayer().getShop() != null) {
|
||||
|
||||
@@ -50,7 +50,7 @@ public class PartySearchStartHandler extends AbstractMaplePacketHandler {
|
||||
int jobs = slea.readInt();
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
MapleMap map = chr.getMap();
|
||||
Collection<MapleMapObject> mapobjs = map.getAllPlayer();
|
||||
Collection<MapleMapObject> mapobjs = map.getPlayers();
|
||||
for (MapleMapObject mapobj : mapobjs) {
|
||||
if (chr.getParty().getMembers().size() > 5) {
|
||||
break;
|
||||
|
||||
@@ -267,18 +267,7 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
}
|
||||
|
||||
if (player.getMap().getHPDec() > 0) {
|
||||
final MapleCharacter mc = player;
|
||||
|
||||
ScheduledFuture<?> hpDecreaseTask = TimerManager.getInstance().schedule(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
mc.doHurtHp();
|
||||
}
|
||||
}, 10000);
|
||||
|
||||
mc.setHpDecreaseTask(hpDecreaseTask);
|
||||
}
|
||||
if (player.getMap().getHPDec() > 0) player.resetHpDecreaseTask();
|
||||
|
||||
player.dispelBuffCoupons();
|
||||
player.resetPlayerRates();
|
||||
|
||||
@@ -41,7 +41,7 @@ public final class ReactorHitHandler extends AbstractMaplePacketHandler {
|
||||
int skillid = slea.readInt();
|
||||
MapleReactor reactor = c.getPlayer().getMap().getReactorByOid(oid);
|
||||
if (reactor != null && reactor.isAlive()) {
|
||||
reactor.hitReactor(charPos, stance, skillid, c);
|
||||
reactor.hitReactor(true, charPos, stance, skillid, c);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -540,7 +540,7 @@ public class MapleGuild {
|
||||
this.gp += amount;
|
||||
this.writeToDB(false);
|
||||
this.guildMessage(MaplePacketCreator.updateGP(this.id, this.gp));
|
||||
this.guildMessage(MaplePacketCreator.getGPMessage(amount));
|
||||
this.guildMessage(MaplePacketCreator.getGPMessage(amount));
|
||||
}
|
||||
|
||||
public void removeGP(int amount){
|
||||
|
||||
@@ -111,6 +111,10 @@ public class MaplePartyCharacter {
|
||||
public int getJobId() {
|
||||
return jobid;
|
||||
}
|
||||
|
||||
public int getGuildId() {
|
||||
return character.getGuildId();
|
||||
}
|
||||
|
||||
public void updateDoor(MapleDoor door) {
|
||||
this.door.add(door);
|
||||
|
||||
Reference in New Issue
Block a user