MapleCharacter.java
PlayerHandler.javaPHP Code:private transient ScheduledFuture<?> fishTimer;
private int fishTasking = 0;
private final int bait = 4000166;
public final int fishingMap = 123456789;
public final int fishingChair = 3010018;
public final void fishingTimer(int time) {
getClient().getSession().write(MaplePacketCreator.sendHint("Start Fishing...\r\n□□□□□□□□□□", 200, 200));
fishTimer = MapTimer.getInstance().register(new Runnable() {
public void run() {
if (fishTasking < 10) {
fishTasking++;
String gage = "";
for (int i = 0; i <= fishTasking; i++) {
gage += "■";
}
for (int i = 9; i > fishTasking; i--) {
gage += "□";
}
getClient().getSession().write(MaplePacketCreator.sendHint("Fishing...\r\n" + gage, 200, 200));
} else {
fishTasking = 0;
if (getItemQuantity(bait, false) == 0) {
cancelFishing();
return;
}
int[][] items = {{3994745, 20}, {3994742, 20}};
int chance = (int) Math.random() * 100;
int count = 0;
for (int[] item : items) {
if (item[1] >= chance) {
count++;
}
}
int[] goods = new int[count];
count = 0;
for (int[] item : items) {
if (item[1] >= chance) {
goods[count] = item[0];
count++;
}
}
int chance2 = (int) Math.random() * goods.length;
if (goods.length == 0) {
getClient().getSession().write(MaplePacketCreator.sendHint("Fail", 200, 200));
} else {
if (getInventory(GameConstants.getInventoryType(goods[chance2])).getNextFreeSlot() > -1) {
getClient().getSession().write(MaplePacketCreator.sendHint("Check your inventory", 200, 200));
} else {
MapleInventoryManipulator.addById(getClient(), goods[chance2], (short) 1, null);
getClient().getSession().write(MaplePacketCreator.sendHint("You got #b" + MapleItemInformationProvider.getInstance().getItemInformation(goods[chance2]).name + "#k", 200, 200));
}
}
MapleInventoryManipulator.addById(getClient(), bait, (short) -1, null);
}
}
}, time / 10, time / 10);
}
public final void cancelFishing() {
if (fishTimer != null) {
if (getItemQuantity(bait, false) == 0) {
getClient().getSession().write(MaplePacketCreator.sendHint("You need more bait", 200, 200));
} else {
getClient().getSession().write(MaplePacketCreator.sendHint("Stop Fishing", 200, 200));
}
fishTimer.cancel(false);
fishTimer = null;
}
}
PHP Code:public static final void UseChair(final int itemId, final MapleClient c, final MapleCharacter chr) {
if (chr == null || chr.getMap() == null) {
return;
}
final Item toUse = chr.getInventory(MapleInventoryType.SETUP).findById(itemId);
if (toUse == null) {
chr.getCheatTracker().registerOffense(CheatingOffense.USING_UNAVAILABLE_ITEM, Integer.toString(itemId));
return;
}
//add
if (itemId == chr.fishingChair && chr.getMapId() == chr.fishingMap) {
chr.fishingTimer(15000);
}
chr.setChair(itemId);
chr.getMap().broadcastMessage(chr, MaplePacketCreator.showChair(chr.getId(), itemId), false);
c.getSession().write(MaplePacketCreator.enableActions());
}
public static final void CancelChair(final short id, final MapleClient c, final MapleCharacter chr) {
//add
if(chr.getMapId() == chr.fishingMap){
chr.cancelFishing();
}
if (id == -1) { // Cancel Chair
chr.setChair(0);
c.getSession().write(MaplePacketCreator.cancelChair(-1));
if (chr.getMap() != null) {
chr.getMap().broadcastMessage(chr, MaplePacketCreator.showChair(chr.getId(), 0), false);
}
} else { // Use In-Map Chair
chr.setChair(id);
c.getSession().write(MaplePacketCreator.cancelChair(id));
}
}

