All pastes #475708 Raw Edit

Mine

public text v1 · immutable
·published 2007-05-07 17:08 UTC
rendered paste body
/*
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 * 02111-1307, USA.
 *
 * http://www.gnu.org/copyleft/gpl.html
 */
package net.sf.l2j.gameserver.serverpackets;

import java.util.logging.Logger;

import net.sf.l2j.Config;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;

/**
 * 0x42 WarehouseWithdrawalList  dh (h dddhh dhhh d)
 * 
 * @version $Revision: 1.3.2.1.2.5 $ $Date: 2005/03/29 23:15:10 $
 */
public class WareHouseWithdrawalList extends L2GameServerPacket
{
	public static final int Private = 1;
	public static final int Clan = 2;
	public static final int Castle = 3; //not sure
	public static final int Freight = 4; //not sure
	private static Logger _log = Logger.getLogger(WareHouseWithdrawalList.class.getName());
	private static final String _S__54_WAREHOUSEWITHDRAWALLIST = "[S] 42 WareHouseWithdrawalList";
	private L2PcInstance _player;
	private int _playerAdena;
	private L2ItemInstance[] _items;
	private int _whtype;
    private int _seite = 0;

	public WareHouseWithdrawalList(L2PcInstance player, int type)
	{
		_player = player;
		_whtype = type;
        _seite = 0;
    }
    
    public WareHouseWithdrawalList(L2PcInstance player, int type, int seite)
    {
        _player = player;
        _whtype = type;
        _seite = seite;
        
		_playerAdena = _player.getAdena();
		if (_player.getActiveWarehouse() == null)
		{
            // Something went wrong!
            _log.warning("error while sending withdraw request to: " + _player.getName());
            return;
		}
		else _items = _player.getActiveWarehouse().getItems();
		
		if (Config.DEBUG)
			for (L2ItemInstance item : _items)
				_log.fine("item:" + item.getItem().getName() +
						" type1:" + item.getItem().getType1() + " type2:" + item.getItem().getType2());
	}
	
	protected final void writeImpl()
	{
		SortItems first = null;
		int i = 0;
		for (int x = 0; x < _items.length; x++)
		{
			if (_seite == 0 
					|| (_seite == 1  && _items[x].getItem().getType2() == 1)
					|| (_seite == 2  && _items[x].getItem().getType2() == 2) 
					|| (_seite == 3  && _items[x].getItem().getType2() == 0) 
					|| (_seite == 4  && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 6) 
					|| (_seite == 4  && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 7) 
					|| (_seite == 6  && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 9) 
					|| (_seite == 7  && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 8) 
					|| (_seite == 8  && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 1) 
					|| (_seite == 9  && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 0) 
					|| (_seite == 9  && _items[x].getItem().getType2() != 0
									 && _items[x].getItem().getType2() != 1
									 && _items[x].getItem().getType2() != 2
									 && _items[x].getItem().getType2() != 5) 
					|| (_seite == 20 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 4) 
					|| (_seite == 21 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 3) 
					|| (_seite == 22 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 5) 
					|| (_seite == 23 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 2) 
					|| (_seite == 24 && _items[x].getItem().getType2() == 5 && _items[x].getItem().getSort() == 10))
			{
				first = sortieren(_items[x], first);
				i++;
			}
		}

		writeC(0x42);
		/* 0x01-Private Warehouse  
	    * 0x02-Clan Warehouse  
	    * 0x03-Castle Warehouse  
	    * 0x04-Warehouse */  
	    writeH(_whtype);
		writeD(_playerAdena);
		writeH(i);
		
		while (first != null)
		{
            L2ItemInstance item = first.getItem();
            first = first.getNext();
            
			writeH(item.getItem().getType1()); // item type1 //unconfirmed, works
			writeD(0x00); //unconfirmed, works
            writeD(item.getItemId()); //unconfirmed, works
            writeD(item.getCount()); //unconfirmed, works
            writeH(item.getItem().getType2());	// item type2 //unconfirmed, works
            writeH(0x00);	// ?
            writeD(item.getItem().getBodyPart());	// ?
            writeH(item.getEnchantLevel());	// enchant level -confirmed
            writeH(0x00);	// ?
            writeH(0x00);	// ?
            writeD(item.getObjectId()); // item id - confimed	
			writeD(0x00); // C6		
			writeD(0x00); // C6		
		}
	}
	
	private SortItems sortieren (L2ItemInstance obj, SortItems first)
	{
		SortItems neu = new SortItems(obj);
		return neu.sortieren(first);
	}
	
	/* (non-Javadoc)
	 * @see net.sf.l2j.gameserver.serverpackets.ServerBasePacket#getType()
	 */
	public String getType()
	{
		return _S__54_WAREHOUSEWITHDRAWALLIST;
	}
}

class SortItems
{
	private L2ItemInstance _item;
	private SortItems _next = null, _last = null;
	
	public SortItems(L2ItemInstance item)
	{
		_item = item;
	}
	
	public SortItems sortieren (SortItems first)
	{
		if (first == null) first = this;
		else
		{
			SortItems next = first, last = null;
			while (next != null)
			{
				if (getItemName().compareTo(next.getItemName()) <= 0) break;
				last = next;
				next = next._next;
			}
			_next = next;
			_last = last;
			if (_last == null) first = this;
			if (_next != null)
			{
				if (_last != null)
				{
					_last._next = this;
				}
				_next._last = this;
			}
			else
			{
				_last._next = this;
			}
		}
		return first;
	}
	
	private String getItemName()
	{
		return _item.getItemName();
	}
	
	public L2ItemInstance getItem()
	{
		return _item;
	}
	
	public SortItems getNext()
	{
		return _next;
	}
}