Fixed sell item exploit.
This commit is contained in:
@@ -130,13 +130,20 @@ public class CastleWarehouse extends Folk
|
|||||||
@Override
|
@Override
|
||||||
public void onBypassFeedback(Player player, String command)
|
public void onBypassFeedback(Player player, String command)
|
||||||
{
|
{
|
||||||
if (player.getActiveEnchantItem() != null)
|
if ((player.getActiveEnchantItem() != null) || (player.getActiveTradeList() != null))
|
||||||
{
|
{
|
||||||
LOGGER.info("Player " + player.getName() + " trying to use enchant exploit, ban this player!");
|
LOGGER.info("Player " + player.getName() + " trying to use enchant exploit, ban this player!");
|
||||||
player.closeNetConnection();
|
player.closeNetConnection();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((player.getPrivateStoreType() != 0) || player.isInStoreMode())
|
||||||
|
{
|
||||||
|
player.sendPacket(SystemMessageId.ITEMS_CANNOT_BE_DISCARDED_WHILE_IN_PRIVATE_STORE_STATUS);
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (command.startsWith("WithdrawP"))
|
if (command.startsWith("WithdrawP"))
|
||||||
{
|
{
|
||||||
showRetrieveWindow(player);
|
showRetrieveWindow(player);
|
||||||
|
@@ -132,10 +132,12 @@ public class EnterWorld implements IClientIncomingPacket
|
|||||||
|
|
||||||
// Set online status
|
// Set online status
|
||||||
player.setOnlineStatus(true);
|
player.setOnlineStatus(true);
|
||||||
|
// running is default
|
||||||
player.setRunning(); // running is default
|
player.setRunning();
|
||||||
player.standUp(); // standing is default
|
// standing is default
|
||||||
player.broadcastKarma(); // include UserInfo
|
player.standUp();
|
||||||
|
// include UserInfo
|
||||||
|
player.broadcastKarma();
|
||||||
|
|
||||||
// Engage and notify Partner
|
// Engage and notify Partner
|
||||||
if (Config.ALLOW_WEDDING)
|
if (Config.ALLOW_WEDDING)
|
||||||
@@ -237,7 +239,7 @@ public class EnterWorld implements IClientIncomingPacket
|
|||||||
player.getMacroses().sendUpdate();
|
player.getMacroses().sendUpdate();
|
||||||
|
|
||||||
// Send packets info
|
// Send packets info
|
||||||
player.sendPacket(new ClientSetTime()); // SetClientTime
|
player.sendPacket(new ClientSetTime());
|
||||||
player.sendPacket(new UserInfo(player));
|
player.sendPacket(new UserInfo(player));
|
||||||
player.sendPacket(new HennaInfo(player));
|
player.sendPacket(new HennaInfo(player));
|
||||||
player.sendPacket(new FriendList(player));
|
player.sendPacket(new FriendList(player));
|
||||||
@@ -271,8 +273,6 @@ public class EnterWorld implements IClientIncomingPacket
|
|||||||
|
|
||||||
PetitionManager.getInstance().checkPetitionMessages(player);
|
PetitionManager.getInstance().checkPetitionMessages(player);
|
||||||
|
|
||||||
// Send user info again .. just like the real client
|
|
||||||
// sendPacket(ui);
|
|
||||||
if ((player.getClanId() != 0) && (player.getClan() != null))
|
if ((player.getClanId() != 0) && (player.getClan() != null))
|
||||||
{
|
{
|
||||||
player.sendPacket(new PledgeShowMemberListAll(player.getClan(), player));
|
player.sendPacket(new PledgeShowMemberListAll(player.getClan(), player));
|
||||||
|
@@ -56,6 +56,12 @@ public class RequestDropItem implements IClientIncomingPacket
|
|||||||
@Override
|
@Override
|
||||||
public void run(GameClient client)
|
public void run(GameClient client)
|
||||||
{
|
{
|
||||||
|
// Flood protect drop to avoid packet lag
|
||||||
|
if (!client.getFloodProtectors().canDropItem())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Player player = client.getPlayer();
|
final Player player = client.getPlayer();
|
||||||
if ((player == null) || player.isDead())
|
if ((player == null) || player.isDead())
|
||||||
{
|
{
|
||||||
@@ -75,12 +81,6 @@ public class RequestDropItem implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flood protect drop to avoid packet lag
|
|
||||||
if (!client.getFloodProtectors().canDropItem())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
||||||
if ((item == null) || (_count == 0) || !player.validateItemManipulation(_objectId, "drop"))
|
if ((item == null) || (_count == 0) || !player.validateItemManipulation(_objectId, "drop"))
|
||||||
{
|
{
|
||||||
@@ -107,6 +107,12 @@ public class RequestDropItem implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't allow if it's flying
|
||||||
|
if (player.isFlying())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (_count > item.getCount())
|
if (_count > item.getCount())
|
||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
player.sendPacket(SystemMessageId.THIS_ITEM_CANNOT_BE_DISCARDED);
|
||||||
|
@@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.item.instance.Item;
|
|||||||
import org.l2jmobius.gameserver.model.item.type.WeaponType;
|
import org.l2jmobius.gameserver.model.item.type.WeaponType;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
|
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.EnchantResult;
|
import org.l2jmobius.gameserver.network.serverpackets.EnchantResult;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
|
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ItemList;
|
import org.l2jmobius.gameserver.network.serverpackets.ItemList;
|
||||||
@@ -132,7 +133,8 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
|||||||
if (player.getActiveTradeList() != null)
|
if (player.getActiveTradeList() != null)
|
||||||
{
|
{
|
||||||
player.cancelActiveTrade();
|
player.cancelActiveTrade();
|
||||||
player.sendMessage("Your trade canceled");
|
player.sendMessage("Your trade was cancelled.");
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,6 +143,7 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
|||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
||||||
player.setActiveEnchantItem(null);
|
player.setActiveEnchantItem(null);
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,6 +153,20 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((player.getPrivateStoreType() != 0) || player.isInStoreMode())
|
||||||
|
{
|
||||||
|
player.sendPacket(SystemMessageId.ITEMS_CANNOT_BE_DISCARDED_WHILE_IN_PRIVATE_STORE_STATUS);
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((player.getActiveWarehouse() != null) || (player.getActiveTradeList() != null))
|
||||||
|
{
|
||||||
|
player.sendMessage("You can't enchant items when you got active warehouse or active trade.");
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
||||||
Item scroll = player.getActiveEnchantItem();
|
Item scroll = player.getActiveEnchantItem();
|
||||||
player.setActiveEnchantItem(null);
|
player.setActiveEnchantItem(null);
|
||||||
|
@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.instance.Fisherman;
|
import org.l2jmobius.gameserver.model.actor.instance.Fisherman;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Merchant;
|
import org.l2jmobius.gameserver.model.actor.instance.Merchant;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
|
import org.l2jmobius.gameserver.model.item.instance.Item.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||||
@@ -139,10 +140,9 @@ public class RequestSellItem implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Item item = player.checkItemManipulation(objectId, count, "sell");
|
|
||||||
|
|
||||||
// Check Item
|
// Check Item
|
||||||
if ((item == null) || !item.getItem().isSellable())
|
final Item item = player.checkItemManipulation(objectId, count, "sell");
|
||||||
|
if ((item == null) || !item.getItem().isSellable() || (item.getItemLocation() != ItemLocation.INVENTORY))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@@ -23,6 +23,7 @@ import org.l2jmobius.Config;
|
|||||||
import org.l2jmobius.commons.network.PacketWriter;
|
import org.l2jmobius.commons.network.PacketWriter;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
|
import org.l2jmobius.gameserver.model.item.instance.Item.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,6 +42,7 @@ public class SellList implements IClientOutgoingPacket
|
|||||||
for (Item item : _player.getInventory().getItems())
|
for (Item item : _player.getInventory().getItems())
|
||||||
{
|
{
|
||||||
if ((item != null) && !item.isEquipped() && // Not equipped
|
if ((item != null) && !item.isEquipped() && // Not equipped
|
||||||
|
(item.getItemLocation() == ItemLocation.INVENTORY) && // exploit fix
|
||||||
item.getItem().isSellable() && // Item is sellable
|
item.getItem().isSellable() && // Item is sellable
|
||||||
(item.getItem().getItemId() != 57) && // Adena is not sellable
|
(item.getItem().getItemId() != 57) && // Adena is not sellable
|
||||||
((_player.getPet() == null) || // Pet not summoned or
|
((_player.getPet() == null) || // Pet not summoned or
|
||||||
|
@@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.instancemanager.CastleManager;
|
|||||||
import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure;
|
import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
|
import org.l2jmobius.gameserver.model.item.instance.Item.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
|
|
||||||
public class SellListProcure implements IClientOutgoingPacket
|
public class SellListProcure implements IClientOutgoingPacket
|
||||||
@@ -46,7 +47,7 @@ public class SellListProcure implements IClientOutgoingPacket
|
|||||||
for (CropProcure c : _procureList)
|
for (CropProcure c : _procureList)
|
||||||
{
|
{
|
||||||
final Item item = _player.getInventory().getItemByItemId(c.getId());
|
final Item item = _player.getInventory().getItemByItemId(c.getId());
|
||||||
if ((item != null) && (c.getAmount() > 0))
|
if ((item != null) && (c.getAmount() > 0) && (item.getItemLocation() == ItemLocation.INVENTORY))
|
||||||
{
|
{
|
||||||
_sellList.put(item, c.getAmount());
|
_sellList.put(item, c.getAmount());
|
||||||
}
|
}
|
||||||
|
@@ -130,13 +130,20 @@ public class CastleWarehouse extends Folk
|
|||||||
@Override
|
@Override
|
||||||
public void onBypassFeedback(Player player, String command)
|
public void onBypassFeedback(Player player, String command)
|
||||||
{
|
{
|
||||||
if (player.getActiveEnchantItem() != null)
|
if ((player.getActiveEnchantItem() != null) || (player.getActiveTradeList() != null))
|
||||||
{
|
{
|
||||||
LOGGER.info("Player " + player.getName() + " trying to use enchant exploit, ban this player!");
|
LOGGER.info("Player " + player.getName() + " trying to use enchant exploit, ban this player!");
|
||||||
player.closeNetConnection();
|
player.closeNetConnection();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((player.getPrivateStoreType() != 0) || player.isInStoreMode())
|
||||||
|
{
|
||||||
|
player.sendPacket(SystemMessageId.ITEMS_CANNOT_BE_DISCARDED_WHILE_IN_PRIVATE_STORE_STATUS);
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (command.startsWith("WithdrawP"))
|
if (command.startsWith("WithdrawP"))
|
||||||
{
|
{
|
||||||
showRetrieveWindow(player);
|
showRetrieveWindow(player);
|
||||||
|
@@ -134,10 +134,12 @@ public class EnterWorld implements IClientIncomingPacket
|
|||||||
|
|
||||||
// Set online status
|
// Set online status
|
||||||
player.setOnlineStatus(true);
|
player.setOnlineStatus(true);
|
||||||
|
// running is default
|
||||||
player.setRunning(); // running is default
|
player.setRunning();
|
||||||
player.standUp(); // standing is default
|
// standing is default
|
||||||
player.broadcastKarma(); // include UserInfo
|
player.standUp();
|
||||||
|
// include UserInfo
|
||||||
|
player.broadcastKarma();
|
||||||
|
|
||||||
// Engage and notify Partner
|
// Engage and notify Partner
|
||||||
if (Config.ALLOW_WEDDING)
|
if (Config.ALLOW_WEDDING)
|
||||||
@@ -260,7 +262,7 @@ public class EnterWorld implements IClientIncomingPacket
|
|||||||
player.getMacroses().sendUpdate();
|
player.getMacroses().sendUpdate();
|
||||||
|
|
||||||
// Send packets info
|
// Send packets info
|
||||||
player.sendPacket(new ClientSetTime()); // SetClientTime
|
player.sendPacket(new ClientSetTime());
|
||||||
player.sendPacket(new UserInfo(player));
|
player.sendPacket(new UserInfo(player));
|
||||||
player.sendPacket(new HennaInfo(player));
|
player.sendPacket(new HennaInfo(player));
|
||||||
player.sendPacket(new FriendList(player));
|
player.sendPacket(new FriendList(player));
|
||||||
@@ -294,8 +296,6 @@ public class EnterWorld implements IClientIncomingPacket
|
|||||||
|
|
||||||
PetitionManager.getInstance().checkPetitionMessages(player);
|
PetitionManager.getInstance().checkPetitionMessages(player);
|
||||||
|
|
||||||
// Send user info again .. just like the real client
|
|
||||||
// sendPacket(ui);
|
|
||||||
if ((player.getClanId() != 0) && (player.getClan() != null))
|
if ((player.getClanId() != 0) && (player.getClan() != null))
|
||||||
{
|
{
|
||||||
player.sendPacket(new PledgeShowMemberListAll(player.getClan(), player));
|
player.sendPacket(new PledgeShowMemberListAll(player.getClan(), player));
|
||||||
|
@@ -57,6 +57,12 @@ public class RequestDropItem implements IClientIncomingPacket
|
|||||||
@Override
|
@Override
|
||||||
public void run(GameClient client)
|
public void run(GameClient client)
|
||||||
{
|
{
|
||||||
|
// Flood protect drop to avoid packet lag
|
||||||
|
if (!client.getFloodProtectors().canDropItem())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Player player = client.getPlayer();
|
final Player player = client.getPlayer();
|
||||||
if ((player == null) || player.isDead())
|
if ((player == null) || player.isDead())
|
||||||
{
|
{
|
||||||
@@ -76,12 +82,6 @@ public class RequestDropItem implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flood protect drop to avoid packet lag
|
|
||||||
if (!client.getFloodProtectors().canDropItem())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
||||||
if ((item == null) || (_count == 0) || !player.validateItemManipulation(_objectId, "drop"))
|
if ((item == null) || (_count == 0) || !player.validateItemManipulation(_objectId, "drop"))
|
||||||
{
|
{
|
||||||
@@ -114,6 +114,12 @@ public class RequestDropItem implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Don't allow if it's flying
|
||||||
|
if (player.isFlying())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Cursed Weapons cannot be dropped
|
// Cursed Weapons cannot be dropped
|
||||||
if (CursedWeaponsManager.getInstance().isCursed(item.getItemId()))
|
if (CursedWeaponsManager.getInstance().isCursed(item.getItemId()))
|
||||||
{
|
{
|
||||||
|
@@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.model.item.instance.Item;
|
|||||||
import org.l2jmobius.gameserver.model.item.type.WeaponType;
|
import org.l2jmobius.gameserver.model.item.type.WeaponType;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
|
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.EnchantResult;
|
import org.l2jmobius.gameserver.network.serverpackets.EnchantResult;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
|
import org.l2jmobius.gameserver.network.serverpackets.InventoryUpdate;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ItemList;
|
import org.l2jmobius.gameserver.network.serverpackets.ItemList;
|
||||||
@@ -132,7 +133,8 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
|||||||
if (player.getActiveTradeList() != null)
|
if (player.getActiveTradeList() != null)
|
||||||
{
|
{
|
||||||
player.cancelActiveTrade();
|
player.cancelActiveTrade();
|
||||||
player.sendMessage("Your trade canceled");
|
player.sendMessage("Your trade was cancelled.");
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,6 +143,7 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
|||||||
{
|
{
|
||||||
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITIONS);
|
||||||
player.setActiveEnchantItem(null);
|
player.setActiveEnchantItem(null);
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -150,6 +153,20 @@ public class RequestEnchantItem implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((player.getPrivateStoreType() != 0) || player.isInStoreMode())
|
||||||
|
{
|
||||||
|
player.sendPacket(SystemMessageId.ITEMS_CANNOT_BE_DISCARDED_WHILE_IN_PRIVATE_STORE_STATUS);
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((player.getActiveWarehouse() != null) || (player.getActiveTradeList() != null))
|
||||||
|
{
|
||||||
|
player.sendMessage("You can't enchant items when you got active warehouse or active trade.");
|
||||||
|
player.sendPacket(ActionFailed.STATIC_PACKET);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
final Item item = player.getInventory().getItemByObjectId(_objectId);
|
||||||
Item scroll = player.getActiveEnchantItem();
|
Item scroll = player.getActiveEnchantItem();
|
||||||
player.setActiveEnchantItem(null);
|
player.setActiveEnchantItem(null);
|
||||||
|
@@ -25,6 +25,7 @@ import org.l2jmobius.gameserver.model.actor.Player;
|
|||||||
import org.l2jmobius.gameserver.model.actor.instance.Fisherman;
|
import org.l2jmobius.gameserver.model.actor.instance.Fisherman;
|
||||||
import org.l2jmobius.gameserver.model.actor.instance.Merchant;
|
import org.l2jmobius.gameserver.model.actor.instance.Merchant;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
|
import org.l2jmobius.gameserver.model.item.instance.Item.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.network.GameClient;
|
import org.l2jmobius.gameserver.network.GameClient;
|
||||||
import org.l2jmobius.gameserver.network.SystemMessageId;
|
import org.l2jmobius.gameserver.network.SystemMessageId;
|
||||||
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
|
||||||
@@ -139,10 +140,9 @@ public class RequestSellItem implements IClientIncomingPacket
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Item item = player.checkItemManipulation(objectId, count, "sell");
|
|
||||||
|
|
||||||
// Check Item
|
// Check Item
|
||||||
if ((item == null) || !item.getItem().isSellable())
|
final Item item = player.checkItemManipulation(objectId, count, "sell");
|
||||||
|
if ((item == null) || !item.getItem().isSellable() || (item.getItemLocation() != ItemLocation.INVENTORY))
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@@ -23,6 +23,7 @@ import org.l2jmobius.Config;
|
|||||||
import org.l2jmobius.commons.network.PacketWriter;
|
import org.l2jmobius.commons.network.PacketWriter;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
|
import org.l2jmobius.gameserver.model.item.instance.Item.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -41,6 +42,7 @@ public class SellList implements IClientOutgoingPacket
|
|||||||
for (Item item : _player.getInventory().getItems())
|
for (Item item : _player.getInventory().getItems())
|
||||||
{
|
{
|
||||||
if ((item != null) && !item.isEquipped() && // Not equipped
|
if ((item != null) && !item.isEquipped() && // Not equipped
|
||||||
|
(item.getItemLocation() == ItemLocation.INVENTORY) && // exploit fix
|
||||||
item.getItem().isSellable() && // Item is sellable
|
item.getItem().isSellable() && // Item is sellable
|
||||||
(item.getItem().getItemId() != 57) && // Adena is not sellable
|
(item.getItem().getItemId() != 57) && // Adena is not sellable
|
||||||
((_player.getPet() == null) || // Pet not summoned or
|
((_player.getPet() == null) || // Pet not summoned or
|
||||||
|
@@ -27,6 +27,7 @@ import org.l2jmobius.gameserver.instancemanager.CastleManager;
|
|||||||
import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure;
|
import org.l2jmobius.gameserver.instancemanager.CastleManorManager.CropProcure;
|
||||||
import org.l2jmobius.gameserver.model.actor.Player;
|
import org.l2jmobius.gameserver.model.actor.Player;
|
||||||
import org.l2jmobius.gameserver.model.item.instance.Item;
|
import org.l2jmobius.gameserver.model.item.instance.Item;
|
||||||
|
import org.l2jmobius.gameserver.model.item.instance.Item.ItemLocation;
|
||||||
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
import org.l2jmobius.gameserver.network.OutgoingPackets;
|
||||||
|
|
||||||
public class SellListProcure implements IClientOutgoingPacket
|
public class SellListProcure implements IClientOutgoingPacket
|
||||||
@@ -46,7 +47,7 @@ public class SellListProcure implements IClientOutgoingPacket
|
|||||||
for (CropProcure c : _procureList)
|
for (CropProcure c : _procureList)
|
||||||
{
|
{
|
||||||
final Item item = _player.getInventory().getItemByItemId(c.getId());
|
final Item item = _player.getInventory().getItemByItemId(c.getId());
|
||||||
if ((item != null) && (c.getAmount() > 0))
|
if ((item != null) && (c.getAmount() > 0) && (item.getItemLocation() == ItemLocation.INVENTORY))
|
||||||
{
|
{
|
||||||
_sellList.put(item, c.getAmount());
|
_sellList.put(item, c.getAmount());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user