MapleCharacter.java:
PacketProcessor.java: (Make sure it's under ChannelServer)PHP Code:private int combocounter = 1;
private long lastattack = 0
public void setComboCounter(int count) {
combocounter = count;
}
public void setLastAttack(long time) {
lastattack = time;
}
public int getComboCounter() {
return combocounter;
}
public long getLastAttack() {
return lastattack;
}
MaplePacketCreator.java:PHP Code:registerHandler(RecvPacketOpcode.ARAN_COMBO_COUNTER, new AranComboHandler());
AranComboHandler.javaPHP Code:public static MaplePacket showAranComboCounter(int count) {
MaplePacketLittleEndianWriter mplew = new MaplePacketLittleEndianWriter();
mplew.writeShort(SendPacketOpcode.ARAN_COMBO_COUNTER.getValue());
mplew.writeInt(count);
return mplew.getPacket();
}
sendops.properties:PHP Code:package net.channel.handler;
import client.MapleCharacter;
import client.MapleClient;
import client.MapleJob;
import net.AbstractMaplePacketHandler;
import tools.data.input.SeekableLittleEndianAccessor;
import tools.MaplePacketCreator;
public final class AranComboHandler extends AbstractMaplePacketHandler {
public final void handlePacket (SeekableLittleEndianAccessor slea, MapleClient c) {
MapleCharacter player = c.getPlayer();
if (player.getJob().isA(MapleJob.ARAN1) || player.getJob().equals(MapleJob.LEGEND)) {
if (player.getLastAttack() < System.currentTimeMillis() - 3000) {
player.setComboCounter(1);
} else
player.setComboCounter(player.getComboCounter() + 1);
player.setLastAttack(System.currentTimeMillis());
c.getSession().write(MaplePacketCreator.showAranComboCounter(player.getComboCounter()));
}
}
}
recvops.properties:PHP Code:ARAN_COMBO_COUNTER = 0xDB
Credits to Giraffe.PHP Code:ARAN_COMBO_COUNTER = 0xA2

