rendered paste bodypackage net.sf.l2j.gameserver.clientpackets;import java.nio.ByteBuffer;import java.util.Map;import javolution.util.FastMap;import net.sf.l2j.gameserver.ClientThread;import net.sf.l2j.gameserver.ItemTable;import net.sf.l2j.gameserver.model.L2ItemInstance;import net.sf.l2j.gameserver.model.L2Multisell;import net.sf.l2j.gameserver.model.PcInventory;import net.sf.l2j.gameserver.model.L2Multisell.MultiSellEntry;import net.sf.l2j.gameserver.model.L2Multisell.MultiSellIngredient;import net.sf.l2j.gameserver.model.L2Multisell.MultiSellListContainer;import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;import net.sf.l2j.gameserver.serverpackets.SystemMessage;public class MultiSellChoose extends ClientBasePacket{ private static final String _C__A7_MULTISELLCHOOSE = "[C] A7 MultiSellChoose"; //private static Logger _log = Logger.getLogger(MultiSellChoose.class.getName()); private int _listId; private int _entryId; private int _amount; public MultiSellChoose(ByteBuffer buf, ClientThread client) { super(buf,client); _listId = readD(); _entryId = readD(); _amount = readD(); } public void runImpl() { if(_amount < 1) return; MultiSellListContainer list = L2Multisell.getInstance().getList(_listId); L2PcInstance player = getClient().getActiveChar(); for(MultiSellEntry entry : list.getEntries()) { if(entry.getEntryId() == _entryId) { doExchange(player,entry); return; } } } private void doExchange(L2PcInstance player, MultiSellEntry entry) { PcInventory inv = player.getInventory(); L2ItemInstance items[] = inv.getItems(); Map<Integer,Integer> _oids = new FastMap<Integer,Integer>(); for(MultiSellIngredient e : entry.getIngredients()) { for(L2ItemInstance item : items) { // check if item is good if(item.getItemId() == e.getItemId() && _oids.get(item.getObjectId()) == null && item.getCount() >= e.getItemCount() && item.getEnchantLevel() >= e.getItemEnchant()) { _oids.put(item.getObjectId(),e.getItemCount()); } } if(_oids.size() < entry.getIngredients().size()) { player.sendPacket(new SystemMessage(SystemMessage.NOT_ENOUGH_ITEMS)); return; } } /** All ok, remove items and add final product */ InventoryUpdate iu = new InventoryUpdate(); for(Integer oid : _oids.keySet()) { inv.destroyItem(oid,_oids.get(oid)); } L2ItemInstance product = ItemTable.getInstance().createItem(entry.getProductId()); product.setCount(entry.getProductCount()); if(product.getEnchantLevel() == -1) // preserve existing enchant level { int oldlevel = inv.getItemByItemId(product.getItemId()).getEnchantLevel(); product.setEnchantLevel(oldlevel); } else { product.setEnchantLevel(entry.getProductEnchant()); } iu.addItem(product); inv.addItem(product); SystemMessage sm = new SystemMessage(SystemMessage.EARNED_S2_S1_s); sm.addNumber(product.getCount()); sm.addItemName(product.getItemId()); player.sendPacket(sm); player.sendPacket(iu); } public String getType() { return _C__A7_MULTISELLCHOOSE; }}