Handlers read from InPacket instead of SeekableLittleEndianAccessor
This commit is contained in:
@@ -29,6 +29,7 @@ import config.YamlConfig;
|
||||
import constants.game.GameConstants;
|
||||
import constants.skills.*;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.PlayerBuffValueHolder;
|
||||
import scripting.AbstractPlayerInteraction;
|
||||
import server.MapleStatEffect;
|
||||
@@ -524,15 +525,15 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl
|
||||
}
|
||||
}
|
||||
|
||||
protected AttackInfo parseDamage(LittleEndianAccessor lea, MapleCharacter chr, boolean ranged, boolean magic) {
|
||||
protected AttackInfo parseDamage(InPacket p, MapleCharacter chr, boolean ranged, boolean magic) {
|
||||
//2C 00 00 01 91 A1 12 00 A5 57 62 FC E2 75 99 10 00 47 80 01 04 01 C6 CC 02 DD FF 5F 00
|
||||
AttackInfo ret = new AttackInfo();
|
||||
lea.readByte();
|
||||
ret.numAttackedAndDamage = lea.readByte();
|
||||
p.readByte();
|
||||
ret.numAttackedAndDamage = p.readByte();
|
||||
ret.numAttacked = (ret.numAttackedAndDamage >>> 4) & 0xF;
|
||||
ret.numDamage = ret.numAttackedAndDamage & 0xF;
|
||||
ret.allDamage = new HashMap<>();
|
||||
ret.skill = lea.readInt();
|
||||
ret.skill = p.readInt();
|
||||
ret.ranged = ranged;
|
||||
ret.magic = magic;
|
||||
|
||||
@@ -542,45 +543,45 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl
|
||||
}
|
||||
|
||||
if (ret.skill == Evan.ICE_BREATH || ret.skill == Evan.FIRE_BREATH || ret.skill == FPArchMage.BIG_BANG || ret.skill == ILArchMage.BIG_BANG || ret.skill == Bishop.BIG_BANG || ret.skill == Gunslinger.GRENADE || ret.skill == Brawler.CORKSCREW_BLOW || ret.skill == ThunderBreaker.CORKSCREW_BLOW || ret.skill == NightWalker.POISON_BOMB) {
|
||||
ret.charge = lea.readInt();
|
||||
ret.charge = p.readInt();
|
||||
} else {
|
||||
ret.charge = 0;
|
||||
}
|
||||
|
||||
lea.skip(8);
|
||||
ret.display = lea.readByte();
|
||||
ret.direction = lea.readByte();
|
||||
ret.stance = lea.readByte();
|
||||
p.skip(8);
|
||||
ret.display = p.readByte();
|
||||
ret.direction = p.readByte();
|
||||
ret.stance = p.readByte();
|
||||
if (ret.skill == ChiefBandit.MESO_EXPLOSION) {
|
||||
if (ret.numAttackedAndDamage == 0) {
|
||||
lea.skip(10);
|
||||
int bullets = lea.readByte();
|
||||
p.skip(10);
|
||||
int bullets = p.readByte();
|
||||
for (int j = 0; j < bullets; j++) {
|
||||
int mesoid = lea.readInt();
|
||||
lea.skip(1);
|
||||
int mesoid = p.readInt();
|
||||
p.skip(1);
|
||||
ret.allDamage.put(mesoid, null);
|
||||
}
|
||||
return ret;
|
||||
} else {
|
||||
lea.skip(6);
|
||||
p.skip(6);
|
||||
}
|
||||
for (int i = 0; i < ret.numAttacked + 1; i++) {
|
||||
int oid = lea.readInt();
|
||||
int oid = p.readInt();
|
||||
if (i < ret.numAttacked) {
|
||||
lea.skip(12);
|
||||
int bullets = lea.readByte();
|
||||
p.skip(12);
|
||||
int bullets = p.readByte();
|
||||
List<Integer> allDamageNumbers = new ArrayList<>();
|
||||
for (int j = 0; j < bullets; j++) {
|
||||
int damage = lea.readInt();
|
||||
int damage = p.readInt();
|
||||
allDamageNumbers.add(damage);
|
||||
}
|
||||
ret.allDamage.put(oid, allDamageNumbers);
|
||||
lea.skip(4);
|
||||
p.skip(4);
|
||||
} else {
|
||||
int bullets = lea.readByte();
|
||||
int bullets = p.readByte();
|
||||
for (int j = 0; j < bullets; j++) {
|
||||
int mesoid = lea.readInt();
|
||||
lea.skip(1);
|
||||
int mesoid = p.readInt();
|
||||
p.skip(1);
|
||||
ret.allDamage.put(mesoid, null);
|
||||
}
|
||||
}
|
||||
@@ -588,18 +589,18 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl
|
||||
return ret;
|
||||
}
|
||||
if (ranged) {
|
||||
lea.readByte();
|
||||
ret.speed = lea.readByte();
|
||||
lea.readByte();
|
||||
ret.rangedirection = lea.readByte();
|
||||
lea.skip(7);
|
||||
p.readByte();
|
||||
ret.speed = p.readByte();
|
||||
p.readByte();
|
||||
ret.rangedirection = p.readByte();
|
||||
p.skip(7);
|
||||
if (ret.skill == Bowmaster.HURRICANE || ret.skill == Marksman.PIERCING_ARROW || ret.skill == Corsair.RAPID_FIRE || ret.skill == WindArcher.HURRICANE) {
|
||||
lea.skip(4);
|
||||
p.skip(4);
|
||||
}
|
||||
} else {
|
||||
lea.readByte();
|
||||
ret.speed = lea.readByte();
|
||||
lea.skip(4);
|
||||
p.readByte();
|
||||
ret.speed = p.readByte();
|
||||
p.skip(4);
|
||||
}
|
||||
|
||||
// Find the base damage to base futher calculations on.
|
||||
@@ -739,8 +740,8 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl
|
||||
calcDmgMax = fixed;
|
||||
}
|
||||
for (int i = 0; i < ret.numAttacked; i++) {
|
||||
int oid = lea.readInt();
|
||||
lea.skip(14);
|
||||
int oid = p.readInt();
|
||||
p.skip(14);
|
||||
List<Integer> allDamageNumbers = new ArrayList<>();
|
||||
MapleMonster monster = chr.getMap().getMonsterByOid(oid);
|
||||
|
||||
@@ -814,7 +815,7 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl
|
||||
}
|
||||
|
||||
for (int j = 0; j < ret.numDamage; j++) {
|
||||
int damage = lea.readInt();
|
||||
int damage = p.readInt();
|
||||
long hitDmgMax = calcDmgMax;
|
||||
if(ret.skill == Buccaneer.BARRAGE || ret.skill == ThunderBreaker.BARRAGE) {
|
||||
if(j > 3)
|
||||
@@ -857,13 +858,13 @@ public abstract class AbstractDealDamageHandler extends AbstractMaplePacketHandl
|
||||
allDamageNumbers.add(damage);
|
||||
}
|
||||
if (ret.skill != Corsair.RAPID_FIRE || ret.skill != Aran.HIDDEN_FULL_DOUBLE || ret.skill != Aran.HIDDEN_FULL_TRIPLE || ret.skill != Aran.HIDDEN_OVER_DOUBLE || ret.skill != Aran.HIDDEN_OVER_TRIPLE) {
|
||||
lea.skip(4);
|
||||
p.skip(4);
|
||||
}
|
||||
ret.allDamage.put(oid, allDamageNumbers);
|
||||
}
|
||||
if (ret.skill == NightWalker.POISON_BOMB) { // Poison Bomb
|
||||
lea.skip(4);
|
||||
ret.position.setLocation(lea.readShort(), lea.readShort());
|
||||
p.skip(4);
|
||||
ret.position.setLocation(p.readShort(), p.readShort());
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.AnimatedMapleMapObject;
|
||||
import server.movement.AbsoluteLifeMovement;
|
||||
import server.movement.ChangeEquip;
|
||||
@@ -38,23 +39,23 @@ import tools.exceptions.EmptyMovementException;
|
||||
|
||||
public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
protected List<LifeMovementFragment> parseMovement(LittleEndianAccessor lea) throws EmptyMovementException {
|
||||
protected List<LifeMovementFragment> parseMovement(InPacket p) throws EmptyMovementException {
|
||||
List<LifeMovementFragment> res = new ArrayList<>();
|
||||
byte numCommands = lea.readByte();
|
||||
if (numCommands < 1) throw new EmptyMovementException(lea);
|
||||
byte numCommands = p.readByte();
|
||||
if (numCommands < 1) throw new EmptyMovementException(p);
|
||||
for (byte i = 0; i < numCommands; i++) {
|
||||
byte command = lea.readByte();
|
||||
byte command = p.readByte();
|
||||
switch (command) {
|
||||
case 0: // normal move
|
||||
case 5:
|
||||
case 17: { // Float
|
||||
short xpos = lea.readShort();
|
||||
short ypos = lea.readShort();
|
||||
short xwobble = lea.readShort();
|
||||
short ywobble = lea.readShort();
|
||||
short fh = lea.readShort();
|
||||
byte newstate = lea.readByte();
|
||||
short duration = lea.readShort();
|
||||
short xpos = p.readShort();
|
||||
short ypos = p.readShort();
|
||||
short xwobble = p.readShort();
|
||||
short ywobble = p.readShort();
|
||||
short fh = p.readShort();
|
||||
byte newstate = p.readByte();
|
||||
short duration = p.readShort();
|
||||
AbsoluteLifeMovement alm = new AbsoluteLifeMovement(command, new Point(xpos, ypos), duration, newstate);
|
||||
alm.setFh(fh);
|
||||
alm.setPixelsPerSecond(new Point(xwobble, ywobble));
|
||||
@@ -71,10 +72,10 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH
|
||||
case 19: // Springs on maps
|
||||
case 20: // Aran Combat Step
|
||||
case 22: {
|
||||
short xpos = lea.readShort();
|
||||
short ypos = lea.readShort();
|
||||
byte newstate = lea.readByte();
|
||||
short duration = lea.readShort();
|
||||
short xpos = p.readShort();
|
||||
short ypos = p.readShort();
|
||||
byte newstate = p.readByte();
|
||||
short duration = p.readShort();
|
||||
RelativeLifeMovement rlm = new RelativeLifeMovement(command, new Point(xpos, ypos), duration, newstate);
|
||||
res.add(rlm);
|
||||
break;
|
||||
@@ -87,21 +88,21 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH
|
||||
case 11: //chair
|
||||
{
|
||||
// case 14: {
|
||||
short xpos = lea.readShort();
|
||||
short ypos = lea.readShort();
|
||||
short xwobble = lea.readShort();
|
||||
short ywobble = lea.readShort();
|
||||
byte newstate = lea.readByte();
|
||||
short xpos = p.readShort();
|
||||
short ypos = p.readShort();
|
||||
short xwobble = p.readShort();
|
||||
short ywobble = p.readShort();
|
||||
byte newstate = p.readByte();
|
||||
TeleportMovement tm = new TeleportMovement(command, new Point(xpos, ypos), newstate);
|
||||
tm.setPixelsPerSecond(new Point(xwobble, ywobble));
|
||||
res.add(tm);
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
lea.skip(9); // jump down (?)
|
||||
p.skip(9); // jump down (?)
|
||||
break;
|
||||
case 10: // Change Equip
|
||||
res.add(new ChangeEquip(lea.readByte()));
|
||||
res.add(new ChangeEquip(p.readByte()));
|
||||
break;
|
||||
/*case 11: { // Chair
|
||||
short xpos = lea.readShort();
|
||||
@@ -115,14 +116,14 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH
|
||||
break;
|
||||
}*/
|
||||
case 15: {
|
||||
short xpos = lea.readShort();
|
||||
short ypos = lea.readShort();
|
||||
short xwobble = lea.readShort();
|
||||
short ywobble = lea.readShort();
|
||||
short fh = lea.readShort();
|
||||
short ofh = lea.readShort();
|
||||
byte newstate = lea.readByte();
|
||||
short duration = lea.readShort();
|
||||
short xpos = p.readShort();
|
||||
short ypos = p.readShort();
|
||||
short xwobble = p.readShort();
|
||||
short ywobble = p.readShort();
|
||||
short fh = p.readShort();
|
||||
short ofh = p.readShort();
|
||||
byte newstate = p.readByte();
|
||||
short duration = p.readShort();
|
||||
JumpDownMovement jdm = new JumpDownMovement(command, new Point(xpos, ypos), duration, newstate);
|
||||
jdm.setFh(fh);
|
||||
jdm.setPixelsPerSecond(new Point(xwobble, ywobble));
|
||||
@@ -135,39 +136,39 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH
|
||||
short unk = lea.readShort();
|
||||
AranMovement am = new AranMovement(command, null, unk, newstate);
|
||||
res.add(am);*/
|
||||
lea.skip(3);
|
||||
p.skip(3);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
System.out.println("Unhandled Case:" + command);
|
||||
throw new EmptyMovementException(lea);
|
||||
throw new EmptyMovementException(p);
|
||||
}
|
||||
}
|
||||
|
||||
if (res.isEmpty()) {
|
||||
throw new EmptyMovementException(lea);
|
||||
throw new EmptyMovementException(p);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
protected void updatePosition(LittleEndianAccessor lea, AnimatedMapleMapObject target, int yOffset) throws EmptyMovementException {
|
||||
protected void updatePosition(InPacket p, AnimatedMapleMapObject target, int yOffset) throws EmptyMovementException {
|
||||
|
||||
byte numCommands = lea.readByte();
|
||||
if (numCommands < 1) throw new EmptyMovementException(lea);
|
||||
byte numCommands = p.readByte();
|
||||
if (numCommands < 1) throw new EmptyMovementException(p);
|
||||
for (byte i = 0; i < numCommands; i++) {
|
||||
byte command = lea.readByte();
|
||||
byte command = p.readByte();
|
||||
switch (command) {
|
||||
case 0: // normal move
|
||||
case 5:
|
||||
case 17: { // Float
|
||||
//Absolute movement - only this is important for the server, other movement can be passed to the client
|
||||
short xpos = lea.readShort(); //is signed fine here?
|
||||
short ypos = lea.readShort();
|
||||
short xpos = p.readShort(); //is signed fine here?
|
||||
short ypos = p.readShort();
|
||||
target.setPosition(new Point(xpos, ypos + yOffset));
|
||||
lea.skip(6); //xwobble = lea.readShort(); ywobble = lea.readShort(); fh = lea.readShort();
|
||||
byte newstate = lea.readByte();
|
||||
p.skip(6); //xwobble = lea.readShort(); ywobble = lea.readShort(); fh = lea.readShort();
|
||||
byte newstate = p.readByte();
|
||||
target.setStance(newstate);
|
||||
lea.readShort(); //duration
|
||||
p.readShort(); //duration
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
@@ -181,10 +182,10 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH
|
||||
case 20: // Aran Combat Step
|
||||
case 22: {
|
||||
//Relative movement - server only cares about stance
|
||||
lea.skip(4); //xpos = lea.readShort(); ypos = lea.readShort();
|
||||
byte newstate = lea.readByte();
|
||||
p.skip(4); //xpos = lea.readShort(); ypos = lea.readShort();
|
||||
byte newstate = p.readByte();
|
||||
target.setStance(newstate);
|
||||
lea.readShort(); //duration
|
||||
p.readShort(); //duration
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
@@ -196,17 +197,17 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH
|
||||
{
|
||||
// case 14: {
|
||||
//Teleport movement - same as above
|
||||
lea.skip(8); //xpos = lea.readShort(); ypos = lea.readShort(); xwobble = lea.readShort(); ywobble = lea.readShort();
|
||||
byte newstate = lea.readByte();
|
||||
p.skip(8); //xpos = lea.readShort(); ypos = lea.readShort(); xwobble = lea.readShort(); ywobble = lea.readShort();
|
||||
byte newstate = p.readByte();
|
||||
target.setStance(newstate);
|
||||
break;
|
||||
}
|
||||
case 14:
|
||||
lea.skip(9); // jump down (?)
|
||||
p.skip(9); // jump down (?)
|
||||
break;
|
||||
case 10: // Change Equip
|
||||
//ignored server-side
|
||||
lea.readByte();
|
||||
p.readByte();
|
||||
break;
|
||||
/*case 11: { // Chair
|
||||
short xpos = lea.readShort();
|
||||
@@ -221,10 +222,10 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH
|
||||
}*/
|
||||
case 15: {
|
||||
//Jump down movement - stance only
|
||||
lea.skip(12); //short xpos = lea.readShort(); ypos = lea.readShort(); xwobble = lea.readShort(); ywobble = lea.readShort(); fh = lea.readShort(); ofh = lea.readShort();
|
||||
byte newstate = lea.readByte();
|
||||
p.skip(12); //short xpos = lea.readShort(); ypos = lea.readShort(); xwobble = lea.readShort(); ywobble = lea.readShort(); fh = lea.readShort(); ofh = lea.readShort();
|
||||
byte newstate = p.readByte();
|
||||
target.setStance(newstate);
|
||||
lea.readShort(); // duration
|
||||
p.readShort(); // duration
|
||||
break;
|
||||
}
|
||||
case 21: {//Causes aran to do weird stuff when attacking o.o
|
||||
@@ -232,12 +233,12 @@ public abstract class AbstractMovementPacketHandler extends AbstractMaplePacketH
|
||||
short unk = lea.readShort();
|
||||
AranMovement am = new AranMovement(command, null, unk, newstate);
|
||||
res.add(am);*/
|
||||
lea.skip(3);
|
||||
p.skip(3);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
System.out.println("Unhandled Case:" + command);
|
||||
throw new EmptyMovementException(lea);
|
||||
throw new EmptyMovementException(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ import client.MapleFamily;
|
||||
import client.MapleFamilyEntry;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteResult;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
|
||||
@@ -34,7 +35,6 @@ import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -48,14 +48,14 @@ import java.sql.SQLException;
|
||||
public final class AcceptFamilyHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) {
|
||||
return;
|
||||
}
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
int inviterId = slea.readInt();
|
||||
slea.readMapleAsciiString();
|
||||
boolean accept = slea.readByte() != 0;
|
||||
int inviterId = p.readInt();
|
||||
p.readString();
|
||||
boolean accept = p.readByte() != 0;
|
||||
// String inviterName = slea.readMapleAsciiString();
|
||||
MapleCharacter inviter = c.getWorldServer().getPlayerStorage().getCharacterById(inviterId);
|
||||
if(inviter != null) {
|
||||
|
||||
@@ -3,10 +3,10 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.packet.Packet;
|
||||
import tools.LogHelper;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -15,14 +15,14 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public class AdminChatHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if (!c.getPlayer().isGM()) {//if ( (signed int)CWvsContext::GetAdminLevel((void *)v294) > 2 )
|
||||
return;
|
||||
}
|
||||
byte mode = slea.readByte();
|
||||
byte mode = p.readByte();
|
||||
//not saving slides...
|
||||
String message = slea.readMapleAsciiString();
|
||||
Packet packet = PacketCreator.serverNotice(slea.readByte(), message);//maybe I should make a check for the slea.readByte()... but I just hope gm's don't fuck things up :)
|
||||
String message = p.readString();
|
||||
Packet packet = PacketCreator.serverNotice(p.readByte(), message);//maybe I should make a check for the slea.readByte()... but I just hope gm's don't fuck things up :)
|
||||
switch (mode) {
|
||||
case 0:// /alertall, /noticeall, /slideall
|
||||
c.getWorldServer().broadcastPacket(packet);
|
||||
|
||||
@@ -27,6 +27,7 @@ import client.inventory.MapleInventory;
|
||||
import client.inventory.MapleInventoryType;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.MapleItemInformationProvider;
|
||||
import server.life.MapleLifeFactory;
|
||||
import server.life.MapleMonster;
|
||||
@@ -35,7 +36,6 @@ import server.maps.MapleMapObjectType;
|
||||
import server.quest.MapleQuest;
|
||||
import tools.PacketCreator;
|
||||
import tools.Randomizer;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
@@ -43,16 +43,16 @@ import java.util.List;
|
||||
public final class AdminCommandHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if (!c.getPlayer().isGM()) {
|
||||
return;
|
||||
}
|
||||
byte mode = slea.readByte();
|
||||
byte mode = p.readByte();
|
||||
String victim;
|
||||
MapleCharacter target;
|
||||
switch (mode) {
|
||||
case 0x00: // Level1~Level8 & Package1~Package2
|
||||
int[][] toSpawn = MapleItemInformationProvider.getInstance().getSummonMobs(slea.readInt());
|
||||
int[][] toSpawn = MapleItemInformationProvider.getInstance().getSummonMobs(p.readInt());
|
||||
for (int[] toSpawnChild : toSpawn) {
|
||||
if (Randomizer.nextInt(100) < toSpawnChild[1]) {
|
||||
c.getPlayer().getMap().spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(toSpawnChild[0]), c.getPlayer().getPosition());
|
||||
@@ -61,7 +61,7 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
break;
|
||||
case 0x01: { // /d (inv)
|
||||
byte type = slea.readByte();
|
||||
byte type = p.readByte();
|
||||
MapleInventory in = c.getPlayer().getInventory(MapleInventoryType.getByType(type));
|
||||
for (short i = 1; i <= in.getSlotLimit(); i++) { //TODO What is the point of this loop?
|
||||
if (in.getItem(i) != null) {
|
||||
@@ -72,16 +72,16 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
|
||||
break;
|
||||
}
|
||||
case 0x02: // Exp
|
||||
c.getPlayer().setExp(slea.readInt());
|
||||
c.getPlayer().setExp(p.readInt());
|
||||
break;
|
||||
case 0x03: // /ban <name>
|
||||
c.getPlayer().yellowMessage("Please use !ban <IGN> <Reason>");
|
||||
break;
|
||||
case 0x04: // /block <name> <duration (in days)> <HACK/BOT/AD/HARASS/CURSE/SCAM/MISCONDUCT/SELL/ICASH/TEMP/GM/IPROGRAM/MEGAPHONE>
|
||||
victim = slea.readMapleAsciiString();
|
||||
int type = slea.readByte(); //reason
|
||||
int duration = slea.readInt();
|
||||
String description = slea.readMapleAsciiString();
|
||||
victim = p.readString();
|
||||
int type = p.readByte(); //reason
|
||||
int duration = p.readInt();
|
||||
String description = p.readString();
|
||||
String reason = c.getPlayer().getName() + " used /ban to ban";
|
||||
target = c.getChannelServer().getPlayerStorage().getCharacterByName(victim);
|
||||
if (target != null) {
|
||||
@@ -102,10 +102,10 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
break;
|
||||
case 0x10: // /h, information added by vana -- <and tele mode f1> ... hide ofcourse
|
||||
c.getPlayer().Hide(slea.readByte() == 1);
|
||||
c.getPlayer().Hide(p.readByte() == 1);
|
||||
break;
|
||||
case 0x11: // Entering a map
|
||||
switch (slea.readByte()) {
|
||||
switch (p.readByte()) {
|
||||
case 0:// /u
|
||||
StringBuilder sb = new StringBuilder("USERS ON THIS MAP: ");
|
||||
for (MapleCharacter mc : c.getPlayer().getMap().getCharacters()) {
|
||||
@@ -119,13 +119,13 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
break;
|
||||
case 0x12: // Send
|
||||
victim = slea.readMapleAsciiString();
|
||||
int mapId = slea.readInt();
|
||||
victim = p.readString();
|
||||
int mapId = p.readInt();
|
||||
c.getChannelServer().getPlayerStorage().getCharacterByName(victim).changeMap(c.getChannelServer().getMapFactory().getMap(mapId));
|
||||
break;
|
||||
case 0x15: // Kill
|
||||
int mobToKill = slea.readInt();
|
||||
int amount = slea.readInt();
|
||||
int mobToKill = p.readInt();
|
||||
int amount = p.readInt();
|
||||
List<MapleMapObject> monsterx = c.getPlayer().getMap().getMapObjectsInRange(c.getPlayer().getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER));
|
||||
for (int x = 0; x < amount; x++) {
|
||||
MapleMonster monster = (MapleMonster) monsterx.get(x);
|
||||
@@ -135,17 +135,17 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
break;
|
||||
case 0x16: // Questreset
|
||||
MapleQuest.getInstance(slea.readShort()).reset(c.getPlayer());
|
||||
MapleQuest.getInstance(p.readShort()).reset(c.getPlayer());
|
||||
break;
|
||||
case 0x17: // Summon
|
||||
int mobId = slea.readInt();
|
||||
int quantity = slea.readInt();
|
||||
int mobId = p.readInt();
|
||||
int quantity = p.readInt();
|
||||
for (int i = 0; i < quantity; i++) {
|
||||
c.getPlayer().getMap().spawnMonsterOnGroundBelow(MapleLifeFactory.getMonster(mobId), c.getPlayer().getPosition());
|
||||
}
|
||||
break;
|
||||
case 0x18: // Maple & Mobhp
|
||||
int mobHp = slea.readInt();
|
||||
int mobHp = p.readInt();
|
||||
c.getPlayer().dropMessage("Monsters HP");
|
||||
List<MapleMapObject> monsters = c.getPlayer().getMap().getMapObjectsInRange(c.getPlayer().getPosition(), Double.POSITIVE_INFINITY, Arrays.asList(MapleMapObjectType.MONSTER));
|
||||
for (MapleMapObject mobs : monsters) {
|
||||
@@ -156,8 +156,8 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
break;
|
||||
case 0x1E: // Warn
|
||||
victim = slea.readMapleAsciiString();
|
||||
String message = slea.readMapleAsciiString();
|
||||
victim = p.readString();
|
||||
String message = p.readString();
|
||||
target = c.getChannelServer().getPlayerStorage().getCharacterByName(victim);
|
||||
if (target != null) {
|
||||
target.getClient().sendPacket(PacketCreator.serverNotice(1, message));
|
||||
@@ -169,14 +169,14 @@ public final class AdminCommandHandler extends AbstractMaplePacketHandler {
|
||||
case 0x24:// /Artifact Ranking
|
||||
break;
|
||||
case 0x77: //Testing purpose
|
||||
if (slea.available() == 4) {
|
||||
System.out.println(slea.readInt());
|
||||
} else if (slea.available() == 2) {
|
||||
System.out.println(slea.readShort());
|
||||
if (p.available() == 4) {
|
||||
System.out.println(p.readInt());
|
||||
} else if (p.available() == 2) {
|
||||
System.out.println(p.readShort());
|
||||
}
|
||||
break;
|
||||
default:
|
||||
System.out.println("New GM packet encountered (MODE : " + mode + ": " + slea.toString());
|
||||
System.out.println("New GM packet encountered (MODE : " + mode + ": " + p.toString());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,12 +23,12 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public final class AdminLogHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
//harhar
|
||||
}
|
||||
}
|
||||
@@ -24,13 +24,13 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import net.server.guild.GuildPackets;
|
||||
import net.server.guild.MapleAlliance;
|
||||
import net.server.guild.MapleGuild;
|
||||
import net.server.guild.MapleGuildCharacter;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -39,7 +39,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleAlliance alliance = null;
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
|
||||
@@ -52,7 +52,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
|
||||
alliance = chr.getAlliance();
|
||||
}
|
||||
|
||||
byte b = slea.readByte();
|
||||
byte b = p.readByte();
|
||||
if (alliance == null) {
|
||||
if (b != 4) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
@@ -85,7 +85,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
|
||||
break;
|
||||
}
|
||||
case 0x03: // Send Invite
|
||||
String guildName = slea.readMapleAsciiString();
|
||||
String guildName = p.readString();
|
||||
|
||||
if (alliance.getGuilds().size() == alliance.getCapacity()) {
|
||||
chr.dropMessage(5, "Your alliance cannot comport any more guilds at the moment.");
|
||||
@@ -100,7 +100,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
int allianceid = slea.readInt();
|
||||
int allianceid = p.readInt();
|
||||
//slea.readMapleAsciiString(); //recruiter's guild name
|
||||
|
||||
alliance = Server.getInstance().getAlliance(allianceid);
|
||||
@@ -138,8 +138,8 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
|
||||
break;
|
||||
}
|
||||
case 0x06: { // Expel Guild
|
||||
int guildid = slea.readInt();
|
||||
int allianceid = slea.readInt();
|
||||
int guildid = p.readInt();
|
||||
int allianceid = p.readInt();
|
||||
if (chr.getGuild().getAllianceId() == 0 || chr.getGuild().getAllianceId() != allianceid) {
|
||||
return;
|
||||
}
|
||||
@@ -158,7 +158,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
|
||||
if (chr.getGuild().getAllianceId() == 0 || chr.getGuildId() < 1) {
|
||||
return;
|
||||
}
|
||||
int victimid = slea.readInt();
|
||||
int victimid = p.readInt();
|
||||
MapleCharacter player = Server.getInstance().getWorld(c.getWorld()).getPlayerStorage().getCharacterById(victimid);
|
||||
if (player.getAllianceRank() != 2) {
|
||||
return;
|
||||
@@ -171,14 +171,14 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
|
||||
case 0x08:
|
||||
String[] ranks = new String[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
ranks[i] = slea.readMapleAsciiString();
|
||||
ranks[i] = p.readString();
|
||||
}
|
||||
Server.getInstance().setAllianceRanks(alliance.getId(), ranks);
|
||||
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.changeAllianceRankTitle(alliance.getId(), ranks), -1, -1);
|
||||
break;
|
||||
case 0x09: {
|
||||
int int1 = slea.readInt();
|
||||
byte byte1 = slea.readByte();
|
||||
int int1 = p.readInt();
|
||||
byte byte1 = p.readByte();
|
||||
|
||||
//Server.getInstance().allianceMessage(alliance.getId(), sendChangeRank(chr.getGuild().getAllianceId(), chr.getId(), int1, byte1), -1, -1);
|
||||
MapleCharacter player = Server.getInstance().getWorld(c.getWorld()).getPlayerStorage().getCharacterById(int1);
|
||||
@@ -187,7 +187,7 @@ public final class AllianceOperationHandler extends AbstractMaplePacketHandler {
|
||||
break;
|
||||
}
|
||||
case 0x0A:
|
||||
String notice = slea.readMapleAsciiString();
|
||||
String notice = p.readString();
|
||||
Server.getInstance().setAllianceNotice(alliance.getId(), notice);
|
||||
Server.getInstance().allianceMessage(alliance.getId(), GuildPackets.allianceNotice(alliance.getId(), notice), -1, -1);
|
||||
|
||||
|
||||
@@ -27,12 +27,12 @@ import client.SkillFactory;
|
||||
import constants.game.GameConstants;
|
||||
import constants.skills.Aran;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public class AranComboHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
final MapleCharacter player = c.getPlayer();
|
||||
int skillLevel = player.getSkillLevel(SkillFactory.getSkill(Aran.COMBO_ABILITY));
|
||||
if (GameConstants.isAran(player.getJob().getId()) && (skillLevel > 0 || player.getJob().getId() == 2000)) {
|
||||
|
||||
@@ -23,20 +23,20 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.life.MapleMonster;
|
||||
import server.maps.MapleMap;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import client.MapleCharacter;
|
||||
|
||||
public final class AutoAggroHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter player = c.getPlayer();
|
||||
if (player.isHidden()) return; // Don't auto aggro GM's in hide...
|
||||
|
||||
MapleMap map = player.getMap();
|
||||
int oid = slea.readInt();
|
||||
int oid = p.readInt();
|
||||
|
||||
MapleMonster monster = map.getMonsterByOid(oid);
|
||||
if (monster != null) {
|
||||
|
||||
@@ -24,7 +24,7 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import client.processor.stat.AssignAPProcessor;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -33,7 +33,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public class AutoAssignHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
AssignAPProcessor.APAutoAssignAction(slea, c);
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
AssignAPProcessor.APAutoAssignAction(p, c);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,9 +24,9 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.guild.GuildPackets;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -40,22 +40,22 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if (c.getPlayer().getGuildId() < 1) {
|
||||
return;
|
||||
}
|
||||
byte mode = slea.readByte();
|
||||
byte mode = p.readByte();
|
||||
int localthreadid = 0;
|
||||
switch (mode) {
|
||||
case 0:
|
||||
boolean bEdit = slea.readByte() == 1;
|
||||
boolean bEdit = p.readByte() == 1;
|
||||
if (bEdit) {
|
||||
localthreadid = slea.readInt();
|
||||
localthreadid = p.readInt();
|
||||
}
|
||||
boolean bNotice = slea.readByte() == 1;
|
||||
String title = correctLength(slea.readMapleAsciiString(), 25);
|
||||
String text = correctLength(slea.readMapleAsciiString(), 600);
|
||||
int icon = slea.readInt();
|
||||
boolean bNotice = p.readByte() == 1;
|
||||
String title = correctLength(p.readString(), 25);
|
||||
String text = correctLength(p.readString(), 600);
|
||||
int icon = p.readInt();
|
||||
if (icon >= 0x64 && icon <= 0x6a) {
|
||||
if (!c.getPlayer().haveItemWithId(5290000 + icon - 0x64, false)) {
|
||||
return;
|
||||
@@ -70,25 +70,25 @@ public final class BBSOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
localthreadid = slea.readInt();
|
||||
localthreadid = p.readInt();
|
||||
deleteBBSThread(c, localthreadid);
|
||||
break;
|
||||
case 2:
|
||||
int start = slea.readInt();
|
||||
int start = p.readInt();
|
||||
listBBSThreads(c, start * 10);
|
||||
break;
|
||||
case 3: // list thread + reply, following by id (int)
|
||||
localthreadid = slea.readInt();
|
||||
localthreadid = p.readInt();
|
||||
displayThread(c, localthreadid);
|
||||
break;
|
||||
case 4: // reply
|
||||
localthreadid = slea.readInt();
|
||||
text = correctLength(slea.readMapleAsciiString(), 25);
|
||||
localthreadid = p.readInt();
|
||||
text = correctLength(p.readString(), 25);
|
||||
newBBSReply(c, localthreadid, text);
|
||||
break;
|
||||
case 5: // delete reply
|
||||
slea.readInt(); // we don't use this
|
||||
int replyid = slea.readInt();
|
||||
p.readInt(); // we don't use this
|
||||
int replyid = p.readInt();
|
||||
deleteBBSReply(c, replyid);
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -25,8 +25,8 @@ import client.MapleClient;
|
||||
import constants.skills.DarkKnight;
|
||||
import java.util.Collection;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleSummon;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -35,10 +35,10 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class BeholderHandler extends AbstractMaplePacketHandler {//Summon Skills noobs
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
//System.out.println(slea.toString());
|
||||
Collection<MapleSummon> summons = c.getPlayer().getSummonsValues();
|
||||
int oid = slea.readInt();
|
||||
int oid = p.readInt();
|
||||
MapleSummon summon = null;
|
||||
for (MapleSummon sum : summons) {
|
||||
if (sum.getObjectId() == oid) {
|
||||
@@ -46,11 +46,11 @@ public final class BeholderHandler extends AbstractMaplePacketHandler {//Summon
|
||||
}
|
||||
}
|
||||
if (summon != null) {
|
||||
int skillId = slea.readInt();
|
||||
int skillId = p.readInt();
|
||||
if (skillId == DarkKnight.AURA_OF_BEHOLDER) {
|
||||
slea.readShort(); //Not sure.
|
||||
p.readShort(); //Not sure.
|
||||
} else if (skillId == DarkKnight.HEX_OF_BEHOLDER) {
|
||||
slea.readByte(); //Not sure.
|
||||
p.readByte(); //Not sure.
|
||||
} //show to others here
|
||||
} else {
|
||||
c.getPlayer().clearSummons();
|
||||
|
||||
@@ -25,10 +25,10 @@ import client.*;
|
||||
import client.BuddyList.BuddyAddResult;
|
||||
import client.BuddyList.BuddyOperation;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.world.World;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -76,13 +76,13 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int mode = slea.readByte();
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
int mode = p.readByte();
|
||||
MapleCharacter player = c.getPlayer();
|
||||
BuddyList buddylist = player.getBuddylist();
|
||||
if (mode == 1) { // add
|
||||
String addName = slea.readMapleAsciiString();
|
||||
String group = slea.readMapleAsciiString();
|
||||
String addName = p.readString();
|
||||
String group = p.readString();
|
||||
if (group.length() > 16 || addName.length() < 4 || addName.length() > 13) {
|
||||
return; //hax.
|
||||
}
|
||||
@@ -165,7 +165,7 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.updateBuddylist(buddylist.getBuddies()));
|
||||
}
|
||||
} else if (mode == 2) { // accept buddy
|
||||
int otherCid = slea.readInt();
|
||||
int otherCid = p.readInt();
|
||||
if (!buddylist.isFull()) {
|
||||
try {
|
||||
int channel = c.getWorldServer().find(otherCid);//worldInterface.find(otherCid);
|
||||
@@ -196,7 +196,7 @@ public class BuddylistModifyHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
nextPendingRequest(c);
|
||||
} else if (mode == 3) { // delete
|
||||
int otherCid = slea.readInt();
|
||||
int otherCid = p.readInt();
|
||||
player.deleteBuddy(otherCid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,14 +26,14 @@ import client.SkillFactory;
|
||||
import constants.skills.*;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.MaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class CancelBuffHandler extends AbstractMaplePacketHandler implements MaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int sourceid = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int sourceid = p.readInt();
|
||||
|
||||
switch (sourceid) {
|
||||
case FPArchMage.BIG_BANG:
|
||||
|
||||
@@ -24,13 +24,13 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import client.MapleCharacter;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public final class CancelChairHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int id = slea.readShort();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int id = p.readShort();
|
||||
MapleCharacter mc = c.getPlayer();
|
||||
|
||||
if (id >= mc.getMap().getSeats()) {
|
||||
|
||||
@@ -23,12 +23,12 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public final class CancelDebuffHandler extends AbstractMaplePacketHandler {//TIP: BAD STUFF LOL!
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
/*List<MapleDisease> diseases = c.getPlayer().getDiseases();
|
||||
List<MapleDisease> diseases_ = new ArrayList<MapleDisease>();
|
||||
for (MapleDisease disease : diseases) {
|
||||
|
||||
@@ -23,14 +23,14 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.MapleItemInformationProvider;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class CancelItemEffectHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int itemId = -slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int itemId = -p.readInt();
|
||||
if (MapleItemInformationProvider.getInstance().noCancelMouse(itemId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import config.YamlConfig;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import server.CashShop;
|
||||
import server.CashShop.CashItem;
|
||||
@@ -40,7 +41,6 @@ import server.MapleItemInformationProvider;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.sql.SQLException;
|
||||
import java.util.Calendar;
|
||||
@@ -50,7 +50,7 @@ import java.util.Map;
|
||||
public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
CashShop cs = chr.getCashShop();
|
||||
|
||||
@@ -61,11 +61,11 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
if (c.tryacquireClient()) { // thanks Thora for finding out an exploit within cash operations
|
||||
try {
|
||||
final int action = slea.readByte();
|
||||
final int action = p.readByte();
|
||||
if (action == 0x03 || action == 0x1E) {
|
||||
slea.readByte();
|
||||
final int useNX = slea.readInt();
|
||||
final int snCS = slea.readInt();
|
||||
p.readByte();
|
||||
final int useNX = p.readInt();
|
||||
final int snCS = p.readInt();
|
||||
CashItem cItem = CashItemFactory.getItem(snCS);
|
||||
if (!canBuy(chr, cItem, cs.getCash(useNX))) {
|
||||
FilePrinter.printError(FilePrinter.ITEM, "Denied to sell cash item with SN " + snCS); // preventing NPE here thanks to MedicOP
|
||||
@@ -101,10 +101,10 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
c.sendPacket(PacketCreator.showCash(chr));
|
||||
} else if (action == 0x04) {//TODO check for gender
|
||||
int birthday = slea.readInt();
|
||||
CashItem cItem = CashItemFactory.getItem(slea.readInt());
|
||||
Map<String, String> recipient = MapleCharacter.getCharacterFromDatabase(slea.readMapleAsciiString());
|
||||
String message = slea.readMapleAsciiString();
|
||||
int birthday = p.readInt();
|
||||
CashItem cItem = CashItemFactory.getItem(p.readInt());
|
||||
Map<String, String> recipient = MapleCharacter.getCharacterFromDatabase(p.readString());
|
||||
String message = p.readString();
|
||||
if (!canBuy(chr, cItem, cs.getCash(4)) || message.length() < 1 || message.length() > 73) {
|
||||
c.enableCSActions();
|
||||
return;
|
||||
@@ -133,7 +133,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
} else if (action == 0x05) { // Modify wish list
|
||||
cs.clearWishList();
|
||||
for (byte i = 0; i < 10; i++) {
|
||||
int sn = slea.readInt();
|
||||
int sn = p.readInt();
|
||||
CashItem cItem = CashItemFactory.getItem(sn);
|
||||
if (cItem != null && cItem.isOnSale() && sn != 0) {
|
||||
cs.addToWishList(sn);
|
||||
@@ -141,11 +141,11 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
c.sendPacket(PacketCreator.showWishList(chr, true));
|
||||
} else if (action == 0x06) { // Increase Inventory Slots
|
||||
slea.skip(1);
|
||||
int cash = slea.readInt();
|
||||
byte mode = slea.readByte();
|
||||
p.skip(1);
|
||||
int cash = p.readInt();
|
||||
byte mode = p.readByte();
|
||||
if (mode == 0) {
|
||||
byte type = slea.readByte();
|
||||
byte type = p.readByte();
|
||||
if (cs.getCash(cash) < 4000) {
|
||||
c.enableCSActions();
|
||||
return;
|
||||
@@ -163,7 +163,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots of type " + type + " for player " + MapleCharacter.makeMapleReadable(chr.getName()));
|
||||
}
|
||||
} else {
|
||||
CashItem cItem = CashItemFactory.getItem(slea.readInt());
|
||||
CashItem cItem = CashItemFactory.getItem(p.readInt());
|
||||
int type = (cItem.getItemId() - 9110000) / 1000;
|
||||
if (!canBuy(chr, cItem, cs.getCash(cash))) {
|
||||
c.enableCSActions();
|
||||
@@ -183,9 +183,9 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
}
|
||||
} else if (action == 0x07) { // Increase Storage Slots
|
||||
slea.skip(1);
|
||||
int cash = slea.readInt();
|
||||
byte mode = slea.readByte();
|
||||
p.skip(1);
|
||||
int cash = p.readInt();
|
||||
byte mode = p.readByte();
|
||||
if (mode == 0) {
|
||||
if (cs.getCash(cash) < 4000) {
|
||||
c.enableCSActions();
|
||||
@@ -207,7 +207,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
FilePrinter.printError(FilePrinter.CASHITEM_BOUGHT, "Could not add " + qty + " slots to " + MapleCharacter.makeMapleReadable(chr.getName()) + "'s account.");
|
||||
}
|
||||
} else {
|
||||
CashItem cItem = CashItemFactory.getItem(slea.readInt());
|
||||
CashItem cItem = CashItemFactory.getItem(p.readInt());
|
||||
|
||||
if (!canBuy(chr, cItem, cs.getCash(cash))) {
|
||||
c.enableCSActions();
|
||||
@@ -230,9 +230,9 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
}
|
||||
} else if (action == 0x08) { // Increase Character Slots
|
||||
slea.skip(1);
|
||||
int cash = slea.readInt();
|
||||
CashItem cItem = CashItemFactory.getItem(slea.readInt());
|
||||
p.skip(1);
|
||||
int cash = p.readInt();
|
||||
CashItem cItem = CashItemFactory.getItem(p.readInt());
|
||||
|
||||
if (!canBuy(chr, cItem, cs.getCash(cash))) {
|
||||
c.enableCSActions();
|
||||
@@ -253,7 +253,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
} else if (action == 0x0D) { // Take from Cash Inventory
|
||||
Item item = cs.findByCashId(slea.readInt());
|
||||
Item item = cs.findByCashId(p.readInt());
|
||||
if (item == null) {
|
||||
c.enableCSActions();
|
||||
return;
|
||||
@@ -271,10 +271,10 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
}
|
||||
} else if (action == 0x0E) { // Put into Cash Inventory
|
||||
int cashId = slea.readInt();
|
||||
slea.skip(4);
|
||||
int cashId = p.readInt();
|
||||
p.skip(4);
|
||||
|
||||
byte invType = slea.readByte();
|
||||
byte invType = p.readByte();
|
||||
if (invType < 1 || invType > 5) {
|
||||
c.disconnect(false, false);
|
||||
return;
|
||||
@@ -298,12 +298,12 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
mi.removeSlot(item.getPosition());
|
||||
c.sendPacket(PacketCreator.putIntoCashInventory(item, c.getAccID()));
|
||||
} else if (action == 0x1D) { //crush ring (action 28)
|
||||
int birthday = slea.readInt();
|
||||
int birthday = p.readInt();
|
||||
if (checkBirthday(c, birthday)) {
|
||||
int toCharge = slea.readInt();
|
||||
int SN = slea.readInt();
|
||||
String recipientName = slea.readMapleAsciiString();
|
||||
String text = slea.readMapleAsciiString();
|
||||
int toCharge = p.readInt();
|
||||
int SN = p.readInt();
|
||||
String recipientName = p.readString();
|
||||
String text = p.readString();
|
||||
CashItem itemRing = CashItemFactory.getItem(SN);
|
||||
MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(recipientName);
|
||||
if (partner == null) {
|
||||
@@ -339,7 +339,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
c.sendPacket(PacketCreator.showCash(c.getPlayer()));
|
||||
} else if (action == 0x20) {
|
||||
int serialNumber = slea.readInt(); // thanks GabrielSin for detecting a potential exploit with 1 meso cash items.
|
||||
int serialNumber = p.readInt(); // thanks GabrielSin for detecting a potential exploit with 1 meso cash items.
|
||||
if (serialNumber / 10000000 != 8) {
|
||||
c.sendPacket(PacketCreator.showCashShopMessage((byte) 0xC0));
|
||||
return;
|
||||
@@ -367,16 +367,14 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
c.sendPacket(PacketCreator.showCash(c.getPlayer()));
|
||||
} else if (action == 0x23) { //Friendship :3
|
||||
int birthday = slea.readInt();
|
||||
int birthday = p.readInt();
|
||||
if (checkBirthday(c, birthday)) {
|
||||
int payment = slea.readByte();
|
||||
slea.skip(3); //0s
|
||||
int snID = slea.readInt();
|
||||
int payment = p.readByte();
|
||||
p.skip(3); //0s
|
||||
int snID = p.readInt();
|
||||
CashItem itemRing = CashItemFactory.getItem(snID);
|
||||
String sentTo = slea.readMapleAsciiString();
|
||||
int available = slea.readShort() - 1;
|
||||
String text = slea.readAsciiString(available);
|
||||
slea.readByte();
|
||||
String sentTo = p.readString();
|
||||
String text = p.readString();
|
||||
MapleCharacter partner = c.getChannelServer().getPlayerStorage().getCharacterByName(sentTo);
|
||||
if (partner == null) {
|
||||
c.sendPacket(PacketCreator.showCashShopMessage((byte)0xBE));
|
||||
@@ -405,15 +403,15 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
c.sendPacket(PacketCreator.showCash(c.getPlayer()));
|
||||
} else if (action == 0x2E) { //name change
|
||||
CashItem cItem = CashItemFactory.getItem(slea.readInt());
|
||||
CashItem cItem = CashItemFactory.getItem(p.readInt());
|
||||
if (cItem == null || !canBuy(chr, cItem, cs.getCash(4))) {
|
||||
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
|
||||
c.enableCSActions();
|
||||
return;
|
||||
}
|
||||
if(cItem.getSN() == 50600000 && YamlConfig.config.server.ALLOW_CASHSHOP_NAME_CHANGE) {
|
||||
slea.readMapleAsciiString(); //old name
|
||||
String newName = slea.readMapleAsciiString();
|
||||
p.readString(); //old name
|
||||
String newName = p.readString();
|
||||
if(!MapleCharacter.canCreateChar(newName) || chr.getLevel() < 10) { //(longest ban duration isn't tracked currently)
|
||||
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
|
||||
c.enableCSActions();
|
||||
@@ -434,14 +432,14 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
c.enableCSActions();
|
||||
} else if(action == 0x31) { //world transfer
|
||||
CashItem cItem = CashItemFactory.getItem(slea.readInt());
|
||||
CashItem cItem = CashItemFactory.getItem(p.readInt());
|
||||
if (cItem == null || !canBuy(chr, cItem, cs.getCash(4))) {
|
||||
c.sendPacket(PacketCreator.showCashShopMessage((byte)0));
|
||||
c.enableCSActions();
|
||||
return;
|
||||
}
|
||||
if(cItem.getSN() == 50600001 && YamlConfig.config.server.ALLOW_CASHSHOP_WORLD_TRANSFER) {
|
||||
int newWorldSelection = slea.readInt();
|
||||
int newWorldSelection = p.readInt();
|
||||
|
||||
int worldTransferError = chr.checkWorldTransferEligibility();
|
||||
if(worldTransferError != 0 || newWorldSelection >= Server.getInstance().getWorldsSize() || Server.getInstance().getWorldsSize() <= 1) {
|
||||
@@ -464,7 +462,7 @@ public final class CashOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
c.enableCSActions();
|
||||
} else {
|
||||
System.out.println("Unhandled action: " + action + "\n" + slea);
|
||||
System.out.println("Unhandled action: " + action + "\n" + p);
|
||||
}
|
||||
} finally {
|
||||
c.releaseClient();
|
||||
|
||||
@@ -22,10 +22,10 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import client.inventory.Item;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.CashShop;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -33,7 +33,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public class CashShopSurpriseHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
CashShop cs = c.getPlayer().getCashShop();
|
||||
|
||||
if(cs.isOpened()) {
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
package net.server.channel.handlers;
|
||||
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
import client.MapleClient;
|
||||
import client.autoban.AutobanFactory;
|
||||
import net.server.Server;
|
||||
@@ -34,9 +34,9 @@ import net.server.Server;
|
||||
public final class ChangeChannelHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int channel = slea.readByte() + 1;
|
||||
slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int channel = p.readByte() + 1;
|
||||
p.readInt();
|
||||
c.getPlayer().getAutobanManager().setTimestamp(6, Server.getInstance().getCurrentTimestamp(), 3);
|
||||
if(c.getChannel() == channel) {
|
||||
AutobanFactory.GENERAL.alert(c.getPlayer(), "CCing to same channel.");
|
||||
|
||||
@@ -26,12 +26,12 @@ import client.MapleClient;
|
||||
import client.inventory.MapleInventoryType;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.MapleTrade;
|
||||
import server.maps.MapleMap;
|
||||
import server.maps.MaplePortal;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.awt.*;
|
||||
import java.net.InetAddress;
|
||||
@@ -41,7 +41,7 @@ import java.util.Calendar;
|
||||
public final class ChangeMapHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
|
||||
if (chr.isChangingMaps() || chr.isBanned()) {
|
||||
@@ -55,7 +55,7 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
|
||||
if (chr.getTrade() != null) {
|
||||
MapleTrade.cancelTrade(chr, MapleTrade.TradeResult.UNSUCCESSFUL_ANOTHER_MAP);
|
||||
}
|
||||
if (slea.available() == 0) { //Cash Shop :)
|
||||
if (p.available() == 0) { //Cash Shop :)
|
||||
if (!chr.getCashShop().isOpened()) {
|
||||
c.disconnect(false, false);
|
||||
return;
|
||||
@@ -75,17 +75,17 @@ public final class ChangeMapHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
try {
|
||||
slea.readByte(); // 1 = from dying 0 = regular portals
|
||||
int targetid = slea.readInt();
|
||||
String startwp = slea.readMapleAsciiString();
|
||||
p.readByte(); // 1 = from dying 0 = regular portals
|
||||
int targetid = p.readInt();
|
||||
String startwp = p.readString();
|
||||
MaplePortal portal = chr.getMap().getPortal(startwp);
|
||||
slea.readByte();
|
||||
boolean wheel = slea.readByte() > 0;
|
||||
p.readByte();
|
||||
boolean wheel = p.readByte() > 0;
|
||||
|
||||
boolean chasing = slea.readByte() == 1 && chr.isGM();
|
||||
boolean chasing = p.readByte() == 1 && chr.isGM();
|
||||
if (chasing) {
|
||||
chr.setChasing(true);
|
||||
chr.setPosition(new Point(slea.readInt(), slea.readInt()));
|
||||
chr.setPosition(new Point(p.readInt(), p.readInt()));
|
||||
}
|
||||
|
||||
if (targetid != -1) {
|
||||
|
||||
@@ -23,18 +23,18 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.MapleTrade;
|
||||
import server.MapleTrade.TradeResult;
|
||||
import server.maps.MaplePortal;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class ChangeMapSpecialHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.readByte();
|
||||
String startwp = slea.readMapleAsciiString();
|
||||
slea.readShort();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.readByte();
|
||||
String startwp = p.readString();
|
||||
p.readShort();
|
||||
MaplePortal portal = c.getPlayer().getMap().getPortal(startwp);
|
||||
if (portal == null || c.getPlayer().portalDelay() > currentServerTime() || c.getPlayer().getBlockedPortals().contains(portal.getScriptName())) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
|
||||
@@ -24,16 +24,16 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleMapObject;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class CharInfoRequestHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.skip(4);
|
||||
int cid = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.skip(4);
|
||||
int cid = p.readInt();
|
||||
MapleMapObject target = c.getPlayer().getMap().getMapObject(cid);
|
||||
if (target != null) {
|
||||
if (target instanceof MapleCharacter) {
|
||||
|
||||
@@ -25,8 +25,8 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import client.MapleJob;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import scripting.npc.NPCScriptManager;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -34,7 +34,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public class ClickGuideHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
if (c.getPlayer().getJob().equals(MapleJob.NOBLESSE)) {
|
||||
NPCScriptManager.getInstance().start(c, 1101008, null);
|
||||
} else {
|
||||
|
||||
@@ -23,8 +23,8 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -33,7 +33,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class CloseChalkboardHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
c.getPlayer().setChalkboard(null);
|
||||
c.getPlayer().getMap().broadcastMessage(PacketCreator.useChalkboard(c.getPlayer(), true));
|
||||
}
|
||||
|
||||
@@ -25,10 +25,10 @@ import client.*;
|
||||
import config.YamlConfig;
|
||||
import constants.game.GameConstants;
|
||||
import constants.skills.*;
|
||||
import net.packet.InPacket;
|
||||
import server.MapleStatEffect;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
@@ -37,7 +37,7 @@ import java.util.List;
|
||||
public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
|
||||
/*long timeElapsed = currentServerTime() - chr.getAutobanManager().getLastSpam(8);
|
||||
@@ -46,7 +46,7 @@ public final class CloseRangeDamageHandler extends AbstractDealDamageHandler {
|
||||
}
|
||||
chr.getAutobanManager().spam(8);*/
|
||||
|
||||
AttackInfo attack = parseDamage(slea, chr, false, false);
|
||||
AttackInfo attack = parseDamage(p, chr, false, false);
|
||||
if (chr.getBuffEffect(MapleBuffStat.MORPH) != null) {
|
||||
if(chr.getBuffEffect(MapleBuffStat.MORPH).isMorphWithoutAttack()) {
|
||||
// How are they attacking when the client won't let them?
|
||||
|
||||
@@ -24,23 +24,23 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.events.gm.MapleCoconut;
|
||||
import server.events.gm.MapleCoconuts;
|
||||
import server.maps.MapleMap;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author kevintjuh93
|
||||
*/
|
||||
public final class CoconutHandler extends AbstractMaplePacketHandler {
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
/*CB 00 A6 00 06 01
|
||||
* A6 00 = coconut id
|
||||
* 06 01 = ?
|
||||
*/
|
||||
int id = slea.readShort();
|
||||
int id = p.readShort();
|
||||
MapleMap map = c.getPlayer().getMap();
|
||||
MapleCoconut event = map.getCoconut();
|
||||
MapleCoconuts nut = event.getCoconut(id);
|
||||
|
||||
@@ -28,6 +28,7 @@ import client.MapleClient;
|
||||
import client.inventory.Item;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import server.CashShop;
|
||||
import server.MapleItemInformationProvider;
|
||||
@@ -35,7 +36,6 @@ import tools.DatabaseConnection;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -179,9 +179,9 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.skip(2);
|
||||
String code = slea.readMapleAsciiString();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.skip(2);
|
||||
String code = p.readString();
|
||||
|
||||
if (c.tryacquireClient()) {
|
||||
try {
|
||||
@@ -197,9 +197,9 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler {
|
||||
int nxPrepaid = 0;
|
||||
int mesos = 0;
|
||||
|
||||
for (Pair<Integer, Pair<Integer, Integer>> p : codeRes.getRight()) {
|
||||
type = p.getLeft();
|
||||
int quantity = p.getRight().getRight();
|
||||
for (Pair<Integer, Pair<Integer, Integer>> pair : codeRes.getRight()) {
|
||||
type = pair.getLeft();
|
||||
int quantity = pair.getRight().getRight();
|
||||
|
||||
CashShop cs = c.getPlayer().getCashShop();
|
||||
switch (type) {
|
||||
@@ -227,7 +227,7 @@ public final class CouponCodeHandler extends AbstractMaplePacketHandler {
|
||||
break;
|
||||
|
||||
default:
|
||||
int item = p.getRight().getLeft();
|
||||
int item = pair.getRight().getLeft();
|
||||
|
||||
short qty;
|
||||
if (quantity > Short.MAX_VALUE) {
|
||||
|
||||
@@ -25,18 +25,18 @@ import client.MapleBuffStat;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleMapObject;
|
||||
import server.maps.MapleSummon;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class DamageSummonHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int oid = slea.readInt();
|
||||
slea.skip(1); // -1
|
||||
int damage = slea.readInt();
|
||||
int monsterIdFrom = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int oid = p.readInt();
|
||||
p.skip(1); // -1
|
||||
int damage = p.readInt();
|
||||
int monsterIdFrom = p.readInt();
|
||||
|
||||
MapleCharacter player = c.getPlayer();
|
||||
MapleMapObject mmo = player.getMap().getMapObject(oid);
|
||||
|
||||
@@ -22,8 +22,8 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import client.MapleCharacter;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.guild.MapleAlliance;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
* @author Ronan
|
||||
@@ -31,10 +31,10 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class DenyAllianceRequestHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.readByte();
|
||||
String inviterName = slea.readMapleAsciiString();
|
||||
String guildName = slea.readMapleAsciiString();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.readByte();
|
||||
String inviterName = p.readString();
|
||||
String guildName = p.readString();
|
||||
|
||||
MapleCharacter chr = c.getWorldServer().getPlayerStorage().getCharacterByName(inviterName);
|
||||
if (chr != null) {
|
||||
|
||||
@@ -24,8 +24,8 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.guild.MapleGuild;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -34,9 +34,9 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class DenyGuildRequestHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.readByte();
|
||||
MapleCharacter cfrom = c.getWorldServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString());
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.readByte();
|
||||
MapleCharacter cfrom = c.getWorldServer().getPlayerStorage().getCharacterByName(p.readString());
|
||||
if (cfrom != null) {
|
||||
MapleGuild.answerInvitation(c.getPlayer().getId(), c.getPlayer().getName(), cfrom.getGuildId(), false);
|
||||
}
|
||||
|
||||
@@ -24,18 +24,18 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteResult;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class DenyPartyRequestHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.readByte();
|
||||
String[] cname = slea.readMapleAsciiString().split("PS: ");
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.readByte();
|
||||
String[] cname = p.readString().split("PS: ");
|
||||
|
||||
MapleCharacter cfrom = c.getChannelServer().getPlayerStorage().getCharacterByName(cname[cname.length - 1]);
|
||||
if (cfrom != null) {
|
||||
|
||||
@@ -24,14 +24,14 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import client.processor.stat.AssignAPProcessor;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public final class DistributeAPHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.readInt();
|
||||
int num = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.readInt();
|
||||
int num = p.readInt();
|
||||
|
||||
AssignAPProcessor.APAssignAction(c, num);
|
||||
}
|
||||
|
||||
@@ -24,13 +24,13 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import client.processor.stat.AssignSPProcessor;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public final class DistributeSPHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.readInt();
|
||||
int skillid = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.readInt();
|
||||
int skillid = p.readInt();
|
||||
|
||||
AssignSPProcessor.SPAssignAction(c, skillid);
|
||||
}
|
||||
|
||||
@@ -24,10 +24,10 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleDoorObject;
|
||||
import server.maps.MapleMapObject;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -35,9 +35,9 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class DoorHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int ownerid = slea.readInt();
|
||||
slea.readByte(); // specifies if backwarp or not, 1 town to target, 0 target to town
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int ownerid = p.readInt();
|
||||
p.readByte(); // specifies if backwarp or not, 1 town to target, 0 target to town
|
||||
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
if (chr.isChangingMaps() || chr.isBanned()) {
|
||||
|
||||
@@ -25,37 +25,37 @@ import client.MapleClient;
|
||||
import client.processor.npc.DueyProcessor;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class DueyHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if (!YamlConfig.config.server.USE_DUEY){
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
|
||||
byte operation = slea.readByte();
|
||||
byte operation = p.readByte();
|
||||
if (operation == DueyProcessor.Actions.TOSERVER_RECV_ITEM.getCode()) { // on click 'O' Button, thanks inhyuk
|
||||
DueyProcessor.dueySendTalk(c, false);
|
||||
} else if (operation == DueyProcessor.Actions.TOSERVER_SEND_ITEM.getCode()) {
|
||||
byte inventId = slea.readByte();
|
||||
short itemPos = slea.readShort();
|
||||
short amount = slea.readShort();
|
||||
int mesos = slea.readInt();
|
||||
String recipient = slea.readMapleAsciiString();
|
||||
boolean quick = slea.readByte() != 0;
|
||||
String message = quick ? slea.readMapleAsciiString() : null;
|
||||
byte inventId = p.readByte();
|
||||
short itemPos = p.readShort();
|
||||
short amount = p.readShort();
|
||||
int mesos = p.readInt();
|
||||
String recipient = p.readString();
|
||||
boolean quick = p.readByte() != 0;
|
||||
String message = quick ? p.readString() : null;
|
||||
|
||||
DueyProcessor.dueySendItem(c, inventId, itemPos, amount, mesos, message, recipient, quick);
|
||||
} else if (operation == DueyProcessor.Actions.TOSERVER_REMOVE_PACKAGE.getCode()) {
|
||||
int packageid = slea.readInt();
|
||||
int packageid = p.readInt();
|
||||
|
||||
DueyProcessor.dueyRemovePackage(c, packageid, true);
|
||||
} else if (operation == DueyProcessor.Actions.TOSERVER_CLAIM_PACKAGE.getCode()) {
|
||||
int packageid = slea.readInt();
|
||||
int packageid = p.readInt();
|
||||
|
||||
DueyProcessor.dueyClaimPackage(c, packageid);
|
||||
} else if (operation == DueyProcessor.Actions.TOSERVER_CLAIM_PACKAGE.getCode()) {
|
||||
|
||||
@@ -24,10 +24,10 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import server.maps.MapleMiniDungeonInfo;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -35,7 +35,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public class EnterCashShopHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
try {
|
||||
MapleCharacter mc = c.getPlayer();
|
||||
|
||||
|
||||
@@ -28,13 +28,13 @@ import client.inventory.Item;
|
||||
import client.processor.action.BuybackProcessor;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import server.MTSItemInfo;
|
||||
import server.maps.FieldLimit;
|
||||
import server.maps.MapleMiniDungeonInfo;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -46,7 +46,7 @@ import java.util.List;
|
||||
|
||||
public final class EnterMTSHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
|
||||
if(!chr.isAlive() && YamlConfig.config.server.USE_BUYBACK_SYSTEM) {
|
||||
|
||||
@@ -25,13 +25,13 @@ import client.MapleClient;
|
||||
import client.MapleCharacter;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public final class FaceExpressionHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
int emote = slea.readInt();
|
||||
int emote = p.readInt();
|
||||
|
||||
if (emote > 7) {
|
||||
int itemid = 5159992 + emote; // thanks RajanGrewal (Darter) for reporting unchecked emote itemid
|
||||
|
||||
@@ -25,10 +25,10 @@ import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -37,11 +37,11 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class FamilyAddHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) {
|
||||
return;
|
||||
}
|
||||
String toAdd = slea.readMapleAsciiString();
|
||||
String toAdd = p.readString();
|
||||
MapleCharacter addChr = c.getChannelServer().getPlayerStorage().getCharacterByName(toAdd);
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
if(addChr == null) {
|
||||
|
||||
@@ -3,17 +3,17 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import client.MapleFamily;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public class FamilyPreceptsHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleFamily family = c.getPlayer().getFamily();
|
||||
if(family == null) return;
|
||||
if(family.getLeader().getChr() != c.getPlayer()) return; //only the leader can set the precepts
|
||||
String newPrecepts = slea.readMapleAsciiString();
|
||||
String newPrecepts = p.readString();
|
||||
if(newPrecepts.length() > 200) return;
|
||||
family.setMessage(newPrecepts, true);
|
||||
//family.broadcastFamilyInfoUpdate(); //probably don't need to broadcast for this?
|
||||
|
||||
@@ -24,20 +24,20 @@ import client.MapleFamily;
|
||||
import client.MapleFamilyEntry;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public class FamilySeparateHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return;
|
||||
MapleFamily oldFamily = c.getPlayer().getFamily();
|
||||
if(oldFamily == null) return;
|
||||
MapleFamilyEntry forkOn = null;
|
||||
boolean isSenior;
|
||||
if(slea.available() > 0) { //packet 0x95 doesn't send id, since there is only one senior
|
||||
forkOn = c.getPlayer().getFamily().getEntryByID(slea.readInt());
|
||||
if(p.available() > 0) { //packet 0x95 doesn't send id, since there is only one senior
|
||||
forkOn = c.getPlayer().getFamily().getEntryByID(p.readInt());
|
||||
if(!c.getPlayer().getFamilyEntry().isJunior(forkOn)) return; //packet editing?
|
||||
isSenior = true;
|
||||
} else {
|
||||
|
||||
@@ -6,21 +6,21 @@ import client.MapleFamilyEntitlement;
|
||||
import client.MapleFamilyEntry;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteResult;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.MapleInviteResult;
|
||||
import server.maps.MapleMap;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public class FamilySummonResponseHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return;
|
||||
slea.readMapleAsciiString(); //family name
|
||||
boolean accept = slea.readByte() != 0;
|
||||
p.readString(); //family name
|
||||
boolean accept = p.readByte() != 0;
|
||||
MapleInviteResult inviteResult = MapleInviteCoordinator.answerInvite(InviteType.FAMILY_SUMMON, c.getPlayer().getId(), c.getPlayer(), accept);
|
||||
if(inviteResult.result == InviteResult.NOT_FOUND) return;
|
||||
MapleCharacter inviter = inviteResult.from;
|
||||
|
||||
@@ -27,12 +27,12 @@ import client.MapleFamilyEntitlement;
|
||||
import client.MapleFamilyEntry;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
|
||||
import server.maps.FieldLimit;
|
||||
import server.maps.MapleMap;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -41,11 +41,11 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class FamilyUseHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) {
|
||||
return;
|
||||
}
|
||||
MapleFamilyEntitlement type = MapleFamilyEntitlement.values()[slea.readInt()];
|
||||
MapleFamilyEntitlement type = MapleFamilyEntitlement.values()[p.readInt()];
|
||||
int cost = type.getRepCost();
|
||||
MapleFamilyEntry entry = c.getPlayer().getFamilyEntry();
|
||||
if(entry.getReputation() < cost || entry.isEntitlementUsed(type)) {
|
||||
@@ -54,7 +54,7 @@ public final class FamilyUseHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.getFamilyInfo(entry));
|
||||
MapleCharacter victim;
|
||||
if(type == MapleFamilyEntitlement.FAMILY_REUINION || type == MapleFamilyEntitlement.SUMMON_FAMILY) {
|
||||
victim = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString());
|
||||
victim = c.getChannelServer().getPlayerStorage().getCharacterByName(p.readString());
|
||||
if(victim != null && victim != c.getPlayer()) {
|
||||
if(victim.getFamily() == c.getPlayer().getFamily()) {
|
||||
MapleMap targetMap = victim.getMap();
|
||||
|
||||
@@ -23,19 +23,19 @@ import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import constants.game.GameConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.life.MapleMonster;
|
||||
import server.life.MapleMonsterInformationProvider;
|
||||
import server.maps.MapleMap;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public class FieldDamageMobHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int mobOid = slea.readInt(); // packet structure found thanks to Darter (Rajan)
|
||||
int dmg = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int mobOid = p.readInt(); // packet structure found thanks to Darter (Rajan)
|
||||
int dmg = p.readInt();
|
||||
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
MapleMap map = chr.getMap();
|
||||
|
||||
@@ -25,7 +25,7 @@ import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import client.processor.npc.FredrickProcessor;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -34,9 +34,9 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public class FredrickHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
byte operation = slea.readByte();
|
||||
byte operation = p.readByte();
|
||||
|
||||
switch (operation) {
|
||||
case 0x19: //Will never come...
|
||||
|
||||
@@ -27,15 +27,15 @@ import client.autoban.AutobanFactory;
|
||||
import client.command.CommandsExecutor;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.FilePrinter;
|
||||
import tools.LogHelper;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class GeneralChatHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
String s = slea.readMapleAsciiString();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
String s = p.readString();
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
if(chr.getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
@@ -51,7 +51,7 @@ public final class GeneralChatHandler extends AbstractMaplePacketHandler {
|
||||
if (CommandsExecutor.isCommand(c, s)) {
|
||||
CommandsExecutor.getInstance().handle(c, s);
|
||||
} else if (heading != '/') {
|
||||
int show = slea.readByte();
|
||||
int show = p.readByte();
|
||||
if(chr.getMap().isMuted() && !chr.isGM()) {
|
||||
chr.dropMessage(5, "The map you are in is currently muted. Please try again later.");
|
||||
return;
|
||||
|
||||
@@ -26,16 +26,16 @@ import client.MapleCharacter.FameStatus;
|
||||
import client.MapleClient;
|
||||
import client.autoban.AutobanFactory;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class GiveFameHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
MapleCharacter target = (MapleCharacter) c.getPlayer().getMap().getMapObject(slea.readInt());
|
||||
int mode = slea.readByte();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter target = (MapleCharacter) c.getPlayer().getMap().getMapObject(p.readInt());
|
||||
int mode = p.readByte();
|
||||
int famechange = 2 * mode - 1;
|
||||
MapleCharacter player = c.getPlayer();
|
||||
if (target == null || target.getId() == player.getId() || player.getLevel() < 15) {
|
||||
|
||||
@@ -24,9 +24,9 @@ import client.MapleClient;
|
||||
import constants.skills.Gunslinger;
|
||||
import constants.skills.NightWalker;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
@@ -36,11 +36,11 @@ import java.awt.*;
|
||||
public class GrenadeEffectHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
Point position = new Point(slea.readInt(), slea.readInt());
|
||||
int keyDown = slea.readInt();
|
||||
int skillId = slea.readInt();
|
||||
Point position = new Point(p.readInt(), p.readInt());
|
||||
int keyDown = p.readInt();
|
||||
int skillId = p.readInt();
|
||||
|
||||
switch (skillId) {
|
||||
case NightWalker.POISON_BOMB:
|
||||
|
||||
@@ -26,6 +26,7 @@ import client.MapleClient;
|
||||
import config.YamlConfig;
|
||||
import constants.game.GameConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import net.server.coordinator.matchchecker.MatchCheckerListenerFactory.MatchCheckerType;
|
||||
import net.server.guild.GuildPackets;
|
||||
@@ -35,7 +36,6 @@ import net.server.guild.MapleGuildResponse;
|
||||
import net.server.world.MapleParty;
|
||||
import net.server.world.World;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
@@ -54,9 +54,9 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter mc = c.getPlayer();
|
||||
byte type = slea.readByte();
|
||||
byte type = p.readByte();
|
||||
int allianceId = -1;
|
||||
switch (type) {
|
||||
case 0x00:
|
||||
@@ -71,7 +71,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
mc.dropMessage(1, "You do not have " + GameConstants.numberWithCommas(YamlConfig.config.server.CREATE_GUILD_COST) + " mesos to create a Guild.");
|
||||
return;
|
||||
}
|
||||
String guildName = slea.readMapleAsciiString();
|
||||
String guildName = p.readString();
|
||||
if (!isGuildNameAcceptable(guildName)) {
|
||||
mc.dropMessage(1, "The Guild name you have chosen is not accepted.");
|
||||
return;
|
||||
@@ -107,7 +107,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
String targetName = slea.readMapleAsciiString();
|
||||
String targetName = p.readString();
|
||||
MapleGuildResponse mgr = MapleGuild.sendInvitation(c, targetName);
|
||||
if (mgr != null) {
|
||||
c.sendPacket(mgr.getPacket(targetName));
|
||||
@@ -119,8 +119,8 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
System.out.println("[Hack] " + mc.getName() + " attempted to join a guild when s/he is already in one.");
|
||||
return;
|
||||
}
|
||||
int gid = slea.readInt();
|
||||
int cid = slea.readInt();
|
||||
int gid = p.readInt();
|
||||
int cid = p.readInt();
|
||||
if (cid != mc.getId()) {
|
||||
System.out.println("[Hack] " + mc.getName() + " attempted to join a guild with a different character id.");
|
||||
return;
|
||||
@@ -151,8 +151,8 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
mc.getMap().broadcastPacket(mc, GuildPackets.guildMarkChanged(mc.getId(), mc.getGuild()));
|
||||
break;
|
||||
case 0x07:
|
||||
cid = slea.readInt();
|
||||
String name = slea.readMapleAsciiString();
|
||||
cid = p.readInt();
|
||||
String name = p.readString();
|
||||
if (cid != mc.getId() || !name.equals(mc.getName()) || mc.getGuildId() <= 0) {
|
||||
System.out.println("[Hack] " + mc.getName() + " tried to quit guild under the name \"" + name + "\" and current guild id of " + mc.getGuildId() + ".");
|
||||
return;
|
||||
@@ -174,8 +174,8 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
case 0x08:
|
||||
allianceId = mc.getGuild().getAllianceId();
|
||||
|
||||
cid = slea.readInt();
|
||||
name = slea.readMapleAsciiString();
|
||||
cid = p.readInt();
|
||||
name = p.readString();
|
||||
if (mc.getGuildRank() > 2 || mc.getGuildId() <= 0) {
|
||||
System.out.println("[Hack] " + mc.getName() + " is trying to expel without rank 1 or 2.");
|
||||
return;
|
||||
@@ -191,14 +191,14 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
String[] ranks = new String[5];
|
||||
for (int i = 0; i < 5; i++) {
|
||||
ranks[i] = slea.readMapleAsciiString();
|
||||
ranks[i] = p.readString();
|
||||
}
|
||||
|
||||
Server.getInstance().changeRankTitle(mc.getGuildId(), ranks);
|
||||
break;
|
||||
case 0x0e:
|
||||
cid = slea.readInt();
|
||||
byte newRank = slea.readByte();
|
||||
cid = p.readInt();
|
||||
byte newRank = p.readByte();
|
||||
if (mc.getGuildRank() > 2 || (newRank <= 2 && mc.getGuildRank() != 1) || mc.getGuildId() <= 0) {
|
||||
System.out.println("[Hack] " + mc.getName() + " is trying to change rank outside of his/her permissions.");
|
||||
return;
|
||||
@@ -217,10 +217,10 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.serverNotice(1, "You do not have " + GameConstants.numberWithCommas(YamlConfig.config.server.CHANGE_EMBLEM_COST) + " mesos to change the Guild emblem."));
|
||||
return;
|
||||
}
|
||||
short bg = slea.readShort();
|
||||
byte bgcolor = slea.readByte();
|
||||
short logo = slea.readShort();
|
||||
byte logocolor = slea.readByte();
|
||||
short bg = p.readShort();
|
||||
byte bgcolor = p.readByte();
|
||||
short logo = p.readShort();
|
||||
byte logocolor = p.readByte();
|
||||
Server.getInstance().setGuildEmblem(mc.getGuildId(), bg, bgcolor, logo, logocolor);
|
||||
|
||||
if (mc.getGuild() != null && mc.getGuild().getAllianceId() > 0) {
|
||||
@@ -237,14 +237,14 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
if(mc.getGuildId() <= 0) System.out.println("[Hack] " + mc.getName() + " tried to change guild notice while not in a guild.");
|
||||
return;
|
||||
}
|
||||
String notice = slea.readMapleAsciiString();
|
||||
String notice = p.readString();
|
||||
if (notice.length() > 100) {
|
||||
return;
|
||||
}
|
||||
Server.getInstance().setGuildNotice(mc.getGuildId(), notice);
|
||||
break;
|
||||
case 0x1E:
|
||||
slea.readInt();
|
||||
p.readInt();
|
||||
World wserv = c.getWorldServer();
|
||||
|
||||
if (mc.getParty() != null) {
|
||||
@@ -254,7 +254,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
int leaderid = wserv.getMatchCheckerCoordinator().getMatchConfirmationLeaderid(mc.getId());
|
||||
if (leaderid != -1) {
|
||||
boolean result = slea.readByte() != 0;
|
||||
boolean result = p.readByte() != 0;
|
||||
if (result && wserv.getMatchCheckerCoordinator().isMatchConfirmationActive(mc.getId())) {
|
||||
MapleCharacter leader = wserv.getPlayerStorage().getCharacterById(leaderid);
|
||||
if (leader != null) {
|
||||
@@ -270,7 +270,7 @@ public final class GuildOperationHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
break;
|
||||
default:
|
||||
System.out.println("Unhandled GUILD_OPERATION packet: \n" + slea.toString());
|
||||
System.out.println("Unhandled GUILD_OPERATION packet: \n" + p.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,22 +26,22 @@ import client.MapleClient;
|
||||
import client.autoban.AutobanFactory;
|
||||
import client.autoban.AutobanManager;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import server.maps.MapleMap;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class HealOvertimeHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
if(!chr.isLoggedinWorld()) return;
|
||||
|
||||
AutobanManager abm = chr.getAutobanManager();
|
||||
int timestamp = Server.getInstance().getCurrentTimestamp();
|
||||
slea.skip(8);
|
||||
p.skip(8);
|
||||
|
||||
short healHP = slea.readShort();
|
||||
short healHP = p.readShort();
|
||||
if (healHP != 0) {
|
||||
abm.setTimestamp(8, timestamp, 28); // thanks Vcoc & Thora for pointing out d/c happening here
|
||||
if ((abm.getLastSpam(0) + 1500) > timestamp) AutobanFactory.FAST_HP_HEALING.addPoint(abm, "Fast hp healing");
|
||||
@@ -57,7 +57,7 @@ public final class HealOvertimeHandler extends AbstractMaplePacketHandler {
|
||||
chr.getMap().broadcastMessage(chr, PacketCreator.showHpHealed(chr.getId(), healHP), false);
|
||||
abm.spam(0, timestamp);
|
||||
}
|
||||
short healMP = slea.readShort();
|
||||
short healMP = p.readShort();
|
||||
if (healMP != 0 && healMP < 1000) {
|
||||
abm.setTimestamp(9, timestamp, 28);
|
||||
if ((abm.getLastSpam(1) + 1500) > timestamp) {
|
||||
|
||||
@@ -26,12 +26,12 @@ import client.MapleClient;
|
||||
import client.inventory.ItemFactory;
|
||||
import constants.game.GameConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleMapObject;
|
||||
import server.maps.MapleMapObjectType;
|
||||
import server.maps.MaplePlayerShop;
|
||||
import server.maps.MaplePortal;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.awt.*;
|
||||
import java.sql.SQLException;
|
||||
@@ -43,7 +43,7 @@ import java.util.Arrays;
|
||||
*/
|
||||
public final class HiredMerchantRequest extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
|
||||
try {
|
||||
|
||||
@@ -23,7 +23,7 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -31,6 +31,6 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class InnerPortalHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
}
|
||||
}
|
||||
@@ -29,17 +29,17 @@ import client.inventory.MapleInventoryType;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import server.MapleItemInformationProvider;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class InventoryMergeHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
slea.readInt();
|
||||
p.readInt();
|
||||
chr.getAutobanManager().setTimestamp(2, Server.getInstance().getCurrentTimestamp(), 4);
|
||||
|
||||
if(!YamlConfig.config.server.USE_ITEM_SORT) {
|
||||
@@ -47,7 +47,7 @@ public final class InventoryMergeHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
byte invType = slea.readByte();
|
||||
byte invType = p.readByte();
|
||||
if (invType < 1 || invType > 5) {
|
||||
c.disconnect(false, false);
|
||||
return;
|
||||
|
||||
@@ -26,10 +26,10 @@ import client.MapleClient;
|
||||
import client.inventory.*;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import server.MapleItemInformationProvider;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -261,9 +261,9 @@ class PairedQuicksort {
|
||||
|
||||
public final class InventorySortHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
slea.readInt();
|
||||
p.readInt();
|
||||
chr.getAutobanManager().setTimestamp(3, Server.getInstance().getCurrentTimestamp(), 4);
|
||||
|
||||
if(!YamlConfig.config.server.USE_ITEM_SORT) {
|
||||
@@ -271,7 +271,7 @@ public final class InventorySortHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
byte invType = slea.readByte();
|
||||
byte invType = p.readByte();
|
||||
if (invType < 1 || invType > 5) {
|
||||
c.disconnect(false, false);
|
||||
return;
|
||||
|
||||
@@ -25,8 +25,8 @@ import client.MapleClient;
|
||||
import client.inventory.MapleInventoryType;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -34,17 +34,17 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class ItemMoveHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.skip(4);
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.skip(4);
|
||||
if(c.getPlayer().getAutobanManager().getLastSpam(6) + 300 > currentServerTime()) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
|
||||
MapleInventoryType type = MapleInventoryType.getByType(slea.readByte());
|
||||
short src = slea.readShort(); //is there any reason to use byte instead of short in src and action?
|
||||
short action = slea.readShort();
|
||||
short quantity = slea.readShort();
|
||||
MapleInventoryType type = MapleInventoryType.getByType(p.readByte());
|
||||
short src = p.readShort(); //is there any reason to use byte instead of short in src and action?
|
||||
short action = p.readShort();
|
||||
short quantity = p.readShort();
|
||||
|
||||
if (src < 0 && action > 0) {
|
||||
MapleInventoryManipulator.unequip(c, src, action);
|
||||
|
||||
@@ -22,8 +22,8 @@
|
||||
package net.server.channel.handlers;
|
||||
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleMapObject;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import java.awt.Point;
|
||||
@@ -37,11 +37,11 @@ import tools.FilePrinter;
|
||||
public final class ItemPickupHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(final SeekableLittleEndianAccessor slea, final MapleClient c) {
|
||||
slea.readInt(); //Timestamp
|
||||
slea.readByte();
|
||||
slea.readPos(); //cpos
|
||||
int oid = slea.readInt();
|
||||
public final void handlePacket(final InPacket p, final MapleClient c) {
|
||||
p.readInt(); //Timestamp
|
||||
p.readByte();
|
||||
p.readPos(); //cpos
|
||||
int oid = p.readInt();
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
MapleMapObject ob = chr.getMap().getMapObject(oid);
|
||||
if(ob == null) return;
|
||||
|
||||
@@ -27,13 +27,13 @@ import client.inventory.MapleInventoryType;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import server.MapleItemInformationProvider;
|
||||
import server.MapleItemInformationProvider.RewardItem;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.Randomizer;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -43,9 +43,9 @@ import java.util.List;
|
||||
*/
|
||||
public final class ItemRewardHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
byte slot = (byte) slea.readShort();
|
||||
int itemId = slea.readInt(); // will load from xml I don't care.
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
byte slot = (byte) p.readShort();
|
||||
int itemId = p.readInt(); // will load from xml I don't care.
|
||||
|
||||
Item it = c.getPlayer().getInventory(MapleInventoryType.USE).getItem(slot); // null check here thanks to Thora
|
||||
if (it == null || it.getItemId() != itemId || c.getPlayer().getInventory(MapleInventoryType.USE).countById(itemId) < 1) return;
|
||||
|
||||
@@ -26,23 +26,21 @@ import client.MapleClient;
|
||||
import client.keybind.MapleKeyBinding;
|
||||
import client.Skill;
|
||||
import client.SkillFactory;
|
||||
import client.autoban.AutobanFactory;
|
||||
import client.inventory.MapleInventoryType;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.FilePrinter;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public final class KeymapChangeHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
if (slea.available() >= 8) {
|
||||
int mode = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if (p.available() >= 8) {
|
||||
int mode = p.readInt();
|
||||
if(mode == 0) {
|
||||
int numChanges = slea.readInt();
|
||||
int numChanges = p.readInt();
|
||||
for (int i = 0; i < numChanges; i++) {
|
||||
int key = slea.readInt();
|
||||
int type = slea.readByte();
|
||||
int action = slea.readInt();
|
||||
int key = p.readInt();
|
||||
int type = p.readByte();
|
||||
int action = p.readInt();
|
||||
|
||||
if(type == 1) {
|
||||
Skill skill = SkillFactory.getSkill(action);
|
||||
@@ -66,14 +64,14 @@ public final class KeymapChangeHandler extends AbstractMaplePacketHandler {
|
||||
c.getPlayer().changeKeybinding(key, new MapleKeyBinding(type, action));
|
||||
}
|
||||
} else if(mode == 1) { // Auto HP Potion
|
||||
int itemID = slea.readInt();
|
||||
int itemID = p.readInt();
|
||||
if(itemID != 0 && c.getPlayer().getInventory(MapleInventoryType.USE).findById(itemID) == null) {
|
||||
c.disconnect(false, false); // Don't let them send a packet with a use item they dont have.
|
||||
return;
|
||||
}
|
||||
c.getPlayer().changeKeybinding(91, new MapleKeyBinding(7, itemID));
|
||||
} else if(mode == 2) { // Auto MP Potion
|
||||
int itemID = slea.readInt();
|
||||
int itemID = p.readInt();
|
||||
if(itemID != 0 && c.getPlayer().getInventory(MapleInventoryType.USE).findById(itemID) == null) {
|
||||
c.disconnect(false, false); // Don't let them send a packet with a use item they dont have.
|
||||
return;
|
||||
|
||||
@@ -24,15 +24,15 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author kevintjuh93
|
||||
*/
|
||||
public class LeftKnockbackHandler extends AbstractMaplePacketHandler {
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, final MapleClient c) {
|
||||
public void handlePacket(InPacket p, final MapleClient c) {
|
||||
c.sendPacket(PacketCreator.leftKnockBack());
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@ import client.inventory.MapleInventoryType;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.packet.Packet;
|
||||
import net.server.Server;
|
||||
import net.server.channel.Channel;
|
||||
@@ -37,7 +38,6 @@ import server.MapleItemInformationProvider;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -50,52 +50,52 @@ import java.util.List;
|
||||
public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
// TODO add karma-to-untradeable flag on sold items here
|
||||
|
||||
if (!c.getPlayer().getCashShop().isOpened()) {
|
||||
return;
|
||||
}
|
||||
if (slea.available() > 0) {
|
||||
byte op = slea.readByte();
|
||||
if (p.available() > 0) {
|
||||
byte op = p.readByte();
|
||||
if (op == 2) { //put item up for sale
|
||||
byte itemtype = slea.readByte();
|
||||
int itemid = slea.readInt();
|
||||
slea.readShort();
|
||||
slea.skip(7);
|
||||
byte itemtype = p.readByte();
|
||||
int itemid = p.readInt();
|
||||
p.readShort();
|
||||
p.skip(7);
|
||||
short stars = 1;
|
||||
if (itemtype == 1) {
|
||||
slea.skip(32);
|
||||
p.skip(32);
|
||||
} else {
|
||||
stars = slea.readShort();
|
||||
stars = p.readShort();
|
||||
}
|
||||
slea.readMapleAsciiString(); //another useless thing (owner)
|
||||
p.readString(); //another useless thing (owner)
|
||||
if (itemtype == 1) {
|
||||
slea.skip(32);
|
||||
p.skip(32);
|
||||
} else {
|
||||
slea.readShort();
|
||||
p.readShort();
|
||||
}
|
||||
short slot;
|
||||
short quantity;
|
||||
if (itemtype != 1) {
|
||||
if (itemid / 10000 == 207 || itemid / 10000 == 233) {
|
||||
slea.skip(8);
|
||||
p.skip(8);
|
||||
}
|
||||
slot = (short) slea.readInt();
|
||||
slot = (short) p.readInt();
|
||||
} else {
|
||||
slot = (short) slea.readInt();
|
||||
slot = (short) p.readInt();
|
||||
}
|
||||
if (itemtype != 1) {
|
||||
if (itemid / 10000 == 207 || itemid / 10000 == 233) {
|
||||
quantity = stars;
|
||||
slea.skip(4);
|
||||
p.skip(4);
|
||||
} else {
|
||||
quantity = (short) slea.readInt();
|
||||
quantity = (short) p.readInt();
|
||||
}
|
||||
} else {
|
||||
quantity = (byte) slea.readInt();
|
||||
quantity = (byte) p.readInt();
|
||||
}
|
||||
int price = slea.readInt();
|
||||
int price = p.readInt();
|
||||
if (itemtype == 1) {
|
||||
quantity = 1;
|
||||
}
|
||||
@@ -228,15 +228,15 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
} else if (op == 3) { //send offer for wanted item
|
||||
} else if (op == 4) { //list wanted item
|
||||
slea.readInt();
|
||||
slea.readInt();
|
||||
slea.readInt();
|
||||
slea.readShort();
|
||||
slea.readMapleAsciiString();
|
||||
p.readInt();
|
||||
p.readInt();
|
||||
p.readInt();
|
||||
p.readShort();
|
||||
p.readString();
|
||||
} else if (op == 5) { //change page
|
||||
int tab = slea.readInt();
|
||||
int type = slea.readInt();
|
||||
int page = slea.readInt();
|
||||
int tab = p.readInt();
|
||||
int type = p.readInt();
|
||||
int page = p.readInt();
|
||||
c.getPlayer().changePage(page);
|
||||
if (tab == 4 && type == 0) {
|
||||
c.sendPacket(getCart(c.getPlayer().getId()));
|
||||
@@ -252,11 +252,11 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
|
||||
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
|
||||
} else if (op == 6) { //search
|
||||
int tab = slea.readInt();
|
||||
int type = slea.readInt();
|
||||
slea.readInt();
|
||||
int ci = slea.readInt();
|
||||
String search = slea.readMapleAsciiString();
|
||||
int tab = p.readInt();
|
||||
int type = p.readInt();
|
||||
p.readInt();
|
||||
int ci = p.readInt();
|
||||
String search = p.readString();
|
||||
c.getPlayer().setSearch(search);
|
||||
c.getPlayer().changeTab(tab);
|
||||
c.getPlayer().changeType(type);
|
||||
@@ -268,7 +268,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
|
||||
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
|
||||
} else if (op == 7) { //cancel sale
|
||||
int id = slea.readInt(); //id of the item
|
||||
int id = p.readInt(); //id of the item
|
||||
Connection con = null;
|
||||
try {
|
||||
con = DatabaseConnection.getConnection();
|
||||
@@ -290,7 +290,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
|
||||
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
|
||||
} else if (op == 8) { //transfer item from transfer inv.
|
||||
int id = slea.readInt(); //id of the item
|
||||
int id = p.readInt(); //id of the item
|
||||
Connection con = null;
|
||||
PreparedStatement ps;
|
||||
ResultSet rs;
|
||||
@@ -358,7 +358,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
System.out.println("MTS Transfer error: " + e);
|
||||
}
|
||||
} else if (op == 9) { //add to cart
|
||||
int id = slea.readInt(); //id of the item
|
||||
int id = p.readInt(); //id of the item
|
||||
Connection con;
|
||||
try {
|
||||
con = DatabaseConnection.getConnection();
|
||||
@@ -392,7 +392,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.transferInventory(getTransfer(c.getPlayer().getId())));
|
||||
c.sendPacket(PacketCreator.notYetSoldInv(getNotYetSold(c.getPlayer().getId())));
|
||||
} else if (op == 10) { //delete from cart
|
||||
int id = slea.readInt(); //id of the item
|
||||
int id = p.readInt(); //id of the item
|
||||
Connection con = null;
|
||||
try {
|
||||
con = DatabaseConnection.getConnection();
|
||||
@@ -413,7 +413,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
} else if (op == 13) { //cancel wanted cart thing
|
||||
} else if (op == 14) { //buy auction item now
|
||||
} else if (op == 16) { //buy
|
||||
int id = slea.readInt(); //id of the item
|
||||
int id = p.readInt(); //id of the item
|
||||
Connection con = null;
|
||||
PreparedStatement ps;
|
||||
ResultSet rs;
|
||||
@@ -477,7 +477,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.MTSFailBuy());
|
||||
}
|
||||
} else if (op == 17) { //buy from cart
|
||||
int id = slea.readInt(); //id of the item
|
||||
int id = p.readInt(); //id of the item
|
||||
Connection con = null;
|
||||
PreparedStatement ps;
|
||||
ResultSet rs;
|
||||
@@ -537,7 +537,7 @@ public final class MTSHandler extends AbstractMaplePacketHandler {
|
||||
c.sendPacket(PacketCreator.MTSFailBuy());
|
||||
}
|
||||
} else {
|
||||
System.out.println("Unhandled OP(MTS): " + op + " Packet: " + slea.toString());
|
||||
System.out.println("Unhandled OP(MTS): " + op + " Packet: " + p.toString());
|
||||
}
|
||||
} else {
|
||||
c.sendPacket(PacketCreator.showMTSCash(c.getPlayer()));
|
||||
|
||||
@@ -28,14 +28,14 @@ import constants.skills.Bishop;
|
||||
import constants.skills.Evan;
|
||||
import constants.skills.FPArchMage;
|
||||
import constants.skills.ILArchMage;
|
||||
import net.packet.InPacket;
|
||||
import net.packet.Packet;
|
||||
import server.MapleStatEffect;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class MagicDamageHandler extends AbstractDealDamageHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
|
||||
/*long timeElapsed = currentServerTime() - chr.getAutobanManager().getLastSpam(8);
|
||||
@@ -44,7 +44,7 @@ public final class MagicDamageHandler extends AbstractDealDamageHandler {
|
||||
}
|
||||
chr.getAutobanManager().spam(8);*/
|
||||
|
||||
AttackInfo attack = parseDamage(slea, chr, false, true);
|
||||
AttackInfo attack = parseDamage(p, chr, false, true);
|
||||
|
||||
if (chr.getBuffEffect(MapleBuffStat.MORPH) != null) {
|
||||
if(chr.getBuffEffect(MapleBuffStat.MORPH).isMorphWithoutAttack()) {
|
||||
|
||||
@@ -24,7 +24,7 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import client.processor.action.MakerProcessor;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -33,7 +33,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class MakerSkillHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
MakerProcessor.makerAction(slea, c);
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MakerProcessor.makerAction(p, c);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,8 +24,8 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -34,14 +34,14 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class MesoDropHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter player = c.getPlayer();
|
||||
if (!player.isAlive()) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
slea.skip(4);
|
||||
int meso = slea.readInt();
|
||||
p.skip(4);
|
||||
int meso = p.readInt();
|
||||
|
||||
if (c.tryacquireClient()) { // thanks imbee for noticing players not being able to throw mesos too fast
|
||||
try {
|
||||
|
||||
@@ -24,6 +24,7 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteResult;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
|
||||
@@ -32,21 +33,20 @@ import net.server.world.MapleMessenger;
|
||||
import net.server.world.MapleMessengerCharacter;
|
||||
import net.server.world.World;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class MessengerHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if (c.tryacquireClient()) {
|
||||
try {
|
||||
String input;
|
||||
byte mode = slea.readByte();
|
||||
byte mode = p.readByte();
|
||||
MapleCharacter player = c.getPlayer();
|
||||
World world = c.getWorldServer();
|
||||
MapleMessenger messenger = player.getMessenger();
|
||||
switch (mode) {
|
||||
case 0x00:
|
||||
int messengerid = slea.readInt();
|
||||
int messengerid = p.readInt();
|
||||
if (messenger == null) {
|
||||
if (messengerid == 0) {
|
||||
MapleInviteCoordinator.removeInvite(InviteType.MESSENGER, player.getId());
|
||||
@@ -84,7 +84,7 @@ public final class MessengerHandler extends AbstractMaplePacketHandler {
|
||||
if (messenger == null) {
|
||||
c.sendPacket(PacketCreator.messengerChat(player.getName() + " : This Maple Messenger is currently unavailable. Please quit this chat."));
|
||||
} else if (messenger.getMembers().size() < 3) {
|
||||
input = slea.readMapleAsciiString();
|
||||
input = p.readString();
|
||||
MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(input);
|
||||
if (target != null) {
|
||||
if (target.getMessenger() == null) {
|
||||
@@ -109,13 +109,13 @@ public final class MessengerHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
break;
|
||||
case 0x05:
|
||||
String targeted = slea.readMapleAsciiString();
|
||||
String targeted = p.readString();
|
||||
world.declineChat(targeted, player);
|
||||
break;
|
||||
case 0x06:
|
||||
if (messenger != null) {
|
||||
MapleMessengerCharacter messengerplayer = new MapleMessengerCharacter(player, player.getMessengerPosition());
|
||||
input = slea.readMapleAsciiString();
|
||||
input = p.readString();
|
||||
world.messengerChat(messenger, input, messengerplayer.getName());
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -21,16 +21,16 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.packet.InPacket;
|
||||
import server.life.MapleMonster;
|
||||
import server.life.MapleLifeFactory.BanishInfo;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class MobBanishPlayerHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int mobid = slea.readInt(); // mob banish handling detected thanks to MedicOP
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int mobid = p.readInt(); // mob banish handling detected thanks to MedicOP
|
||||
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
MapleMonster mob = chr.getMap().getMonsterById(mobid);
|
||||
|
||||
@@ -23,12 +23,12 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import scripting.event.EventInstanceManager;
|
||||
import server.life.MapleMonster;
|
||||
import server.maps.MapleMap;
|
||||
import tools.PacketCreator;
|
||||
import tools.Randomizer;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -37,10 +37,10 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class MobDamageMobFriendlyHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int attacker = slea.readInt();
|
||||
slea.readInt();
|
||||
int damaged = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int attacker = p.readInt();
|
||||
p.readInt();
|
||||
int damaged = p.readInt();
|
||||
|
||||
MapleMap map = c.getPlayer().getMap();
|
||||
MapleMonster monster = map.getMonsterByOid(damaged);
|
||||
|
||||
@@ -27,12 +27,12 @@ import client.autoban.AutobanFactory;
|
||||
import client.status.MonsterStatus;
|
||||
import client.status.MonsterStatusEffect;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.life.MapleMonster;
|
||||
import server.life.MapleMonsterInformationProvider;
|
||||
import server.maps.MapleMap;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@@ -43,12 +43,12 @@ import java.util.Map;
|
||||
*/
|
||||
public final class MobDamageMobHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int from = slea.readInt();
|
||||
slea.readInt();
|
||||
int to = slea.readInt();
|
||||
boolean magic = slea.readByte() == 0;
|
||||
int dmg = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int from = p.readInt();
|
||||
p.readInt();
|
||||
int to = p.readInt();
|
||||
boolean magic = p.readByte() == 0;
|
||||
int dmg = p.readInt();
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
|
||||
MapleMap map = chr.getMap();
|
||||
|
||||
@@ -23,14 +23,14 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.life.MapleMonster;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class MonsterBombHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int oid = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int oid = p.readInt();
|
||||
MapleMonster monster = c.getPlayer().getMap().getMonsterByOid(oid);
|
||||
if (!c.getPlayer().isAlive() || monster == null) {
|
||||
return;
|
||||
|
||||
@@ -23,12 +23,12 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class MonsterBookCoverHandler extends AbstractMaplePacketHandler {
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int id = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int id = p.readInt();
|
||||
if (id == 0 || id / 10000 == 238) {
|
||||
c.getPlayer().setMonsterBookCover(id);
|
||||
c.sendPacket(PacketCreator.changeCover(id));
|
||||
|
||||
@@ -25,6 +25,7 @@ import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import client.MapleDisease;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.world.MapleParty;
|
||||
import net.server.world.MaplePartyCharacter;
|
||||
import server.life.MapleLifeFactory;
|
||||
@@ -34,7 +35,6 @@ import server.partyquest.MapleCarnivalFactory.MCSkill;
|
||||
import server.partyquest.MonsterCarnival;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.List;
|
||||
@@ -47,12 +47,12 @@ import java.util.List;
|
||||
public final class MonsterCarnivalHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
if (c.tryacquireClient()) {
|
||||
try {
|
||||
try {
|
||||
int tab = slea.readByte();
|
||||
int num = slea.readByte();
|
||||
int tab = p.readByte();
|
||||
int num = p.readByte();
|
||||
int neededCP = 0;
|
||||
if (tab == 0) {
|
||||
final List<Pair<Integer, Integer>> mobs = c.getPlayer().getMap().getMobsToSpawn();
|
||||
|
||||
@@ -23,9 +23,9 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleDragon;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import tools.exceptions.EmptyMovementException;
|
||||
|
||||
import java.awt.*;
|
||||
@@ -33,21 +33,21 @@ import java.awt.*;
|
||||
|
||||
public class MoveDragonHandler extends AbstractMovementPacketHandler {
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
final MapleCharacter chr = c.getPlayer();
|
||||
final Point startPos = new Point(slea.readShort(), slea.readShort());
|
||||
final Point startPos = new Point(p.readShort(), p.readShort());
|
||||
final MapleDragon dragon = chr.getDragon();
|
||||
if (dragon != null) {
|
||||
try {
|
||||
long movementDataStart = slea.getPosition();
|
||||
updatePosition(slea, dragon, 0);
|
||||
long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition
|
||||
slea.seek(movementDataStart);
|
||||
int movementDataStart = p.getPosition();
|
||||
updatePosition(p, dragon, 0);
|
||||
long movementDataLength = p.getPosition() - movementDataStart; //how many bytes were read by updatePosition
|
||||
p.seek(movementDataStart);
|
||||
|
||||
if (chr.isHidden()) {
|
||||
chr.getMap().broadcastGMPacket(chr, PacketCreator.moveDragon(dragon, startPos, slea, movementDataLength));
|
||||
chr.getMap().broadcastGMPacket(chr, PacketCreator.moveDragon(dragon, startPos, p, movementDataLength));
|
||||
} else {
|
||||
chr.getMap().broadcastMessage(chr, PacketCreator.moveDragon(dragon, startPos, slea, movementDataLength), dragon.getPosition());
|
||||
chr.getMap().broadcastMessage(chr, PacketCreator.moveDragon(dragon, startPos, p, movementDataLength), dragon.getPosition());
|
||||
}
|
||||
} catch (EmptyMovementException e) {}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import config.YamlConfig;
|
||||
import net.packet.InPacket;
|
||||
import server.life.MapleMonster;
|
||||
import server.life.MapleMonsterInformationProvider;
|
||||
import server.life.MobSkill;
|
||||
@@ -34,7 +35,6 @@ import server.maps.MapleMapObjectType;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.Randomizer;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import tools.exceptions.EmptyMovementException;
|
||||
|
||||
import java.awt.*;
|
||||
@@ -49,7 +49,7 @@ import java.util.List;
|
||||
public final class MoveLifeHandler extends AbstractMovementPacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter player = c.getPlayer();
|
||||
MapleMap map = player.getMap();
|
||||
|
||||
@@ -57,8 +57,8 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
int objectid = slea.readInt();
|
||||
short moveid = slea.readShort();
|
||||
int objectid = p.readInt();
|
||||
short moveid = p.readShort();
|
||||
MapleMapObject mmo = map.getMapObject(objectid);
|
||||
if (mmo == null || mmo.getType() != MapleMapObjectType.MONSTER) {
|
||||
return;
|
||||
@@ -67,12 +67,12 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler {
|
||||
MapleMonster monster = (MapleMonster) mmo;
|
||||
List<MapleCharacter> banishPlayers = null;
|
||||
|
||||
byte pNibbles = slea.readByte();
|
||||
byte rawActivity = slea.readByte();
|
||||
int skillId = slea.readByte() & 0xff;
|
||||
int skillLv = slea.readByte() & 0xff;
|
||||
short pOption = slea.readShort();
|
||||
slea.skip(8);
|
||||
byte pNibbles = p.readByte();
|
||||
byte rawActivity = p.readByte();
|
||||
int skillId = p.readByte() & 0xff;
|
||||
int skillLv = p.readByte() & 0xff;
|
||||
short pOption = p.readShort();
|
||||
p.skip(8);
|
||||
|
||||
if (rawActivity >= 0) {
|
||||
rawActivity = (byte) (rawActivity & 0xFF >> 1);
|
||||
@@ -139,10 +139,10 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler {
|
||||
}
|
||||
}
|
||||
|
||||
slea.readByte();
|
||||
slea.readInt(); // whatever
|
||||
short start_x = slea.readShort(); // hmm.. startpos?
|
||||
short start_y = slea.readShort(); // hmm...
|
||||
p.readByte();
|
||||
p.readInt(); // whatever
|
||||
short start_x = p.readShort(); // hmm.. startpos?
|
||||
short start_y = p.readShort(); // hmm...
|
||||
Point startPos = new Point(start_x, start_y - 2);
|
||||
Point serverStartPos = new Point(monster.getPosition());
|
||||
|
||||
@@ -157,16 +157,16 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler {
|
||||
|
||||
|
||||
try {
|
||||
long movementDataStart = slea.getPosition();
|
||||
updatePosition(slea, monster, -2); // Thanks Doodle & ZERO傑洛 for noticing sponge-based bosses moving out of stage in case of no-offset applied
|
||||
long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition
|
||||
slea.seek(movementDataStart);
|
||||
int movementDataStart = p.getPosition();
|
||||
updatePosition(p, monster, -2); // Thanks Doodle & ZERO傑洛 for noticing sponge-based bosses moving out of stage in case of no-offset applied
|
||||
long movementDataLength = p.getPosition() - movementDataStart; //how many bytes were read by updatePosition
|
||||
p.seek(movementDataStart);
|
||||
|
||||
if (YamlConfig.config.server.USE_DEBUG_SHOW_RCVD_MVLIFE) {
|
||||
System.out.println((isSkill ? "SKILL " : (isAttack ? "ATTCK " : " ")) + "castPos: " + castPos + " rawAct: " + rawActivity + " opt: " + pOption + " skillID: " + useSkillId + " skillLV: " + useSkillLevel + " " + "allowSkill: " + nextMovementCouldBeSkill + " mobMp: " + mobMp);
|
||||
}
|
||||
|
||||
map.broadcastMessage(player, PacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, slea, movementDataLength), serverStartPos);
|
||||
map.broadcastMessage(player, PacketCreator.moveMonster(objectid, nextMovementCouldBeSkill, rawActivity, useSkillId, useSkillLevel, pOption, startPos, p, movementDataLength), serverStartPos);
|
||||
//updatePosition(res, monster, -2); //does this need to be done after the packet is broadcast?
|
||||
map.moveMonster(monster, monster.getPosition());
|
||||
} catch (EmptyMovementException e) {}
|
||||
|
||||
@@ -23,23 +23,23 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.packet.InPacket;
|
||||
import server.movement.LifeMovementFragment;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import tools.exceptions.EmptyMovementException;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public final class MovePetHandler extends AbstractMovementPacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int petId = slea.readInt();
|
||||
slea.readLong();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int petId = p.readInt();
|
||||
p.readLong();
|
||||
// Point startPos = StreamUtil.readShortPoint(slea);
|
||||
List<LifeMovementFragment> res;
|
||||
|
||||
try {
|
||||
res = parseMovement(slea);
|
||||
res = parseMovement(p);
|
||||
} catch (EmptyMovementException e) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -22,25 +22,25 @@
|
||||
package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import tools.exceptions.EmptyMovementException;
|
||||
|
||||
public final class MovePlayerHandler extends AbstractMovementPacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.skip(9);
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.skip(9);
|
||||
try { // thanks Sa for noticing empty movement sequences crashing players
|
||||
long movementDataStart = slea.getPosition();
|
||||
updatePosition(slea, c.getPlayer(), 0);
|
||||
long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition
|
||||
slea.seek(movementDataStart);
|
||||
int movementDataStart = p.getPosition();
|
||||
updatePosition(p, c.getPlayer(), 0);
|
||||
long movementDataLength = p.getPosition() - movementDataStart; //how many bytes were read by updatePosition
|
||||
p.seek(movementDataStart);
|
||||
|
||||
c.getPlayer().getMap().movePlayer(c.getPlayer(), c.getPlayer().getPosition());
|
||||
if (c.getPlayer().isHidden()) {
|
||||
c.getPlayer().getMap().broadcastGMMessage(c.getPlayer(), PacketCreator.movePlayer(c.getPlayer().getId(), slea, movementDataLength), false);
|
||||
c.getPlayer().getMap().broadcastGMMessage(c.getPlayer(), PacketCreator.movePlayer(c.getPlayer().getId(), p, movementDataLength), false);
|
||||
} else {
|
||||
c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PacketCreator.movePlayer(c.getPlayer().getId(), slea, movementDataLength), false);
|
||||
c.getPlayer().getMap().broadcastMessage(c.getPlayer(), PacketCreator.movePlayer(c.getPlayer().getId(), p, movementDataLength), false);
|
||||
}
|
||||
} catch (EmptyMovementException e) {}
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleSummon;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import tools.exceptions.EmptyMovementException;
|
||||
|
||||
import java.awt.*;
|
||||
@@ -33,9 +33,9 @@ import java.util.Collection;
|
||||
|
||||
public final class MoveSummonHandler extends AbstractMovementPacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int oid = slea.readInt();
|
||||
Point startPos = new Point(slea.readShort(), slea.readShort());
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int oid = p.readInt();
|
||||
Point startPos = new Point(p.readShort(), p.readShort());
|
||||
MapleCharacter player = c.getPlayer();
|
||||
Collection<MapleSummon> summons = player.getSummonsValues();
|
||||
MapleSummon summon = null;
|
||||
@@ -47,12 +47,12 @@ public final class MoveSummonHandler extends AbstractMovementPacketHandler {
|
||||
}
|
||||
if (summon != null) {
|
||||
try {
|
||||
long movementDataStart = slea.getPosition();
|
||||
updatePosition(slea, summon, 0);
|
||||
long movementDataLength = slea.getPosition() - movementDataStart; //how many bytes were read by updatePosition
|
||||
slea.seek(movementDataStart);
|
||||
int movementDataStart = p.getPosition();
|
||||
updatePosition(p, summon, 0);
|
||||
long movementDataLength = p.getPosition() - movementDataStart; //how many bytes were read by updatePosition
|
||||
p.seek(movementDataStart);
|
||||
|
||||
player.getMap().broadcastMessage(player, PacketCreator.moveSummon(player.getId(), oid, startPos, slea, movementDataLength), summon.getPosition());
|
||||
player.getMap().broadcastMessage(player, PacketCreator.moveSummon(player.getId(), oid, startPos, p, movementDataLength), summon.getPosition());
|
||||
} catch (EmptyMovementException e) {}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,28 +26,28 @@ import client.MapleClient;
|
||||
import client.autoban.AutobanFactory;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import net.server.world.World;
|
||||
import tools.FilePrinter;
|
||||
import tools.LogHelper;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class MultiChatHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter player = c.getPlayer();
|
||||
if(player.getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) {
|
||||
return;
|
||||
}
|
||||
|
||||
int type = slea.readByte(); // 0 for buddys, 1 for partys
|
||||
int numRecipients = slea.readByte();
|
||||
int type = p.readByte(); // 0 for buddys, 1 for partys
|
||||
int numRecipients = p.readByte();
|
||||
int[] recipients = new int[numRecipients];
|
||||
for (int i = 0; i < numRecipients; i++) {
|
||||
recipients[i] = slea.readInt();
|
||||
recipients[i] = p.readInt();
|
||||
}
|
||||
String chattext = slea.readMapleAsciiString();
|
||||
String chattext = p.readString();
|
||||
if (chattext.length() > Byte.MAX_VALUE && !player.isGM()) {
|
||||
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit chats.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + chattext.length());
|
||||
|
||||
@@ -24,26 +24,26 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.opcodes.SendOpcode;
|
||||
import net.packet.InPacket;
|
||||
import net.packet.OutPacket;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class NPCAnimationHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if (c.getPlayer().isChangingMaps()) { // possible cause of error 38 in some map transition scenarios, thanks Arnah
|
||||
return;
|
||||
}
|
||||
|
||||
OutPacket p = OutPacket.create(SendOpcode.NPC_ACTION);
|
||||
int length = (int) slea.available();
|
||||
OutPacket op = OutPacket.create(SendOpcode.NPC_ACTION);
|
||||
int length = p.available();
|
||||
if (length == 6) { // NPC Talk
|
||||
p.writeInt(slea.readInt());
|
||||
p.writeByte(slea.readByte()); // 2 bytes, thanks resinate
|
||||
p.writeByte(slea.readByte());
|
||||
op.writeInt(p.readInt());
|
||||
op.writeByte(p.readByte()); // 2 bytes, thanks resinate
|
||||
op.writeByte(p.readByte());
|
||||
} else if (length > 6) { // NPC Move
|
||||
byte[] bytes = slea.read(length - 9);
|
||||
p.writeBytes(bytes);
|
||||
byte[] bytes = p.readBytes(length - 9);
|
||||
op.writeBytes(bytes);
|
||||
}
|
||||
c.sendPacket(p);
|
||||
c.sendPacket(op);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,9 +23,9 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import scripting.npc.NPCScriptManager;
|
||||
import scripting.quest.QuestScriptManager;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -33,12 +33,12 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class NPCMoreTalkHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
byte lastMsg = slea.readByte(); // 00 (last msg type I think)
|
||||
byte action = slea.readByte(); // 00 = end chat, 01 == follow
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
byte lastMsg = p.readByte(); // 00 (last msg type I think)
|
||||
byte action = p.readByte(); // 00 = end chat, 01 == follow
|
||||
if (lastMsg == 2) {
|
||||
if (action != 0) {
|
||||
String returnText = slea.readMapleAsciiString();
|
||||
String returnText = p.readString();
|
||||
if (c.getQM() != null) {
|
||||
c.getQM().setGetText(returnText);
|
||||
if (c.getQM().isStart()) {
|
||||
@@ -57,10 +57,10 @@ public final class NPCMoreTalkHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
} else {
|
||||
int selection = -1;
|
||||
if (slea.available() >= 4) {
|
||||
selection = slea.readInt();
|
||||
} else if (slea.available() > 0) {
|
||||
selection = slea.readByte();
|
||||
if (p.available() >= 4) {
|
||||
selection = p.readInt();
|
||||
} else if (p.available() > 0) {
|
||||
selection = p.readByte();
|
||||
}
|
||||
if (c.getQM() != null) {
|
||||
if (c.getQM().isStart()) {
|
||||
|
||||
@@ -25,20 +25,20 @@ import client.MapleClient;
|
||||
import client.autoban.AutobanFactory;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.FilePrinter;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Matze
|
||||
*/
|
||||
public final class NPCShopHandler extends AbstractMaplePacketHandler {
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
byte bmode = slea.readByte();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
byte bmode = p.readByte();
|
||||
if (bmode == 0) { // mode 0 = buy :)
|
||||
short slot = slea.readShort();// slot
|
||||
int itemId = slea.readInt();
|
||||
short quantity = slea.readShort();
|
||||
short slot = p.readShort();// slot
|
||||
int itemId = p.readInt();
|
||||
short quantity = p.readShort();
|
||||
if (quantity < 1) {
|
||||
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit a npc shop.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to buy quantity " + quantity + " of item id " + itemId);
|
||||
@@ -47,12 +47,12 @@ public final class NPCShopHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
c.getPlayer().getShop().buy(c, slot, itemId, quantity);
|
||||
} else if (bmode == 1) { // sell ;)
|
||||
short slot = slea.readShort();
|
||||
int itemId = slea.readInt();
|
||||
short quantity = slea.readShort();
|
||||
short slot = p.readShort();
|
||||
int itemId = p.readInt();
|
||||
short quantity = p.readShort();
|
||||
c.getPlayer().getShop().sell(c, ItemConstants.getInventoryType(itemId), slot, quantity);
|
||||
} else if (bmode == 2) { // recharge ;)
|
||||
byte slot = (byte) slea.readShort();
|
||||
byte slot = (byte) p.readShort();
|
||||
c.getPlayer().getShop().recharge(c, slot);
|
||||
} else if (bmode == 3) { // leaving :(
|
||||
c.getPlayer().setShop(null);
|
||||
|
||||
@@ -25,17 +25,17 @@ import client.MapleClient;
|
||||
import client.processor.npc.DueyProcessor;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import scripting.npc.NPCScriptManager;
|
||||
import server.life.MapleNPC;
|
||||
import server.life.MaplePlayerNPC;
|
||||
import server.maps.MapleMapObject;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class NPCTalkHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if (!c.getPlayer().isAlive()) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
@@ -46,7 +46,7 @@ public final class NPCTalkHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
int oid = slea.readInt();
|
||||
int oid = p.readInt();
|
||||
MapleMapObject obj = c.getPlayer().getMap().getMapObject(oid);
|
||||
if (obj instanceof MapleNPC) {
|
||||
MapleNPC npc = (MapleNPC) obj;
|
||||
|
||||
@@ -25,10 +25,10 @@ import client.inventory.Item;
|
||||
import client.newyear.NewYearCardRecord;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -44,24 +44,24 @@ import java.sql.SQLException;
|
||||
public final class NewYearCardHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
final MapleCharacter player = c.getPlayer();
|
||||
byte reqMode = slea.readByte(); //[00] -> NewYearReq (0 = Send)
|
||||
byte reqMode = p.readByte(); //[00] -> NewYearReq (0 = Send)
|
||||
|
||||
if(reqMode == 0) { // card has been sent
|
||||
if(player.haveItem(2160101)) { // new year's card
|
||||
short slot = slea.readShort(); //[00 2C] -> nPOS (Item Slot Pos)
|
||||
int itemid = slea.readInt(); //[00 20 F5 E5] -> nItemID (item id)
|
||||
short slot = p.readShort(); //[00 2C] -> nPOS (Item Slot Pos)
|
||||
int itemid = p.readInt(); //[00 20 F5 E5] -> nItemID (item id)
|
||||
|
||||
int status = getValidNewYearCardStatus(itemid, player, slot);
|
||||
if(status == 0) {
|
||||
if(player.canHold(4300000, 1)) {
|
||||
String receiver = slea.readMapleAsciiString(); //[04 00 54 65 73 74] -> sReceiverName (person to send to)
|
||||
String receiver = p.readString(); //[04 00 54 65 73 74] -> sReceiverName (person to send to)
|
||||
|
||||
int receiverid = getReceiverId(receiver, c.getWorld());
|
||||
if(receiverid != -1) {
|
||||
if(receiverid != c.getPlayer().getId()) {
|
||||
String message = slea.readMapleAsciiString(); //[06 00 4C 65 74 74 65 72] -> sContent (message)
|
||||
String message = p.readString(); //[06 00 4C 65 74 74 65 72] -> sContent (message)
|
||||
|
||||
NewYearCardRecord newyear = new NewYearCardRecord(player.getId(), player.getName(), receiverid, receiver, message);
|
||||
NewYearCardRecord.saveNewYearCard(newyear);
|
||||
@@ -89,7 +89,7 @@ public final class NewYearCardHandler extends AbstractMaplePacketHandler {
|
||||
player.sendPacket(PacketCreator.onNewYearCardRes(player, -1, 5, 0x11)); // have no card to send
|
||||
}
|
||||
} else { //receiver accepted the card
|
||||
int cardid = slea.readInt();
|
||||
int cardid = p.readInt();
|
||||
|
||||
NewYearCardRecord newyear = NewYearCardRecord.loadNewYearCard(cardid);
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.PreparedStatement;
|
||||
@@ -34,11 +34,11 @@ import java.sql.SQLException;
|
||||
|
||||
public final class NoteActionHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int action = slea.readByte();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int action = p.readByte();
|
||||
if (action == 0 && c.getPlayer().getCashShop().getAvailableNotes() > 0) {
|
||||
String charname = slea.readMapleAsciiString();
|
||||
String message = slea.readMapleAsciiString();
|
||||
String charname = p.readString();
|
||||
String message = p.readString();
|
||||
try {
|
||||
if (c.getPlayer().getCashShop().isOpened()) {
|
||||
c.sendPacket(PacketCreator.showCashInventory(c));
|
||||
@@ -50,13 +50,13 @@ public final class NoteActionHandler extends AbstractMaplePacketHandler {
|
||||
e.printStackTrace();
|
||||
}
|
||||
} else if (action == 1) {
|
||||
int num = slea.readByte();
|
||||
slea.readByte();
|
||||
slea.readByte();
|
||||
int num = p.readByte();
|
||||
p.readByte();
|
||||
p.readByte();
|
||||
int fame = 0;
|
||||
for (int i = 0; i < num; i++) {
|
||||
int id = slea.readInt();
|
||||
slea.readByte(); //Fame, but we read it from the database :)
|
||||
int id = p.readInt();
|
||||
p.readByte(); //Fame, but we read it from the database :)
|
||||
|
||||
try (Connection con = DatabaseConnection.getConnection()) {
|
||||
try (PreparedStatement ps = con.prepareStatement("SELECT `fame` FROM notes WHERE id=? AND deleted=0")) {
|
||||
|
||||
@@ -23,8 +23,8 @@ import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -32,7 +32,7 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class OpenFamilyHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return;
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
c.sendPacket(PacketCreator.getFamilyInfo(chr.getFamilyEntry()));
|
||||
|
||||
@@ -23,8 +23,8 @@ import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -32,9 +32,9 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public final class OpenFamilyPedigreeHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if(!YamlConfig.config.server.USE_FAMILY_SYSTEM) return;
|
||||
MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(slea.readMapleAsciiString());
|
||||
MapleCharacter target = c.getChannelServer().getPlayerStorage().getCharacterByName(p.readString());
|
||||
if(target != null && target.getFamily() != null) {
|
||||
c.sendPacket(PacketCreator.showPedigree(target.getFamilyEntry()));
|
||||
}
|
||||
|
||||
@@ -22,10 +22,10 @@ package net.server.channel.handlers;
|
||||
import client.MapleClient;
|
||||
import constants.game.GameConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleHiredMerchant;
|
||||
import server.maps.MaplePlayerShop;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/*
|
||||
* @author Ronan
|
||||
@@ -33,9 +33,9 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class OwlWarpHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int ownerid = slea.readInt();
|
||||
int mapid = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int ownerid = p.readInt();
|
||||
int mapid = p.readInt();
|
||||
|
||||
if(ownerid == c.getPlayer().getId()) {
|
||||
c.sendPacket(PacketCreator.serverNotice(1, "You cannot visit your own shop."));
|
||||
|
||||
@@ -25,6 +25,7 @@ import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteResult;
|
||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
|
||||
@@ -34,15 +35,14 @@ import net.server.world.MaplePartyCharacter;
|
||||
import net.server.world.PartyOperation;
|
||||
import net.server.world.World;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public final class PartyOperationHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int operation = slea.readByte();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int operation = p.readByte();
|
||||
MapleCharacter player = c.getPlayer();
|
||||
World world = c.getWorldServer();
|
||||
MapleParty party = player.getParty();
|
||||
@@ -62,7 +62,7 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler {
|
||||
break;
|
||||
}
|
||||
case 3: { // join
|
||||
int partyid = slea.readInt();
|
||||
int partyid = p.readInt();
|
||||
|
||||
MapleInviteResult inviteRes = MapleInviteCoordinator.answerInvite(InviteType.PARTY, player.getId(), partyid, true);
|
||||
InviteResult res = inviteRes.result;
|
||||
@@ -74,7 +74,7 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler {
|
||||
break;
|
||||
}
|
||||
case 4: { // invite
|
||||
String name = slea.readMapleAsciiString();
|
||||
String name = p.readString();
|
||||
MapleCharacter invited = world.getPlayerStorage().getCharacterByName(name);
|
||||
if (invited != null) {
|
||||
if(invited.getLevel() < 10 && (!YamlConfig.config.server.USE_PARTY_FOR_STARTERS || player.getLevel() >= 10)) { //min requirement is level 10
|
||||
@@ -112,12 +112,12 @@ public final class PartyOperationHandler extends AbstractMaplePacketHandler {
|
||||
break;
|
||||
}
|
||||
case 5: { // expel
|
||||
int cid = slea.readInt();
|
||||
int cid = p.readInt();
|
||||
MapleParty.expelFromParty(party, c, cid);
|
||||
break;
|
||||
}
|
||||
case 6: { // change leader
|
||||
int newLeader = slea.readInt();
|
||||
int newLeader = p.readInt();
|
||||
MaplePartyCharacter newLeadr = party.getMemberById(newLeader);
|
||||
world.updateParty(party.getId(), PartyOperation.CHANGE_LEADER, newLeadr);
|
||||
break;
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
package net.server.channel.handlers;
|
||||
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
import client.MapleClient;
|
||||
|
||||
/**
|
||||
@@ -32,5 +32,5 @@ import client.MapleClient;
|
||||
public class PartySearchRegisterHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {}
|
||||
public void handlePacket(InPacket p, MapleClient c) {}
|
||||
}
|
||||
@@ -24,10 +24,10 @@ package net.server.channel.handlers;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.world.MapleParty;
|
||||
import net.server.world.World;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -37,9 +37,9 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
*/
|
||||
public class PartySearchStartHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int min = slea.readInt();
|
||||
int max = slea.readInt();
|
||||
public void handlePacket(InPacket p, MapleClient c) {
|
||||
int min = p.readInt();
|
||||
int max = p.readInt();
|
||||
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
if (min > max) {
|
||||
@@ -60,8 +60,8 @@ public class PartySearchStartHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
slea.readInt(); // members
|
||||
int jobs = slea.readInt();
|
||||
p.readInt(); // members
|
||||
int jobs = p.readInt();
|
||||
|
||||
MapleParty party = c.getPlayer().getParty();
|
||||
if (party == null || !c.getPlayer().isPartyLeader()) return;
|
||||
|
||||
@@ -23,12 +23,12 @@ package net.server.channel.handlers;
|
||||
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
public final class PartySearchUpdateHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
c.getWorldServer().getPartySearchCoordinator().unregisterPartyLeader(c.getPlayer());
|
||||
}
|
||||
}
|
||||
@@ -25,19 +25,19 @@ import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import client.processor.action.PetAutopotProcessor;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.MapleItemInformationProvider;
|
||||
import server.MapleStatEffect;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class PetAutoPotHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
slea.readByte();
|
||||
slea.readLong();
|
||||
slea.readInt();
|
||||
short slot = slea.readShort();
|
||||
int itemId = slea.readInt();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
p.readByte();
|
||||
p.readLong();
|
||||
p.readInt();
|
||||
short slot = p.readShort();
|
||||
int itemId = p.readInt();
|
||||
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
MapleStatEffect stat = MapleItemInformationProvider.getInstance().getItemEffect(itemId);
|
||||
|
||||
@@ -25,24 +25,24 @@ import client.MapleClient;
|
||||
import client.autoban.AutobanFactory;
|
||||
import config.YamlConfig;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.FilePrinter;
|
||||
import tools.LogHelper;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class PetChatHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
int petId = slea.readInt();
|
||||
slea.readInt();
|
||||
slea.readByte();
|
||||
int act = slea.readByte();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
int petId = p.readInt();
|
||||
p.readInt();
|
||||
p.readByte();
|
||||
int act = p.readByte();
|
||||
byte pet = c.getPlayer().getPetIndex(petId);
|
||||
if ((pet < 0 || pet > 3) || (act < 0 || act > 9)) {
|
||||
return;
|
||||
}
|
||||
String text = slea.readMapleAsciiString();
|
||||
String text = p.readString();
|
||||
if (text.length() > Byte.MAX_VALUE) {
|
||||
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with pets.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + text.length());
|
||||
|
||||
@@ -27,16 +27,16 @@ import client.inventory.MaplePet;
|
||||
import client.inventory.PetCommand;
|
||||
import client.inventory.PetDataFactory;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.PacketCreator;
|
||||
import tools.Randomizer;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class PetCommandHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
int petId = slea.readInt();
|
||||
int petId = p.readInt();
|
||||
byte petIndex = chr.getPetIndex(petId);
|
||||
MaplePet pet;
|
||||
if (petIndex == -1) {
|
||||
@@ -44,9 +44,9 @@ public final class PetCommandHandler extends AbstractMaplePacketHandler {
|
||||
} else {
|
||||
pet = chr.getPet(petIndex);
|
||||
}
|
||||
slea.readInt();
|
||||
slea.readByte();
|
||||
byte command = slea.readByte();
|
||||
p.readInt();
|
||||
p.readByte();
|
||||
byte command = p.readByte();
|
||||
PetCommand petCommand = PetDataFactory.getPetCommand(pet.getItemId(), command);
|
||||
if (petCommand == null) {
|
||||
return;
|
||||
|
||||
@@ -26,7 +26,7 @@ import client.MapleClient;
|
||||
import client.autoban.AutobanFactory;
|
||||
import client.inventory.MaplePet;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import net.packet.InPacket;
|
||||
|
||||
/**
|
||||
* @author BubblesDev
|
||||
@@ -35,9 +35,9 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class PetExcludeItemsHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
final int petId = slea.readInt();
|
||||
slea.skip(4); // timestamp
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
final int petId = p.readInt();
|
||||
p.skip(4); // timestamp
|
||||
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
byte petIndex = chr.getPetIndex(petId);
|
||||
@@ -49,9 +49,9 @@ public final class PetExcludeItemsHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
|
||||
chr.resetExcluded(petId);
|
||||
byte amount = slea.readByte();
|
||||
byte amount = p.readByte();
|
||||
for (int i = 0; i < amount; i++) {
|
||||
int itemId = slea.readInt();
|
||||
int itemId = p.readInt();
|
||||
if (itemId >= 0) {
|
||||
chr.addExcluded(petId, itemId);
|
||||
} else {
|
||||
|
||||
@@ -30,14 +30,14 @@ import client.inventory.MapleInventoryType;
|
||||
import client.inventory.MaplePet;
|
||||
import client.inventory.manipulator.MapleInventoryManipulator;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
public final class PetFoodHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
AutobanManager abm = chr.getAutobanManager();
|
||||
if (abm.getLastSpam(2) + 500 > currentServerTime()) {
|
||||
@@ -45,7 +45,7 @@ public final class PetFoodHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
abm.spam(2);
|
||||
slea.readInt(); // timestamp issue detected thanks to Masterrulax
|
||||
p.readInt(); // timestamp issue detected thanks to Masterrulax
|
||||
abm.setTimestamp(1, Server.getInstance().getCurrentTimestamp(), 3);
|
||||
if (chr.getNoPets() == 0) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
@@ -66,8 +66,8 @@ public final class PetFoodHandler extends AbstractMaplePacketHandler {
|
||||
MaplePet pet = chr.getPet(slot);
|
||||
if(pet == null) return;
|
||||
|
||||
short pos = slea.readShort();
|
||||
int itemId = slea.readInt();
|
||||
short pos = p.readShort();
|
||||
int itemId = p.readInt();
|
||||
|
||||
if (c.tryacquireClient()) {
|
||||
try {
|
||||
|
||||
@@ -25,10 +25,10 @@ import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import client.inventory.MaplePet;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.maps.MapleMapItem;
|
||||
import server.maps.MapleMapObject;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@@ -38,18 +38,18 @@ import java.util.Set;
|
||||
*/
|
||||
public final class PetLootHandler extends AbstractMaplePacketHandler {
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
|
||||
int petIndex = chr.getPetIndex(slea.readInt());
|
||||
int petIndex = chr.getPetIndex(p.readInt());
|
||||
MaplePet pet = chr.getPet(petIndex);
|
||||
if (pet == null || !pet.isSummoned()) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
|
||||
slea.skip(13);
|
||||
int oid = slea.readInt();
|
||||
p.skip(13);
|
||||
int oid = p.readInt();
|
||||
MapleMapObject ob = chr.getMap().getMapObject(oid);
|
||||
try {
|
||||
MapleMapItem mapitem = (MapleMapItem) ob;
|
||||
|
||||
@@ -33,13 +33,13 @@ import config.YamlConfig;
|
||||
import constants.game.GameConstants;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.MapleItemInformationProvider;
|
||||
import server.MapleTrade;
|
||||
import server.maps.*;
|
||||
import server.maps.MapleMiniGame.MiniGameType;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.awt.*;
|
||||
import java.sql.SQLException;
|
||||
@@ -126,14 +126,14 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
if (!c.tryacquireClient()) { // thanks GabrielSin for pointing dupes within player interactions
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
byte mode = slea.readByte();
|
||||
byte mode = p.readByte();
|
||||
final MapleCharacter chr = c.getPlayer();
|
||||
|
||||
if (mode == Action.CREATE.getCode()) {
|
||||
@@ -142,7 +142,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
byte createType = slea.readByte();
|
||||
byte createType = p.readByte();
|
||||
if (createType == 3) { // trade
|
||||
MapleTrade.startTrade(chr);
|
||||
} else if (createType == 1) { // omok mini game
|
||||
@@ -152,16 +152,16 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
String desc = slea.readMapleAsciiString();
|
||||
String desc = p.readString();
|
||||
String pw;
|
||||
|
||||
if (slea.readByte() != 0) {
|
||||
pw = slea.readMapleAsciiString();
|
||||
if (p.readByte() != 0) {
|
||||
pw = p.readString();
|
||||
} else {
|
||||
pw = "";
|
||||
}
|
||||
|
||||
int type = slea.readByte();
|
||||
int type = p.readByte();
|
||||
if (type > 11) {
|
||||
type = 11;
|
||||
} else if (type < 0) {
|
||||
@@ -186,16 +186,16 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
String desc = slea.readMapleAsciiString();
|
||||
String desc = p.readString();
|
||||
String pw;
|
||||
|
||||
if (slea.readByte() != 0) {
|
||||
pw = slea.readMapleAsciiString();
|
||||
if (p.readByte() != 0) {
|
||||
pw = p.readString();
|
||||
} else {
|
||||
pw = "";
|
||||
}
|
||||
|
||||
int type = slea.readByte();
|
||||
int type = p.readByte();
|
||||
if (type > 2) {
|
||||
type = 2;
|
||||
} else if (type < 0) {
|
||||
@@ -236,9 +236,9 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
String desc = slea.readMapleAsciiString();
|
||||
slea.skip(3);
|
||||
int itemId = slea.readInt();
|
||||
String desc = p.readString();
|
||||
p.skip(3);
|
||||
int itemId = p.readInt();
|
||||
if (chr.getInventory(MapleInventoryType.CASH).countById(itemId) < 1) {
|
||||
chr.sendPacket(PacketCreator.getMiniRoomError(6));
|
||||
return;
|
||||
@@ -260,7 +260,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
}
|
||||
} else if (mode == Action.INVITE.getCode()) {
|
||||
int otherCid = slea.readInt();
|
||||
int otherCid = p.readInt();
|
||||
MapleCharacter other = chr.getMap().getCharacterById(otherCid);
|
||||
if (other == null || chr.getId() == other.getId()) {
|
||||
return;
|
||||
@@ -280,14 +280,14 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
} else {
|
||||
if (isTradeOpen(chr)) return;
|
||||
|
||||
int oid = slea.readInt();
|
||||
int oid = p.readInt();
|
||||
MapleMapObject ob = chr.getMap().getMapObject(oid);
|
||||
if (ob instanceof MaplePlayerShop) {
|
||||
MaplePlayerShop shop = (MaplePlayerShop) ob;
|
||||
shop.visitShop(chr);
|
||||
} else if (ob instanceof MapleMiniGame) {
|
||||
slea.skip(1);
|
||||
String pw = slea.available() > 1 ? slea.readMapleAsciiString() : "";
|
||||
p.skip(1);
|
||||
String pw = p.available() > 1 ? p.readString() : "";
|
||||
|
||||
MapleMiniGame game = (MapleMiniGame) ob;
|
||||
if(game.checkPassword(pw)) {
|
||||
@@ -316,19 +316,19 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
} else if (mode == Action.CHAT.getCode()) { // chat lol
|
||||
MapleHiredMerchant merchant = chr.getHiredMerchant();
|
||||
if (chr.getTrade() != null) {
|
||||
chr.getTrade().chat(slea.readMapleAsciiString());
|
||||
chr.getTrade().chat(p.readString());
|
||||
} else if (chr.getPlayerShop() != null) { //mini game
|
||||
MaplePlayerShop shop = chr.getPlayerShop();
|
||||
if (shop != null) {
|
||||
shop.chat(c, slea.readMapleAsciiString());
|
||||
shop.chat(c, p.readString());
|
||||
}
|
||||
} else if (chr.getMiniGame() != null) {
|
||||
MapleMiniGame game = chr.getMiniGame();
|
||||
if (game != null) {
|
||||
game.chat(c, slea.readMapleAsciiString());
|
||||
game.chat(c, p.readString());
|
||||
}
|
||||
} else if (merchant != null) {
|
||||
merchant.sendMessage(chr, slea.readMapleAsciiString());
|
||||
merchant.sendMessage(chr, p.readString());
|
||||
}
|
||||
} else if (mode == Action.EXIT.getCode()) {
|
||||
if (chr.getTrade() != null) {
|
||||
@@ -342,10 +342,10 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
if (isTradeOpen(chr)) return;
|
||||
|
||||
if (mode == Action.OPEN_STORE.getCode()) {
|
||||
slea.readByte(); //01
|
||||
p.readByte(); //01
|
||||
} else {
|
||||
slea.readShort();
|
||||
int birthday = slea.readInt();
|
||||
p.readShort();
|
||||
int birthday = p.readInt();
|
||||
if (!CashOperationHandler.checkBirthday(c, birthday)) { // birthday check here found thanks to lucasziron
|
||||
c.sendPacket(PacketCreator.serverNotice(1, "Please check again the birthday date."));
|
||||
return;
|
||||
@@ -420,7 +420,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
} else if (mode == Action.ANSWER_TIE.getCode()) {
|
||||
MapleMiniGame game = chr.getMiniGame();
|
||||
if (slea.readByte() != 0) {
|
||||
if (p.readByte() != 0) {
|
||||
game.minigameMatchDraw();
|
||||
} else {
|
||||
game.denyTie(chr);
|
||||
@@ -439,13 +439,13 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
game.broadcast(PacketCreator.getMiniGameSkipVisitor(game));
|
||||
}
|
||||
} else if (mode == Action.MOVE_OMOK.getCode()) {
|
||||
int x = slea.readInt(); // x point
|
||||
int y = slea.readInt(); // y point
|
||||
int type = slea.readByte(); // piece ( 1 or 2; Owner has one piece, visitor has another, it switches every game.)
|
||||
int x = p.readInt(); // x point
|
||||
int y = p.readInt(); // y point
|
||||
int type = p.readByte(); // piece ( 1 or 2; Owner has one piece, visitor has another, it switches every game.)
|
||||
chr.getMiniGame().setPiece(x, y, type, chr);
|
||||
} else if (mode == Action.SELECT_CARD.getCode()) {
|
||||
int turn = slea.readByte(); // 1st turn = 1; 2nd turn = 0
|
||||
int slot = slea.readByte(); // slot
|
||||
int turn = p.readByte(); // 1st turn = 1; 2nd turn = 0
|
||||
int slot = p.readByte(); // slot
|
||||
MapleMiniGame game = chr.getMiniGame();
|
||||
int firstslot = game.getFirstSlot();
|
||||
if (turn == 1) {
|
||||
@@ -469,14 +469,14 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
game.broadcast(PacketCreator.getMatchCardSelect(game, turn, slot, firstslot, 1));
|
||||
}
|
||||
} else if (mode == Action.SET_MESO.getCode()) {
|
||||
chr.getTrade().setMeso(slea.readInt());
|
||||
chr.getTrade().setMeso(p.readInt());
|
||||
} else if (mode == Action.SET_ITEMS.getCode()) {
|
||||
MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
|
||||
MapleInventoryType ivType = MapleInventoryType.getByType(slea.readByte());
|
||||
short pos = slea.readShort();
|
||||
MapleInventoryType ivType = MapleInventoryType.getByType(p.readByte());
|
||||
short pos = p.readShort();
|
||||
Item item = chr.getInventory(ivType).getItem(pos);
|
||||
short quantity = slea.readShort();
|
||||
byte targetSlot = slea.readByte();
|
||||
short quantity = p.readShort();
|
||||
byte targetSlot = p.readByte();
|
||||
|
||||
if (targetSlot < 1 || targetSlot > 9) {
|
||||
System.out.println("[Hack] " + chr.getName() + " Trying to dupe on trade slot.");
|
||||
@@ -556,9 +556,9 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
} else if (mode == Action.ADD_ITEM.getCode() || mode == Action.PUT_ITEM.getCode()) {
|
||||
if (isTradeOpen(chr)) return;
|
||||
|
||||
MapleInventoryType ivType = MapleInventoryType.getByType(slea.readByte());
|
||||
short slot = slea.readShort();
|
||||
short bundles = slea.readShort();
|
||||
MapleInventoryType ivType = MapleInventoryType.getByType(p.readByte());
|
||||
short slot = p.readShort();
|
||||
short bundles = p.readShort();
|
||||
Item ivItem = chr.getInventory(ivType).getItem(slot);
|
||||
|
||||
if (ivItem == null || ivItem.isUntradeable()) {
|
||||
@@ -576,7 +576,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
short perBundle = slea.readShort();
|
||||
short perBundle = p.readShort();
|
||||
|
||||
if (ItemConstants.isRechargeable(ivItem.getItemId())) {
|
||||
perBundle = 1;
|
||||
@@ -587,7 +587,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
int price = slea.readInt();
|
||||
int price = p.readInt();
|
||||
if (perBundle <= 0 || perBundle * bundles > 2000 || bundles <= 0 || price <= 0 || price > Integer.MAX_VALUE) {
|
||||
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with hired merchants.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " might of possibly packet edited Hired Merchants\nperBundle: " + perBundle + "\nperBundle * bundles (This multiplied cannot be greater than 2000): " + perBundle * bundles + "\nbundles: " + bundles + "\nprice: " + price);
|
||||
@@ -656,7 +656,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
int slot = slea.readShort();
|
||||
int slot = p.readShort();
|
||||
if (slot >= shop.getItems().size() || slot < 0) {
|
||||
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a player shop.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to remove item at slot " + slot);
|
||||
@@ -687,8 +687,8 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
} else if (mode == Action.BUY.getCode() || mode == Action.MERCHANT_BUY.getCode()) {
|
||||
if (isTradeOpen(chr)) return;
|
||||
|
||||
int itemid = slea.readByte();
|
||||
short quantity = slea.readShort();
|
||||
int itemid = p.readByte();
|
||||
short quantity = p.readShort();
|
||||
if (quantity < 1) {
|
||||
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a hired merchant and or player shop.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to buy item " + itemid + " with quantity " + quantity);
|
||||
@@ -715,7 +715,7 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
int slot = slea.readShort();
|
||||
int slot = p.readShort();
|
||||
if (slot >= merchant.getItems().size() || slot < 0) {
|
||||
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to packet edit with a hired merchant.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to remove item at slot " + slot);
|
||||
@@ -751,11 +751,11 @@ public final class PlayerInteractionHandler extends AbstractMaplePacketHandler {
|
||||
chr.setHiredMerchant(null);
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
} else if (mode == Action.BAN_PLAYER.getCode()) {
|
||||
slea.skip(1);
|
||||
p.skip(1);
|
||||
|
||||
MaplePlayerShop shop = chr.getPlayerShop();
|
||||
if (shop != null && shop.isOwner(chr)) {
|
||||
shop.banPlayer(slea.readMapleAsciiString());
|
||||
shop.banPlayer(p.readString());
|
||||
}
|
||||
} else if (mode == Action.EXPEL.getCode()) {
|
||||
MapleMiniGame miniGame = chr.getMiniGame();
|
||||
|
||||
@@ -27,6 +27,7 @@ import client.keybind.MapleKeyBinding;
|
||||
import config.YamlConfig;
|
||||
import constants.game.GameConstants;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.PlayerBuffValueHolder;
|
||||
import net.server.Server;
|
||||
import net.server.channel.Channel;
|
||||
@@ -46,7 +47,6 @@ import tools.DatabaseConnection;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
import tools.packets.WeddingPackets;
|
||||
|
||||
import java.sql.Connection;
|
||||
@@ -84,8 +84,8 @@ public final class PlayerLoggedinHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
final int cid = slea.readInt(); // TODO: investigate if this is the "client id" supplied in PacketCreator#getServerIP()
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
final int cid = p.readInt(); // TODO: investigate if this is the "client id" supplied in PacketCreator#getServerIP()
|
||||
final Server server = Server.getInstance();
|
||||
|
||||
if (!c.tryacquireClient()) {
|
||||
|
||||
@@ -24,11 +24,11 @@ import client.MapleBuffStat;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import server.life.MapleMonster;
|
||||
import server.maps.MapleMapObject;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.data.input.SeekableLittleEndianAccessor;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -40,7 +40,7 @@ import java.util.List;
|
||||
public final class PlayerMapTransitionHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
MapleCharacter chr = c.getPlayer();
|
||||
chr.setMapTransitionComplete();
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import java.awt.Point;
|
||||
import client.MapleCharacter;
|
||||
import client.MapleClient;
|
||||
import net.AbstractMaplePacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import scripting.quest.QuestScriptManager;
|
||||
import server.quest.MapleQuest;
|
||||
import server.life.MapleNPC;
|
||||
@@ -37,12 +38,12 @@ import tools.data.input.SeekableLittleEndianAccessor;
|
||||
public final class QuestActionHandler extends AbstractMaplePacketHandler {
|
||||
|
||||
// isNpcNearby thanks to GabrielSin
|
||||
private static boolean isNpcNearby(SeekableLittleEndianAccessor slea, MapleCharacter player, MapleQuest quest, int npcId) {
|
||||
private static boolean isNpcNearby(InPacket p, MapleCharacter player, MapleQuest quest, int npcId) {
|
||||
Point playerP;
|
||||
Point pos = player.getPosition();
|
||||
|
||||
if(slea.available() >= 4) {
|
||||
playerP = new Point(slea.readShort(), slea.readShort());
|
||||
if(p.available() >= 4) {
|
||||
playerP = new Point(p.readShort(), p.readShort());
|
||||
if (playerP.distance(pos) > 1000) { // thanks Darter (YungMoozi) for reporting unchecked player position
|
||||
playerP = pos;
|
||||
}
|
||||
@@ -67,19 +68,19 @@ public final class QuestActionHandler extends AbstractMaplePacketHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
|
||||
byte action = slea.readByte();
|
||||
short questid = slea.readShort();
|
||||
public final void handlePacket(InPacket p, MapleClient c) {
|
||||
byte action = p.readByte();
|
||||
short questid = p.readShort();
|
||||
MapleCharacter player = c.getPlayer();
|
||||
MapleQuest quest = MapleQuest.getInstance(questid);
|
||||
|
||||
if (action == 0) { // Restore lost item, Credits Darter ( Rajan )
|
||||
slea.readInt();
|
||||
int itemid = slea.readInt();
|
||||
p.readInt();
|
||||
int itemid = p.readInt();
|
||||
quest.restoreLostItem(player, itemid);
|
||||
} else if (action == 1) { //Start Quest
|
||||
int npc = slea.readInt();
|
||||
if(!isNpcNearby(slea, player, quest, npc)) {
|
||||
int npc = p.readInt();
|
||||
if(!isNpcNearby(p, player, quest, npc)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -87,14 +88,14 @@ public final class QuestActionHandler extends AbstractMaplePacketHandler {
|
||||
quest.start(player, npc);
|
||||
}
|
||||
} else if (action == 2) { // Complete Quest
|
||||
int npc = slea.readInt();
|
||||
if(!isNpcNearby(slea, player, quest, npc)) {
|
||||
int npc = p.readInt();
|
||||
if(!isNpcNearby(p, player, quest, npc)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if(quest.canComplete(player, npc)) {
|
||||
if (slea.available() >= 2) {
|
||||
int selection = slea.readShort();
|
||||
if (p.available() >= 2) {
|
||||
int selection = p.readShort();
|
||||
quest.complete(player, npc, selection);
|
||||
} else {
|
||||
quest.complete(player, npc);
|
||||
@@ -103,8 +104,8 @@ public final class QuestActionHandler extends AbstractMaplePacketHandler {
|
||||
} else if (action == 3) {// forfeit quest
|
||||
quest.forfeit(player);
|
||||
} else if (action == 4) { // scripted start quest
|
||||
int npc = slea.readInt();
|
||||
if(!isNpcNearby(slea, player, quest, npc)) {
|
||||
int npc = p.readInt();
|
||||
if(!isNpcNearby(p, player, quest, npc)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -112,8 +113,8 @@ public final class QuestActionHandler extends AbstractMaplePacketHandler {
|
||||
QuestScriptManager.getInstance().start(c, questid, npc);
|
||||
}
|
||||
} else if (action == 5) { // scripted end quests
|
||||
int npc = slea.readInt();
|
||||
if(!isNpcNearby(slea, player, quest, npc)) {
|
||||
int npc = p.readInt();
|
||||
if(!isNpcNearby(p, player, quest, npc)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user