From e05697c2008dac969621800d9a213561c0a840c5 Mon Sep 17 00:00:00 2001 From: MobiusDev <8391001+MobiusDevelopment@users.noreply.github.com> Date: Sat, 1 Apr 2017 12:47:30 +0000 Subject: [PATCH] Fixed selling items to private stores. --- .../RequestPrivateStoreSell.java | 33 ++++++++++----- .../clientpackets/SetPrivateStoreListBuy.java | 41 +++++++++++++------ 2 files changed, 50 insertions(+), 24 deletions(-) diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java index 85acf6c99e..cb9ca00390 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/RequestPrivateStoreSell.java @@ -31,14 +31,8 @@ import com.l2jmobius.gameserver.network.L2GameClient; import com.l2jmobius.gameserver.network.SystemMessageId; import com.l2jmobius.gameserver.network.serverpackets.ActionFailed; -/** - * This class ... - * @version $Revision: 1.2.2.1.2.4 $ $Date: 2005/03/27 15:29:30 $ - */ public final class RequestPrivateStoreSell implements IClientIncomingPacket { - private static final int BATCH_LENGTH = 32; // length of the one item - private int _storePlayerId; private ItemRequest[] _items = null; @@ -47,7 +41,7 @@ public final class RequestPrivateStoreSell implements IClientIncomingPacket { _storePlayerId = packet.readD(); final int count = packet.readD(); - if ((count <= 0) || (count > Config.MAX_ITEM_IN_PACKET) || ((count * BATCH_LENGTH) != packet.getReadableBytes())) + if ((count <= 0) || (count > Config.MAX_ITEM_IN_PACKET)) { return false; } @@ -57,12 +51,29 @@ public final class RequestPrivateStoreSell implements IClientIncomingPacket { final int objectId = packet.readD(); final int itemId = packet.readD(); - packet.readH(); // TODO analyse this - packet.readH(); // TODO analyse this + @SuppressWarnings("unused") + final int enchantLevel = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int nameExists = packet.readH(); // TODO: use this final long cnt = packet.readQ(); final long price = packet.readQ(); - - if ((objectId < 1) || (itemId < 1) || (cnt < 1) || (price < 0)) + @SuppressWarnings("unused") + final int augmentationEffect1 = packet.readD(); // TODO: use this + @SuppressWarnings("unused") + final int augmentationEffect2 = packet.readD(); // TODO: use this + @SuppressWarnings("unused") + final int visualId = packet.readD(); // TODO: use this + final int primarySpecialAbilities = packet.readC(); + for (int a = 0; a < primarySpecialAbilities; a++) + { + packet.readD(); // sa effect + } + final int secondarySpecialAbilities = packet.readC(); + for (int a = 0; a < secondarySpecialAbilities; a++) + { + packet.readD(); // sa effect + } + if (/* (objectId < 1) || */ (itemId < 1) || (cnt < 1) || (price < 0)) { _items = null; return false; diff --git a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java index fad73d56d2..ea2fcb07bc 100644 --- a/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java +++ b/L2J_Mobius_Helios/java/com/l2jmobius/gameserver/network/clientpackets/SetPrivateStoreListBuy.java @@ -32,21 +32,15 @@ import com.l2jmobius.gameserver.network.serverpackets.PrivateStoreMsgBuy; import com.l2jmobius.gameserver.taskmanager.AttackStanceTaskManager; import com.l2jmobius.gameserver.util.Util; -/** - * This class ... - * @version $Revision: 1.2.2.1.2.5 $ $Date: 2005/03/27 15:29:30 $ CPU Disasm Packets: ddhhQQ cddb - */ public final class SetPrivateStoreListBuy implements IClientIncomingPacket { - private static final int BATCH_LENGTH = 44; // length of the one item - private Item[] _items = null; @Override public boolean read(L2GameClient client, PacketReader packet) { final int count = packet.readD(); - if ((count < 1) || (count > Config.MAX_ITEM_IN_PACKET) || ((count * BATCH_LENGTH) != packet.getReadableBytes())) + if ((count < 1) || (count > Config.MAX_ITEM_IN_PACKET)) { return false; } @@ -56,8 +50,10 @@ public final class SetPrivateStoreListBuy implements IClientIncomingPacket { final int itemId = packet.readD(); - packet.readH(); // TODO analyse this - packet.readH(); // TODO analyse this + @SuppressWarnings("unused") + final int enchantLevel = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int nameExists = packet.readH(); // TODO: use this final long cnt = packet.readQ(); final long price = packet.readQ(); @@ -67,10 +63,29 @@ public final class SetPrivateStoreListBuy implements IClientIncomingPacket _items = null; return false; } - packet.readD(); // Unk - packet.readD(); // Unk - packet.readD(); // Unk - packet.readD(); // Unk + + @SuppressWarnings("unused") + final int augmentationEffect1 = packet.readD(); // TODO: use this + @SuppressWarnings("unused") + final int augmentationEffect2 = packet.readD(); // TODO: use this + @SuppressWarnings("unused") + final int attackElement = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int attackElementPower = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int fireDefense = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int waterDefense = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int windDefense = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int earthDefense = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int holyDefense = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int darkDefense = packet.readH(); // TODO: use this + @SuppressWarnings("unused") + final int visualId = packet.readD(); // TODO: use this _items[i] = new Item(itemId, cnt, price); }