diff --git a/src/main/java/client/processor/npc/DueyProcessor.java b/src/main/java/client/processor/npc/DueyProcessor.java index 345c135c7a..8a8615985b 100644 --- a/src/main/java/client/processor/npc/DueyProcessor.java +++ b/src/main/java/client/processor/npc/DueyProcessor.java @@ -92,14 +92,15 @@ public class DueyProcessor { } private static Pair getAccountCharacterIdFromCNAME(String name) { - Pair ids = null; + Pair ids = new Pair<>(-1, -1); try (Connection con = DatabaseConnection.getConnection(); PreparedStatement ps = con.prepareStatement("SELECT id,accountid FROM characters WHERE name = ?")) { ps.setString(1, name); try (ResultSet rs = ps.executeQuery()) { if (rs.next()) { - ids = new Pair<>(rs.getInt("accountid"), rs.getInt("id")); + ids.left = rs.getInt("accountid"); + ids.right = rs.getInt("id"); } } } catch (SQLException e) { @@ -315,30 +316,25 @@ public class DueyProcessor { return; } - Pair accIdCid; - if (c.getPlayer().getMeso() >= finalcost) { - accIdCid = getAccountCharacterIdFromCNAME(recipient); - int recipientAccId = accIdCid.getLeft(); - if (recipientAccId != -1) { - if (recipientAccId == c.getAccID()) { - c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SAMEACC_ERROR.getCode())); - return; - } - } else { - c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NAME_DOES_NOT_EXIST.getCode())); - return; - } - } else { + if(c.getPlayer().getMeso() < finalcost) { c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NOT_ENOUGH_MESOS.getCode())); return; } - int recipientCid = accIdCid.getRight(); - if (recipientCid == -1) { + var accIdCid = getAccountCharacterIdFromCNAME(recipient); + var recipientAccId = accIdCid.getLeft(); + var recipientCid = accIdCid.getRight(); + + if (recipientAccId == -1 || recipientCid == -1) { c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_NAME_DOES_NOT_EXIST.getCode())); return; } + if (recipientAccId == c.getAccID()) { + c.sendPacket(PacketCreator.sendDueyMSG(DueyProcessor.Actions.TOCLIENT_SEND_SAMEACC_ERROR.getCode())); + return; + } + if (quick) { InventoryManipulator.removeById(c, InventoryType.CASH, ItemId.QUICK_DELIVERY_TICKET, (short) 1, false, false); } diff --git a/src/main/java/scripting/AbstractPlayerInteraction.java b/src/main/java/scripting/AbstractPlayerInteraction.java index 9b28986546..46ba27f246 100644 --- a/src/main/java/scripting/AbstractPlayerInteraction.java +++ b/src/main/java/scripting/AbstractPlayerInteraction.java @@ -140,6 +140,23 @@ public class AbstractPlayerInteraction { warpParty(id, portalId, mapid, mapid); } + public void warpParty(int map, String portalName) { + + int mapid = getMapId(); + var warpMap = c.getChannelServer().getMapFactory().getMap(map); + + var portal = warpMap.getPortal(portalName); + + if (portal == null) { + portal = warpMap.getPortal(0); + } + + var portalId = portal.getId(); + + warpParty(map, portalId, mapid, mapid); + + } + public void warpParty(int id, int fromMinId, int fromMaxId) { warpParty(id, 0, fromMinId, fromMaxId); }