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:
ronancpl
2017-06-18 03:19:53 -03:00
parent 81f9226286
commit 42fe74955d
135 changed files with 822 additions and 564 deletions

View File

@@ -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));
}
}

View File

@@ -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) {

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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();

View File

@@ -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);
}
}
}

View File

@@ -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){

View File

@@ -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);