Migrate last set of calls to FilePrinter, delete FilePrinter
This commit is contained in:
@@ -1724,7 +1724,7 @@ public class Character extends AbstractCharacterObject {
|
||||
resetHpDecreaseTask();
|
||||
}
|
||||
} else {
|
||||
FilePrinter.printError(FilePrinter.MAPLE_MAP, "Character " + this.getName() + " got stuck when moving to map " + map.getId() + ".");
|
||||
log.warn("Chr {} got stuck when moving to map {}", getName(), map.getId());
|
||||
client.disconnect(true, false); // thanks BHB for noticing a player storage stuck case here
|
||||
return;
|
||||
}
|
||||
@@ -5607,9 +5607,8 @@ public class Character extends AbstractCharacterObject {
|
||||
}
|
||||
try {
|
||||
merchant.saveItems(false);
|
||||
} catch (SQLException ex) {
|
||||
ex.printStackTrace();
|
||||
FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Error while saving " + name + "'s Hired Merchant items.");
|
||||
} catch (SQLException e) {
|
||||
log.error("Error while saving {}'s Hired Merchant items.", name, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8244,7 +8243,7 @@ public class Character extends AbstractCharacterObject {
|
||||
|
||||
int updateRows = ps.executeUpdate();
|
||||
if (updateRows < 1) {
|
||||
FilePrinter.printError(FilePrinter.INSERT_CHAR, "Error trying to insert " + name);
|
||||
log.error("Error trying to insert chr {}", name);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -8252,7 +8251,7 @@ public class Character extends AbstractCharacterObject {
|
||||
if (rs.next()) {
|
||||
this.id = rs.getInt(1);
|
||||
} else {
|
||||
FilePrinter.printError(FilePrinter.INSERT_CHAR, "Inserting char failed " + name);
|
||||
log.error("Inserting chr {} failed", name);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ import client.Character;
|
||||
import client.Client;
|
||||
import client.command.Command;
|
||||
import net.server.Server;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import tools.PacketCreator;
|
||||
import tools.Randomizer;
|
||||
|
||||
@@ -36,6 +37,8 @@ public class GmCommand extends Command {
|
||||
setDescription("Send a message to the game masters.");
|
||||
}
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(GmCommand.class);
|
||||
|
||||
@Override
|
||||
public void execute(Client c, String[] params) {
|
||||
String[] tips = {
|
||||
@@ -53,7 +56,7 @@ public class GmCommand extends Command {
|
||||
String message = player.getLastCommandMessage();
|
||||
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.sendYellowTip("[GM Message]:" + Character.makeMapleReadable(player.getName()) + ": " + message));
|
||||
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.serverNotice(1, message));
|
||||
FilePrinter.printError(FilePrinter.COMMAND_GM, Character.makeMapleReadable(player.getName()) + ": " + message);
|
||||
log.info("{}: {}", Character.makeMapleReadable(player.getName()), message);
|
||||
player.dropMessage(5, "Your message '" + message + "' was sent to GMs.");
|
||||
player.dropMessage(5, tips[Randomizer.nextInt(tips.length)]);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,8 @@ import client.Character;
|
||||
import client.Client;
|
||||
import client.command.Command;
|
||||
import net.server.Server;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import tools.PacketCreator;
|
||||
|
||||
public class ReportBugCommand extends Command {
|
||||
@@ -35,6 +36,8 @@ public class ReportBugCommand extends Command {
|
||||
setDescription("Send in a bug report.");
|
||||
}
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(ReportBugCommand.class);
|
||||
|
||||
@Override
|
||||
public void execute(Client c, String[] params) {
|
||||
Character player = c.getPlayer();
|
||||
@@ -46,7 +49,7 @@ public class ReportBugCommand extends Command {
|
||||
String message = player.getLastCommandMessage();
|
||||
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.sendYellowTip("[Bug]:" + Character.makeMapleReadable(player.getName()) + ": " + message));
|
||||
Server.getInstance().broadcastGMMessage(c.getWorld(), PacketCreator.serverNotice(1, message));
|
||||
FilePrinter.printError(FilePrinter.COMMAND_BUG, Character.makeMapleReadable(player.getName()) + ": " + message);
|
||||
log.info("{}: {}", Character.makeMapleReadable(player.getName()), message);
|
||||
player.dropMessage(5, "Your bug '" + message + "' was submitted successfully to our developers. Thank you!");
|
||||
|
||||
}
|
||||
|
||||
@@ -27,9 +27,10 @@ import client.inventory.manipulator.InventoryManipulator;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.factory.MonitoredReentrantLockFactory;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.ItemInformationProvider;
|
||||
import server.ThreadManager;
|
||||
import tools.FilePrinter;
|
||||
import tools.Pair;
|
||||
|
||||
import java.util.*;
|
||||
@@ -40,6 +41,7 @@ import java.util.concurrent.locks.Lock;
|
||||
* @author Matze, Ronan
|
||||
*/
|
||||
public class Inventory implements Iterable<Item> {
|
||||
private static final Logger log = LoggerFactory.getLogger(Inventory.class);
|
||||
protected final Map<Short, Item> inventory;
|
||||
protected final InventoryType type;
|
||||
protected final Lock lock = MonitoredReentrantLockFactory.createLock(MonitoredLockType.INVENTORY, true);
|
||||
@@ -117,7 +119,7 @@ public class Inventory implements Iterable<Item> {
|
||||
for (Item item : list()) {
|
||||
String itemName = ii.getName(item.getItemId());
|
||||
if (itemName == null) {
|
||||
FilePrinter.printError(FilePrinter.EXCEPTION, "[CRITICAL] Item " + item.getItemId() + " has no name.");
|
||||
log.error("[CRITICAL] Item {} has no name", item.getItemId());
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,9 +29,10 @@ import client.newyear.NewYearCardRecord;
|
||||
import config.YamlConfig;
|
||||
import constants.id.ItemId;
|
||||
import constants.inventory.ItemConstants;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.ItemInformationProvider;
|
||||
import server.maps.MapleMap;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
import java.awt.*;
|
||||
@@ -45,6 +46,7 @@ import java.util.List;
|
||||
* @author Ronan - improved check space feature and removed redundant object calls
|
||||
*/
|
||||
public class InventoryManipulator {
|
||||
private static final Logger log = LoggerFactory.getLogger(InventoryManipulator.class);
|
||||
|
||||
public static boolean addById(Client c, int itemId, short quantity) {
|
||||
return addById(c, itemId, quantity, null, -1, -1);
|
||||
@@ -269,7 +271,7 @@ public class InventoryManipulator {
|
||||
chr.setHasSandboxItem();
|
||||
}
|
||||
} else {
|
||||
FilePrinter.printError(FilePrinter.ITEM, "Tried to pickup Equip id " + itemid + " containing more than 1 quantity --> " + quantity);
|
||||
log.warn("Tried to pickup Equip id {} containing more than 1 quantity --> {}", itemid, quantity);
|
||||
c.sendPacket(PacketCreator.getInventoryFull());
|
||||
c.sendPacket(PacketCreator.showItemUnavailable());
|
||||
return false;
|
||||
|
||||
@@ -30,10 +30,11 @@ import constants.game.GameConstants;
|
||||
import constants.id.ItemId;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.ItemInformationProvider;
|
||||
import server.MakerItemFactory;
|
||||
import server.MakerItemFactory.MakerItemCreateEntry;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
|
||||
@@ -46,7 +47,7 @@ import java.util.Map;
|
||||
* @author Ronan
|
||||
*/
|
||||
public class MakerProcessor {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(MakerProcessor.class);
|
||||
private static final ItemInformationProvider ii = ItemInformationProvider.getInstance();
|
||||
|
||||
public static void makerAction(InPacket p, Client c) {
|
||||
@@ -150,7 +151,7 @@ public class MakerProcessor {
|
||||
|
||||
switch (createStatus) {
|
||||
case -1:// non-available for Maker itemid has been tried to forge
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS, "Player " + c.getPlayer().getName() + " tried to craft itemid " + toCreate + " using the Maker skill.");
|
||||
log.warn("Chr {} tried to craft itemid {} using the Maker skill.", c.getPlayer().getName(), toCreate);
|
||||
c.sendPacket(PacketCreator.serverNotice(1, "The requested item could not be crafted on this operation."));
|
||||
c.sendPacket(PacketCreator.makerEnableActions());
|
||||
break;
|
||||
|
||||
@@ -36,11 +36,12 @@ import config.YamlConfig;
|
||||
import constants.id.ItemId;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.server.channel.Channel;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.DueyPackage;
|
||||
import server.ItemInformationProvider;
|
||||
import server.Trade;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
|
||||
@@ -54,6 +55,7 @@ import java.util.List;
|
||||
* @author RonanLana - synchronization of Duey modules
|
||||
*/
|
||||
public class DueyProcessor {
|
||||
private static final Logger log = LoggerFactory.getLogger(DueyProcessor.class);
|
||||
|
||||
public enum Actions {
|
||||
TOSERVER_RECV_ITEM(0x00),
|
||||
@@ -204,7 +206,7 @@ public class DueyProcessor {
|
||||
|
||||
int updateRows = ps.executeUpdate();
|
||||
if (updateRows < 1) {
|
||||
FilePrinter.printError(FilePrinter.INSERT_CHAR, "Error trying to create package [mesos: " + mesos + ", " + sender + ", quick: " + quick + ", to CharacterId: " + toCid + "]");
|
||||
log.error("Error trying to create package [mesos: {}, sender: {}, quick: {}, receiver chrId: {}]", mesos, sender, quick, toCid);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -213,7 +215,7 @@ public class DueyProcessor {
|
||||
if (rs.next()) {
|
||||
packageId = rs.getInt(1);
|
||||
} else {
|
||||
FilePrinter.printError(FilePrinter.INSERT_CHAR, "Failed inserting package [mesos: " + mesos + ", " + sender + ", quick: " + quick + ", to CharacterId: " + toCid + "]");
|
||||
log.error("Failed inserting package [mesos: {}, sender: {}, quick: {}, receiver chrId: {}]", mesos, sender, quick, toCid);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@@ -287,7 +289,7 @@ public class DueyProcessor {
|
||||
fee += 5000;
|
||||
} else if (!c.getPlayer().haveItem(ItemId.QUICK_DELIVERY_TICKET)) {
|
||||
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with Quick Delivery on duey.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use duey with Quick Delivery, mesos " + sendMesos + " and amount " + amount);
|
||||
log.warn("Chr {} tried to use duey with Quick Delivery without a ticket, mesos {} and amount {}", c.getPlayer().getName(), sendMesos, amount);
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
@@ -295,7 +297,7 @@ public class DueyProcessor {
|
||||
long finalcost = (long) sendMesos + fee;
|
||||
if (finalcost < 0 || finalcost > Integer.MAX_VALUE || (amount < 1 && sendMesos == 0)) {
|
||||
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit with duey.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use duey with mesos " + sendMesos + " and amount " + amount);
|
||||
log.warn("Chr {} tried to use duey with mesos {} and amount {}", c.getPlayer().getName(), sendMesos, amount);
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
@@ -394,7 +396,7 @@ public class DueyProcessor {
|
||||
|
||||
if (dp == null) {
|
||||
c.sendPacket(PacketCreator.sendDueyMSG(Actions.TOCLIENT_RECV_UNKNOWN_ERROR.getCode()));
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to receive package from duey with id " + packageId);
|
||||
log.warn("Chr {} tried to receive package from duey with id {}", c.getPlayer().getName(), packageId);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,13 +30,15 @@ import client.SkillFactory;
|
||||
import client.autoban.AutobanFactory;
|
||||
import constants.game.GameConstants;
|
||||
import constants.skills.Aran;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import tools.PacketCreator;
|
||||
|
||||
/**
|
||||
* @author RonanLana - synchronization of SP transaction modules
|
||||
*/
|
||||
public class AssignSPProcessor {
|
||||
private static final Logger log = LoggerFactory.getLogger(AssignSPProcessor.class);
|
||||
|
||||
public static boolean canSPAssign(Client c, int skillid) {
|
||||
if (skillid == Aran.HIDDEN_FULL_DOUBLE || skillid == Aran.HIDDEN_FULL_TRIPLE || skillid == Aran.HIDDEN_OVER_DOUBLE || skillid == Aran.HIDDEN_OVER_TRIPLE) {
|
||||
@@ -47,7 +49,7 @@ public class AssignSPProcessor {
|
||||
Character player = c.getPlayer();
|
||||
if ((!GameConstants.isPqSkillMap(player.getMapId()) && GameConstants.isPqSkill(skillid)) || (!player.isGM() && GameConstants.isGMSkills(skillid)) || (!GameConstants.isInJobTree(skillid, player.getJob().getId()) && !player.isGM())) {
|
||||
AutobanFactory.PACKET_EDIT.alert(player, "tried to packet edit in distributing sp.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use skill " + skillid + " without it being in their job.");
|
||||
log.warn("Chr {} tried to use skill {} without it being in their job.", c.getPlayer().getName(), skillid);
|
||||
|
||||
c.disconnect(true, false);
|
||||
return false;
|
||||
|
||||
@@ -23,7 +23,6 @@ import net.server.audit.locks.MonitoredLockType;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.TimerManager;
|
||||
import tools.FilePrinter;
|
||||
|
||||
import java.text.DateFormat;
|
||||
import java.text.SimpleDateFormat;
|
||||
@@ -191,7 +190,7 @@ public class ThreadTracker {
|
||||
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
|
||||
dateFormat.setTimeZone(TimeZone.getDefault());
|
||||
|
||||
FilePrinter.printError(FilePrinter.DEADLOCK_STATE, printThreadTrackerState(dateFormat.format(new Date())));
|
||||
log.error("Deadlock state: {}", printThreadTrackerState(dateFormat.format(new Date())));
|
||||
//FilePrinter.printError(FilePrinter.DEADLOCK_STATE, "[" + dateFormat.format(new Date()) + "] Presenting current lock path for lockid " + lockId.name() + ".\r\n" + printLockStatus(lockId) + "\r\n-------------------------------");
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -21,12 +21,14 @@ package net.server.audit.locks.empty;
|
||||
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.MonitoredReadLock;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author RonanLana
|
||||
*/
|
||||
public class EmptyReadLock extends AbstractEmptyLock implements MonitoredReadLock {
|
||||
private static final Logger log = LoggerFactory.getLogger(EmptyReadLock.class);
|
||||
private final MonitoredLockType id;
|
||||
|
||||
public EmptyReadLock(MonitoredLockType type) {
|
||||
@@ -35,7 +37,7 @@ public class EmptyReadLock extends AbstractEmptyLock implements MonitoredReadLoc
|
||||
|
||||
@Override
|
||||
public void lock() {
|
||||
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
log.warn("Captured locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,7 +45,7 @@ public class EmptyReadLock extends AbstractEmptyLock implements MonitoredReadLoc
|
||||
|
||||
@Override
|
||||
public boolean tryLock() {
|
||||
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured try-locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
log.warn("Captured try-locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,12 +21,14 @@ package net.server.audit.locks.empty;
|
||||
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.MonitoredReentrantLock;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author RonanLana
|
||||
*/
|
||||
public class EmptyReentrantLock extends AbstractEmptyLock implements MonitoredReentrantLock {
|
||||
private static final Logger log = LoggerFactory.getLogger(EmptyReentrantLock.class);
|
||||
private final MonitoredLockType id;
|
||||
|
||||
public EmptyReentrantLock(MonitoredLockType type) {
|
||||
@@ -35,7 +37,7 @@ public class EmptyReentrantLock extends AbstractEmptyLock implements MonitoredRe
|
||||
|
||||
@Override
|
||||
public void lock() {
|
||||
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
log.warn("Captured locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,7 +45,7 @@ public class EmptyReentrantLock extends AbstractEmptyLock implements MonitoredRe
|
||||
|
||||
@Override
|
||||
public boolean tryLock() {
|
||||
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured try-locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
log.warn("Captured try-locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,12 +21,14 @@ package net.server.audit.locks.empty;
|
||||
|
||||
import net.server.audit.locks.MonitoredLockType;
|
||||
import net.server.audit.locks.MonitoredWriteLock;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author RonanLana
|
||||
*/
|
||||
public class EmptyWriteLock extends AbstractEmptyLock implements MonitoredWriteLock {
|
||||
private static final Logger log = LoggerFactory.getLogger(EmptyWriteLock.class);
|
||||
private final MonitoredLockType id;
|
||||
|
||||
public EmptyWriteLock(MonitoredLockType type) {
|
||||
@@ -35,7 +37,7 @@ public class EmptyWriteLock extends AbstractEmptyLock implements MonitoredWriteL
|
||||
|
||||
@Override
|
||||
public void lock() {
|
||||
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
log.warn("Captured locking tentative on disposed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,7 +45,7 @@ public class EmptyWriteLock extends AbstractEmptyLock implements MonitoredWriteL
|
||||
|
||||
@Override
|
||||
public boolean tryLock() {
|
||||
FilePrinter.printError(FilePrinter.DISPOSED_LOCKS, "Captured try-locking tentative on disposed lock " + id + ":" + printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
log.warn("Captured try-locking tentative on dispsoed lock {}: {}", id, printThreadStack(Thread.currentThread().getStackTrace()));
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,26 +29,27 @@ import constants.id.ItemId;
|
||||
import constants.id.MapId;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.Trade;
|
||||
import server.maps.MapleMap;
|
||||
import server.maps.Portal;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
import java.awt.*;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Calendar;
|
||||
|
||||
public final class ChangeMapHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(ChangeMapHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
Character chr = c.getPlayer();
|
||||
|
||||
if (chr.isChangingMaps() || chr.isBanned()) {
|
||||
if (chr.isChangingMaps()) {
|
||||
FilePrinter.printError(FilePrinter.PORTAL_STUCK + chr.getName() + ".txt", "Player " + chr.getName() + " got stuck when changing maps. Timestamp: " + Calendar.getInstance().getTime() + " Last visited mapids: " + chr.getLastVisitedMapids());
|
||||
log.warn("Chr {} got stuck when changing maps. Last visited mapids: {}", chr.getName(), chr.getLastVisitedMapids());
|
||||
}
|
||||
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
|
||||
@@ -30,10 +30,11 @@ import client.inventory.manipulator.InventoryManipulator;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.CashShop;
|
||||
import server.ItemInformationProvider;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
|
||||
@@ -49,6 +50,7 @@ import java.util.Map.Entry;
|
||||
* @author Ronan (HeavenMS)
|
||||
*/
|
||||
public final class CouponCodeHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(CouponCodeHandler.class);
|
||||
|
||||
private static List<Pair<Integer, Pair<Integer, Integer>>> getNXCodeItems(Character chr, Connection con, int codeid) throws SQLException {
|
||||
Map<Integer, Integer> couponItems = new HashMap<>();
|
||||
@@ -90,7 +92,7 @@ public final class CouponCodeHandler extends AbstractPacketHandler {
|
||||
item = 4000000;
|
||||
qty = 1;
|
||||
|
||||
FilePrinter.printError(FilePrinter.UNHANDLED_EVENT, "Error trying to redeem itemid " + item + " from codeid " + codeid + ".");
|
||||
log.warn("Error trying to redeem itemid {} from coupon codeid {}", item, codeid);
|
||||
}
|
||||
|
||||
if (!chr.canHold(item, qty)) {
|
||||
|
||||
@@ -24,13 +24,15 @@ import client.Client;
|
||||
import constants.game.GameConstants;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.life.Monster;
|
||||
import server.life.MonsterInformationProvider;
|
||||
import server.maps.MapleMap;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
public class FieldDamageMobHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(FieldDamageMobHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
@@ -41,14 +43,15 @@ public class FieldDamageMobHandler extends AbstractPacketHandler {
|
||||
MapleMap map = chr.getMap();
|
||||
|
||||
if (map.getEnvironment().isEmpty()) { // no environment objects activated to actually hit the mob
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use an obstacle on mapid " + map.getId() + " to attack.");
|
||||
log.warn("Chr {} tried to use an obstacle on mapid {} to attack", c.getPlayer().getName(), map.getId());
|
||||
return;
|
||||
}
|
||||
|
||||
Monster mob = map.getMonsterByOid(mobOid);
|
||||
if (mob != null) {
|
||||
if (dmg < 0 || dmg > GameConstants.MAX_FIELD_MOB_DAMAGE) {
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to use an obstacle on mapid " + map.getId() + " to attack " + MonsterInformationProvider.getInstance().getMobNameFromId(mob.getId()) + " with damage " + dmg);
|
||||
log.warn("Chr {} tried to use an obstacle on mapid {} to attack {} with damage {}", c.getPlayer().getName(),
|
||||
map.getId(), MonsterInformationProvider.getInstance().getMobNameFromId(mob.getId()), dmg);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,13 +27,16 @@ import client.autoban.AutobanFactory;
|
||||
import client.command.CommandsExecutor;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.ChatLogger;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
public final class GeneralChatHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(GeneralChatHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
String s = p.readString();
|
||||
Character chr = c.getPlayer();
|
||||
if (chr.getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) {
|
||||
@@ -42,7 +45,7 @@ public final class GeneralChatHandler extends AbstractPacketHandler {
|
||||
}
|
||||
if (s.length() > Byte.MAX_VALUE && !chr.isGM()) {
|
||||
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit in General Chat.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to send text with length of " + s.length());
|
||||
log.warn("Chr {} tried to send text with length of {}", c.getPlayer().getName(), s.length());
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -27,13 +27,15 @@ import client.Client;
|
||||
import client.autoban.AutobanFactory;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import tools.PacketCreator;
|
||||
|
||||
public final class GiveFameHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(GiveFameHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
Character target = (Character) c.getPlayer().getMap().getMapObject(p.readInt());
|
||||
int mode = p.readByte();
|
||||
int famechange = 2 * mode - 1;
|
||||
@@ -42,7 +44,7 @@ public final class GiveFameHandler extends AbstractPacketHandler {
|
||||
return;
|
||||
} else if (famechange != 1 && famechange != -1) {
|
||||
AutobanFactory.PACKET_EDIT.alert(c.getPlayer(), c.getPlayer().getName() + " tried to packet edit fame.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to fame hack with famechange " + famechange);
|
||||
log.warn("Chr {} tried to fame hack with famechange {}", c.getPlayer().getName(), famechange);
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,8 @@ import constants.skills.Gunslinger;
|
||||
import constants.skills.NightWalker;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import tools.PacketCreator;
|
||||
|
||||
import java.awt.*;
|
||||
@@ -34,6 +35,7 @@ import java.awt.*;
|
||||
* @author GabrielSin
|
||||
*/
|
||||
public class GrenadeEffectHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(GrenadeEffectHandler.class);
|
||||
|
||||
@Override
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
@@ -51,7 +53,7 @@ public class GrenadeEffectHandler extends AbstractPacketHandler {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
FilePrinter.printError(FilePrinter.UNHANDLED_EVENT, "The skill id: " + skillId + " is not coded in " + this.getClass().getName() + ".");
|
||||
log.warn("The skill id: {} is not coded in {}", skillId, getClass().getSimpleName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,8 +25,9 @@ import client.Character;
|
||||
import client.Client;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.maps.MapObject;
|
||||
import tools.FilePrinter;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
@@ -35,9 +36,10 @@ import java.awt.*;
|
||||
* @author Ronan
|
||||
*/
|
||||
public final class ItemPickupHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(ItemPickupHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(final InPacket p, final Client c) {
|
||||
public void handlePacket(final InPacket p, final Client c) {
|
||||
p.readInt(); //Timestamp
|
||||
p.readByte();
|
||||
p.readPos(); //cpos
|
||||
@@ -51,7 +53,8 @@ public final class ItemPickupHandler extends AbstractPacketHandler {
|
||||
Point charPos = chr.getPosition();
|
||||
Point obPos = ob.getPosition();
|
||||
if (Math.abs(charPos.getX() - obPos.getX()) > 800 || Math.abs(charPos.getY() - obPos.getY()) > 600) {
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " tried to pick up an item too far away. Mapid: " + chr.getMapId() + " Player pos: " + charPos + " Object pos: " + obPos);
|
||||
log.warn("Chr {} tried to pick up an item too far away. Mapid: {}, player pos: {}, object pos: {}",
|
||||
c.getPlayer().getName(), chr.getMapId(), charPos, obPos);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,10 +28,11 @@ import client.status.MonsterStatus;
|
||||
import client.status.MonsterStatusEffect;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.life.Monster;
|
||||
import server.life.MonsterInformationProvider;
|
||||
import server.maps.MapleMap;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
import java.util.Map;
|
||||
@@ -41,8 +42,10 @@ import java.util.Map;
|
||||
* @author Ronan
|
||||
*/
|
||||
public final class MobDamageMobHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(MobDamageMobHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
int from = p.readInt();
|
||||
p.readInt();
|
||||
int to = p.readInt();
|
||||
@@ -59,8 +62,10 @@ public final class MobDamageMobHandler extends AbstractPacketHandler {
|
||||
|
||||
if (dmg > maxDmg) {
|
||||
AutobanFactory.DAMAGE_HACK.alert(c.getPlayer(), "Possible packet editing hypnotize damage exploit."); // thanks Rien dev team
|
||||
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " had hypnotized " + MonsterInformationProvider.getInstance().getMobNameFromId(attacker.getId()) + " to attack " + MonsterInformationProvider.getInstance().getMobNameFromId(damaged.getId()) + " with damage " + dmg + " (max: " + maxDmg + ")");
|
||||
String attackerName = MonsterInformationProvider.getInstance().getMobNameFromId(attacker.getId());
|
||||
String damagedName = MonsterInformationProvider.getInstance().getMobNameFromId(damaged.getId());
|
||||
log.warn("Chr {} had hypnotized {} to attack {} with damage {} (max: {})", c.getPlayer().getName(),
|
||||
attackerName, damagedName, dmg, maxDmg);
|
||||
dmg = maxDmg;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,13 +28,16 @@ import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import net.server.Server;
|
||||
import net.server.world.World;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.ChatLogger;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
public final class MultiChatHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(MultiChatHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
Character player = c.getPlayer();
|
||||
if (player.getAutobanManager().getLastSpam(7) + 200 > currentServerTime()) {
|
||||
return;
|
||||
@@ -49,7 +52,7 @@ public final class MultiChatHandler extends AbstractPacketHandler {
|
||||
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());
|
||||
log.warn("Chr {} tried to send text with length of {}", c.getPlayer().getName(), chattext.length());
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -26,13 +26,17 @@ import client.autoban.AutobanFactory;
|
||||
import constants.inventory.ItemConstants;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* @author Matze
|
||||
*/
|
||||
public final class NPCShopHandler extends AbstractPacketHandler {
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
private static final Logger log = LoggerFactory.getLogger(NPCShopHandler.class);
|
||||
|
||||
@Override
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
byte bmode = p.readByte();
|
||||
if (bmode == 0) { // mode 0 = buy :)
|
||||
short slot = p.readShort();// slot
|
||||
@@ -40,7 +44,7 @@ public final class NPCShopHandler extends AbstractPacketHandler {
|
||||
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);
|
||||
log.warn("Chr {} tried to buy quantity {} of itemid {}", c.getPlayer().getName(), quantity, itemId);
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -27,16 +27,19 @@ import config.YamlConfig;
|
||||
import constants.id.NpcId;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import scripting.npc.NPCScriptManager;
|
||||
import server.life.NPC;
|
||||
import server.life.PlayerNPC;
|
||||
import server.maps.MapObject;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
public final class NPCTalkHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(NPCTalkHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
if (!c.getPlayer().isAlive()) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
return;
|
||||
@@ -73,7 +76,7 @@ public final class NPCTalkHandler extends AbstractPacketHandler {
|
||||
boolean hasNpcScript = NPCScriptManager.getInstance().start(c, npc.getId(), oid, null);
|
||||
if (!hasNpcScript) {
|
||||
if (!npc.hasShop()) {
|
||||
FilePrinter.printError(FilePrinter.NPC_UNCODED, "NPC " + npc.getName() + "(" + npc.getId() + ") is not coded.");
|
||||
log.warn("NPC {} ({}) is not coded", npc.getName(), npc.getId());
|
||||
return;
|
||||
} else if (c.getPlayer().getShop() != null) {
|
||||
c.sendPacket(PacketCreator.enableActions());
|
||||
|
||||
@@ -25,14 +25,16 @@ import client.Client;
|
||||
import client.autoban.AutobanFactory;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.ChatLogger;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
public final class PetChatHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(PetChatHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
int petId = p.readInt();
|
||||
p.readInt();
|
||||
p.readByte();
|
||||
@@ -44,7 +46,7 @@ public final class PetChatHandler extends AbstractPacketHandler {
|
||||
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());
|
||||
log.warn("Chr {} tried to send text with length of {}", c.getPlayer().getName(), text.length());
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,6 @@ import server.ItemInformationProvider;
|
||||
import server.Trade;
|
||||
import server.maps.*;
|
||||
import server.maps.MiniGame.MiniGameType;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
import java.awt.*;
|
||||
@@ -601,7 +600,8 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
||||
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);
|
||||
log.warn("Chr {} might possibly have packet edited Hired Merchants. perBundle: {}, perBundle * bundles (This multiplied cannot be greater than 2000): {}, bundles: {}, price: {}",
|
||||
chr.getName(), perBundle, perBundle * bundles, bundles, price);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -672,7 +672,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
||||
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);
|
||||
log.warn("Chr {} tried to remove item at slot {}", chr.getName(), slot);
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
@@ -738,7 +738,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
||||
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);
|
||||
log.warn("Chr {} tried to buy item {} with quantity {}", chr.getName(), itemid, quantity);
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
@@ -767,7 +767,7 @@ public final class PlayerInteractionHandler extends AbstractPacketHandler {
|
||||
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);
|
||||
log.warn("Chr {} tried to remove item at slot {}", chr.getName(), slot);
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -42,10 +42,11 @@ import net.server.guild.GuildPackets;
|
||||
import net.server.world.PartyCharacter;
|
||||
import net.server.world.PartyOperation;
|
||||
import net.server.world.World;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import scripting.event.EventInstanceManager;
|
||||
import server.life.MobSkill;
|
||||
import tools.DatabaseConnection;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.packets.WeddingPackets;
|
||||
@@ -59,7 +60,7 @@ import java.util.Map.Entry;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public final class PlayerLoggedinHandler extends AbstractPacketHandler {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(PlayerLoggedinHandler.class);
|
||||
private static final Set<Integer> attemptingLoginAccounts = new HashSet<>();
|
||||
|
||||
private boolean tryAcquireAccount(int accId) {
|
||||
@@ -257,10 +258,10 @@ public final class PlayerLoggedinHandler extends AbstractPacketHandler {
|
||||
c.sendPacket(PacketCreator.getFamilyInfo(familyEntry));
|
||||
familyEntry.announceToSenior(PacketCreator.sendFamilyLoginNotice(player.getName(), true), true);
|
||||
} else {
|
||||
FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + "'s family doesn't have an entry for them. (" + f.getID() + ")");
|
||||
log.error("Chr {}'s family doesn't have an entry for them. (familyId {})", player.getName(), f.getID());
|
||||
}
|
||||
} else {
|
||||
FilePrinter.printError(FilePrinter.FAMILY_ERROR, "Player " + player.getName() + " has an invalid family ID. (" + player.getFamilyId() + ")");
|
||||
log.error("Chr {} has an invalid family ID ({})", player.getName(), player.getFamilyId());
|
||||
c.sendPacket(PacketCreator.getFamilyInfo(null));
|
||||
}
|
||||
} else {
|
||||
|
||||
@@ -32,18 +32,20 @@ import client.inventory.WeaponType;
|
||||
import client.status.MonsterStatusEffect;
|
||||
import constants.skills.Outlaw;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.ItemInformationProvider;
|
||||
import server.StatEffect;
|
||||
import server.life.Monster;
|
||||
import server.life.MonsterInformationProvider;
|
||||
import server.maps.Summon;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public final class SummonDamageHandler extends AbstractDealDamageHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(SummonDamageHandler.class);
|
||||
|
||||
public final class SummonAttackEntry {
|
||||
|
||||
@@ -108,8 +110,9 @@ public final class SummonDamageHandler extends AbstractDealDamageHandler {
|
||||
if (target != null) {
|
||||
if (damage > maxDmg) {
|
||||
AutobanFactory.DAMAGE_HACK.alert(c.getPlayer(), "Possible packet editing summon damage exploit.");
|
||||
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + c.getPlayer().getName() + ".txt", c.getPlayer().getName() + " used a summon of skillid " + summon.getSkill() + " to attack " + MonsterInformationProvider.getInstance().getMobNameFromId(target.getId()) + " with damage " + damage + " (max: " + maxDmg + ")");
|
||||
final String mobName = MonsterInformationProvider.getInstance().getMobNameFromId(target.getId());
|
||||
log.info("Possible exploit - chr {} used a summon of skillId {} to attack {} with damage {} (max: {})",
|
||||
c.getPlayer().getName(), summon.getSkill(), mobName, damage, maxDmg);
|
||||
damage = maxDmg;
|
||||
}
|
||||
|
||||
|
||||
@@ -35,12 +35,13 @@ import constants.inventory.ItemConstants;
|
||||
import constants.skills.Aran;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.StatEffect;
|
||||
import server.life.LifeFactory.loseItem;
|
||||
import server.life.*;
|
||||
import server.maps.MapObject;
|
||||
import server.maps.MapleMap;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.Randomizer;
|
||||
|
||||
@@ -50,9 +51,10 @@ import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public final class TakeDamageHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(TakeDamageHandler.class);
|
||||
|
||||
@Override
|
||||
public final void handlePacket(InPacket p, Client c) {
|
||||
public void handlePacket(InPacket p, Client c) {
|
||||
List<Character> banishPlayers = new ArrayList<>();
|
||||
|
||||
Character chr = c.getPlayer();
|
||||
@@ -135,10 +137,7 @@ public final class TakeDamageHandler extends AbstractPacketHandler {
|
||||
}
|
||||
} catch (ClassCastException e) {
|
||||
//this happens due to mob on last map damaging player just before changing maps
|
||||
|
||||
e.printStackTrace();
|
||||
FilePrinter.printError(FilePrinter.EXCEPTION_CAUGHT, "Attacker is not a mob-type, rather is a " + map.getMapObject(oid).getClass().getName() + " entity.");
|
||||
|
||||
log.warn("Attack is not a mob-type, rather is a {} entity", map.getMapObject(oid).getClass().getSimpleName(), e);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,9 @@ import client.Client;
|
||||
import client.autoban.AutobanFactory;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import server.ChatLogger;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.PacketCreator.WhisperFlag;
|
||||
|
||||
@@ -35,6 +36,7 @@ import tools.PacketCreator.WhisperFlag;
|
||||
* @author Chronos
|
||||
*/
|
||||
public final class WhisperHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(WhisperHandler.class);
|
||||
|
||||
// result types, not sure if there are proper names for these
|
||||
public static final byte RT_ITC = 0x00;
|
||||
@@ -65,7 +67,7 @@ public final class WhisperHandler extends AbstractPacketHandler {
|
||||
handleFind(c.getPlayer(), target, WhisperFlag.LOCATION_FRIEND);
|
||||
break;
|
||||
default:
|
||||
FilePrinter.printError(FilePrinter.PACKET_HANDLER + c.getPlayer().getName() + ".txt", "Unknown request " + request + " triggered by " + c.getPlayer().getName());
|
||||
log.warn("Unknown request {} triggered by {}", request, c.getPlayer().getName());
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -93,7 +95,7 @@ public final class WhisperHandler extends AbstractPacketHandler {
|
||||
|
||||
if (message.length() > Byte.MAX_VALUE) {
|
||||
AutobanFactory.PACKET_EDIT.alert(user, user.getName() + " tried to packet edit with whispers.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + user.getName() + ".txt", user.getName() + " tried to send text with length of " + message.length());
|
||||
log.warn("Chr {} tried to send text with length of {}", user.getName(), message.length());
|
||||
user.getClient().disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -28,7 +28,8 @@ import client.creator.novice.NoblesseCreator;
|
||||
import constants.id.ItemId;
|
||||
import net.AbstractPacketHandler;
|
||||
import net.packet.InPacket;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import tools.PacketCreator;
|
||||
|
||||
import java.util.Arrays;
|
||||
@@ -36,6 +37,7 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public final class CreateCharHandler extends AbstractPacketHandler {
|
||||
private static final Logger log = LoggerFactory.getLogger(CreateCharHandler.class);
|
||||
|
||||
private final static Set<Integer> IDs = new HashSet<>(Arrays.asList(
|
||||
ItemId.SWORD, ItemId.HAND_AXE, ItemId.WOODEN_CLUB, ItemId.BASIC_POLEARM,// weapons
|
||||
@@ -77,7 +79,7 @@ public final class CreateCharHandler extends AbstractPacketHandler {
|
||||
int[] items = new int[]{weapon, top, bottom, shoes, hair, face};
|
||||
for (int item : items) {
|
||||
if (!isLegal(item)) {
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + name + ".txt", "Owner from account '" + c.getAccountName() + "' tried to packet edit in char creation.");
|
||||
log.warn("Owner from account {} tried to packet edit in chr creation", c.getAccountName());
|
||||
c.disconnect(true, false);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,8 @@ import net.server.guild.Guild;
|
||||
import net.server.guild.GuildPackets;
|
||||
import net.server.world.Party;
|
||||
import net.server.world.PartyCharacter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import provider.Data;
|
||||
import provider.DataProviderFactory;
|
||||
import provider.wz.WZFiles;
|
||||
@@ -61,7 +63,6 @@ import server.partyquest.AriantColiseum;
|
||||
import server.partyquest.MonsterCarnival;
|
||||
import server.partyquest.Pyramid;
|
||||
import server.partyquest.Pyramid.PyramidMode;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.packets.WeddingPackets;
|
||||
|
||||
@@ -76,6 +77,7 @@ import static java.util.concurrent.TimeUnit.MINUTES;
|
||||
* @author Matze
|
||||
*/
|
||||
public class NPCConversationManager extends AbstractPlayerInteraction {
|
||||
private static final Logger log = LoggerFactory.getLogger(NPCConversationManager.class);
|
||||
|
||||
private final int npc;
|
||||
private int npcOid;
|
||||
@@ -380,7 +382,7 @@ public class NPCConversationManager extends AbstractPlayerInteraction {
|
||||
if (shop != null) {
|
||||
shop.sendShop(c);
|
||||
} else { // check for missing shopids thanks to resinate
|
||||
FilePrinter.printError(FilePrinter.NPC_UNCODED, "Shop ID: " + id + " is missing from database.");
|
||||
log.warn("Shop ID: {} is missing from database.", id);
|
||||
ShopFactory.getInstance().getShop(11000).sendShop(c);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import scripting.AbstractScriptManager;
|
||||
import server.quest.Quest;
|
||||
import tools.FilePrinter;
|
||||
|
||||
import javax.script.Invocable;
|
||||
import javax.script.ScriptEngine;
|
||||
@@ -75,7 +74,7 @@ public class QuestScriptManager extends AbstractScriptManager {
|
||||
|
||||
ScriptEngine engine = getQuestScriptEngine(c, questid);
|
||||
if (engine == null) {
|
||||
FilePrinter.printError(FilePrinter.QUEST_UNCODED, "START Quest " + questid + " is uncoded.");
|
||||
log.warn("START Quest {} is uncoded.", questid);
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
@@ -127,7 +126,7 @@ public class QuestScriptManager extends AbstractScriptManager {
|
||||
|
||||
ScriptEngine engine = getQuestScriptEngine(c, questid);
|
||||
if (engine == null) {
|
||||
FilePrinter.printError(FilePrinter.QUEST_UNCODED, "END Quest " + questid + " is uncoded.");
|
||||
log.warn("END Quest {} is uncoded.", questid);
|
||||
qm.dispose();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,8 @@ import constants.skills.Assassin;
|
||||
import constants.skills.Gunslinger;
|
||||
import constants.skills.NightWalker;
|
||||
import net.server.Server;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import provider.*;
|
||||
import provider.wz.WZFiles;
|
||||
import server.MakerItemFactory.MakerItemCreateEntry;
|
||||
@@ -51,6 +53,7 @@ import java.util.Map.Entry;
|
||||
* @author Matze
|
||||
*/
|
||||
public class ItemInformationProvider {
|
||||
private static final Logger log = LoggerFactory.getLogger(ItemInformationProvider.class);
|
||||
private final static ItemInformationProvider instance = new ItemInformationProvider();
|
||||
|
||||
public static ItemInformationProvider getInstance() {
|
||||
@@ -1799,7 +1802,7 @@ public class ItemInformationProvider {
|
||||
String itemName = ItemInformationProvider.getInstance().getName(equip.getItemId());
|
||||
Server.getInstance().broadcastGMMessage(chr.getWorld(), PacketCreator.sendYellowTip("[Warning]: " + chr.getName() + " tried to equip " + itemName + " into slot " + dst + "."));
|
||||
AutobanFactory.PACKET_EDIT.alert(chr, chr.getName() + " tried to forcibly equip an item.");
|
||||
FilePrinter.printError(FilePrinter.EXPLOITS + chr.getName() + ".txt", chr.getName() + " tried to equip " + itemName + " into " + dst + " slot.");
|
||||
log.warn("Chr {} tried to equip {} into slot {}", chr.getName(), itemName, dst);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -53,6 +53,8 @@ import net.server.services.task.channel.OverallService;
|
||||
import net.server.services.type.ChannelServices;
|
||||
import net.server.world.Party;
|
||||
import net.server.world.World;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import scripting.event.EventInstanceManager;
|
||||
import scripting.map.MapScriptManager;
|
||||
import server.ItemInformationProvider;
|
||||
@@ -64,7 +66,6 @@ import server.life.LifeFactory.selfDestruction;
|
||||
import server.partyquest.CarnivalFactory;
|
||||
import server.partyquest.CarnivalFactory.MCSkill;
|
||||
import server.partyquest.GuardianSpawnPoint;
|
||||
import tools.FilePrinter;
|
||||
import tools.PacketCreator;
|
||||
import tools.Pair;
|
||||
import tools.Randomizer;
|
||||
@@ -83,7 +84,7 @@ import static java.util.concurrent.TimeUnit.MINUTES;
|
||||
import static java.util.concurrent.TimeUnit.SECONDS;
|
||||
|
||||
public class MapleMap {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(MapleMap.class);
|
||||
private static final List<MapObjectType> rangedMapobjectTypes = Arrays.asList(MapObjectType.SHOP, MapObjectType.ITEM, MapObjectType.NPC, MapObjectType.MONSTER, MapObjectType.DOOR, MapObjectType.SUMMON, MapObjectType.REACTOR);
|
||||
private static final Map<Integer, Pair<Integer, Integer>> dropBoundsCache = new HashMap<>(100);
|
||||
|
||||
@@ -1985,7 +1986,7 @@ public class MapleMap {
|
||||
} else if (monster.getId() == MobId.GIANT_SNOWMAN_LV5_EASY || monster.getId() == MobId.GIANT_SNOWMAN_LV5_MEDIUM || monster.getId() == MobId.GIANT_SNOWMAN_LV5_HARD) {
|
||||
monsterItemDrop(monster, monster.getDropPeriodTime());
|
||||
} else {
|
||||
FilePrinter.printError(FilePrinter.UNHANDLED_EVENT, "UNCODED TIMED MOB DETECTED: " + monster.getId());
|
||||
log.error("UNCODED TIMED MOB DETECTED: {}", monster.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2059,7 +2060,7 @@ public class MapleMap {
|
||||
public Portal getDoorPortal(int doorid) {
|
||||
Portal doorPortal = portals.get(0x80 + doorid);
|
||||
if (doorPortal == null) {
|
||||
FilePrinter.printError(FilePrinter.EXCEPTION, "[Door] " + mapName + "(" + mapid + ") does not contain door portalid " + doorid);
|
||||
log.warn("[Door] {} ({}) does not contain door portalid {}", mapName, mapid, doorid);
|
||||
return portals.get(0x80);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,8 @@ import client.Character;
|
||||
import net.server.Server;
|
||||
import net.server.world.Party;
|
||||
import net.server.world.PartyCharacter;
|
||||
import tools.FilePrinter;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -35,6 +36,8 @@ import java.util.List;
|
||||
* @author kevintjuh93
|
||||
*/
|
||||
public class PartyQuest {
|
||||
private static final Logger log = LoggerFactory.getLogger(PartyQuest.class);
|
||||
|
||||
int channel, world;
|
||||
Party party;
|
||||
List<Character> participants = new ArrayList<>();
|
||||
@@ -108,7 +111,7 @@ public class PartyQuest {
|
||||
} else if (PQ.equals("LudiPQLast")) {
|
||||
return 800 * level / 5;
|
||||
}
|
||||
FilePrinter.printError(FilePrinter.NPC, "Unhandled PartyQuest: " + PQ);
|
||||
log.warn("Unhandled PartyQuest: {}", PQ);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,103 +0,0 @@
|
||||
package tools;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
|
||||
public class FilePrinter {
|
||||
|
||||
public static final String
|
||||
AUTOBAN_WARNING = "game/AutoBanWarning.txt", // log naming version by Vcoc
|
||||
AUTOBAN_DC = "game/AutoBanDC.txt",
|
||||
ACCOUNT_STUCK = "players/AccountStuck.txt",
|
||||
COMMAND_GM = "reports/Gm.txt",
|
||||
COMMAND_BUG = "reports/Bug.txt",
|
||||
LOG_TRADE = "interactions/Trades.txt",
|
||||
LOG_EXPEDITION = "interactions/Expeditions.txt",
|
||||
LOG_LEAF = "interactions/MapleLeaves.txt",
|
||||
LOG_GACHAPON = "interactions/Gachapon.txt",
|
||||
LOG_CHAT = "interactions/ChatLog.txt",
|
||||
QUEST_RESTORE_ITEM = "game/QuestItemRestore.txt",
|
||||
EXCEPTION_CAUGHT = "game/ExceptionCaught.txt",
|
||||
CLIENT_START = "game/ClientStartError.txt",
|
||||
MAPLE_MAP = "game/MapleMap.txt",
|
||||
ERROR38 = "game/Error38.txt",
|
||||
PACKET_LOG = "game/Log.txt",
|
||||
CASHITEM_BOUGHT = "interactions/CashLog.txt",
|
||||
EXCEPTION = "game/Exceptions.txt",
|
||||
LOGIN_EXCEPTION = "game/LoginExceptions.txt",
|
||||
TRADE_EXCEPTION = "game/TradeExceptions.txt",
|
||||
SQL_EXCEPTION = "game/SqlExceptions.txt",
|
||||
PACKET_HANDLER = "game/packethandler/",
|
||||
PORTAL = "game/portals/",
|
||||
PORTAL_STUCK = "game/portalblocks/",
|
||||
NPC = "game/npcs/",
|
||||
INVOCABLE = "game/invocable/",
|
||||
REACTOR = "game/reactors/",
|
||||
QUEST = "game/quests/",
|
||||
ITEM = "game/items/",
|
||||
MOB_MOVEMENT = "game/MobMovement.txt",
|
||||
MAP_SCRIPT = "game/mapscript/",
|
||||
DIRECTION = "game/directions/",
|
||||
GUILD_CHAR_ERROR = "guilds/GuildCharError.txt",
|
||||
SAVE_CHAR = "players/SaveToDB.txt",
|
||||
INSERT_CHAR = "players/InsertCharacter.txt",
|
||||
LOAD_CHAR = "players/LoadCharFromDB.txt",
|
||||
CREATED_CHAR = "players/createdchars/",
|
||||
DELETED_CHAR = "players/deletedchars/",
|
||||
UNHANDLED_EVENT = "game/DoesNotExist.txt",
|
||||
SESSION = "players/Sessions.txt",
|
||||
DCS = "game/disconnections/",
|
||||
EXPLOITS = "game/exploits/",
|
||||
STORAGE = "game/storage/",
|
||||
PACKET_LOGS = "game/packetlogs/",
|
||||
PACKET_STREAM = "game/packetstream/",
|
||||
FREDRICK = "game/npcs/fredrick/",
|
||||
NPC_UNCODED = "game/npcs/UncodedNPCs.txt",
|
||||
QUEST_UNCODED = "game/quests/UncodedQuests.txt",
|
||||
AUTOSAVING_CHARACTER = "players/SaveCharAuto.txt",
|
||||
SAVING_CHARACTER = "players/SaveChar.txt",
|
||||
CHANGE_CHARACTER_NAME = "players/NameChange.txt",
|
||||
WORLD_TRANSFER = "players/WorldTransfer.txt",
|
||||
FAMILY_ERROR = "players/FamilyErrors.txt",
|
||||
USED_COMMANDS = "commands/UsedCommands.txt",
|
||||
DEADLOCK_ERROR = "deadlocks/Deadlocks.txt",
|
||||
DEADLOCK_STACK = "deadlocks/Path.txt",
|
||||
DEADLOCK_LOCKS = "deadlocks/Locks.txt",
|
||||
DEADLOCK_STATE = "deadlocks/State.txt",
|
||||
DISPOSED_LOCKS = "deadlocks/Disposed.txt";
|
||||
|
||||
private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //for file system purposes, it's nice to use yyyy-MM-dd
|
||||
private static final String FILE_PATH = "logs/" + sdf.format(Calendar.getInstance().getTime()) + "/"; // + sdf.format(Calendar.getInstance().getTime()) + "/"
|
||||
private static final String ERROR = "error/";
|
||||
|
||||
public static void printError(final String name, final String s) {
|
||||
System.out.println("Error thrown: " + name);
|
||||
System.out.println(s);
|
||||
System.out.println();
|
||||
FileOutputStream out = null;
|
||||
final String file = FILE_PATH + ERROR + name;
|
||||
try {
|
||||
File outputFile = new File(file);
|
||||
if (outputFile.getParentFile() != null) {
|
||||
outputFile.getParentFile().mkdirs();
|
||||
}
|
||||
out = new FileOutputStream(file, true);
|
||||
out.write(s.getBytes());
|
||||
//out.write("\r\n---------------------------------\r\n".getBytes());
|
||||
out.write("\r\n".getBytes());
|
||||
} catch (IOException ess) {
|
||||
ess.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (out != null) {
|
||||
out.close();
|
||||
}
|
||||
} catch (IOException ignore) {
|
||||
ignore.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user