All pastes #46595 Raw Edit

Miscellany

public java v1 · immutable
#46595 ·published 2006-03-22 14:11 UTC
rendered paste body
package 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;    }}