Показать сообщение отдельно
Непрочитано 03.02.2013, 19:48   #32
Аватар для Mifesto
Пользователь

По умолчанию Re: Работа над Goddess of Destruction Glory Days

Вот мой 488
Код:
public class CharacterSelectionInfo extends L2GameServerPacket
{
    private static final Logger _log = LoggerFactory.getLogger(CharacterSelectionInfo.class);

	private String _loginName;
	private int _sessionId;
	private CharInfoList _charInfoList;

    public CharInfoList getCharInfo()
    {
        return _charInfoList;
    }

	public CharacterSelectionInfo(String loginName, int sessionId)
	{
		_sessionId = sessionId;
        _loginName = loginName;
        _charInfoList = new CharInfoList(loginName);
	}

    @Override
	protected final void writeImpl()
	{
		writeEx(ServerPacket.CharacterSelectionInfo);

        writeD(_charInfoList != null ? _charInfoList.size() : 0);
        writeD(0x07); // Максимальное количество персонажей на сервере
        writeC(0x00); // Разрешает или запрещает создание игроков
        writeC(0x01);
        writeD(0x00);

		for(CharInfoList.CharInfo _charInfo :  _charInfoList)
		{
            writeS(_charInfo.getName());
            writeD(_charInfo.getCharId()); // ?
            writeS(_loginName);
            writeD(_sessionId);
            writeD(_charInfo.getClanId());
            writeD(0x00); // ??

            writeD(_charInfo.getSex());
            writeD(_charInfo.getRace());
            writeD(_charInfo.getBaseClassId());

            writeD(0x01); // active ??

            writeD(_charInfo.getX());
            writeD(_charInfo.getY());
            writeD(_charInfo.getZ());

            writeF(_charInfo.getCurrentHp());
            writeF(_charInfo.getCurrentMp());

            writeD(_charInfo.getSp());
            writeQ(_charInfo.getExp());
            writeF(Experience.getExpPercent(_charInfo.getLevel(), _charInfo.getExp()));
            writeD(_charInfo.getLevel());

            writeD(_charInfo.getKarma());
            writeD(_charInfo.getPk());
            writeD(_charInfo.getPvP());

            for (int j = 0; j < 7; j++)
                writeD(0x00);

            for(int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
                writeD(_charInfo.getPaperdollItemId(PAPERDOLL_ID));

            writeD(_charInfo.getPaperdollVisualId(Inventory.PAPERDOLL_RHAND)); //Внешний вид оружия (ИД Итема).
            writeD(_charInfo.getPaperdollVisualId(Inventory.PAPERDOLL_LHAND)); //Внешний вид щита (ИД Итема).
            writeD(_charInfo.getPaperdollVisualId(Inventory.PAPERDOLL_GLOVES)); //Внешний вид перчаток (ИД Итема).
            writeD(_charInfo.getPaperdollVisualId(Inventory.PAPERDOLL_CHEST)); //Внешний вид верха (ИД Итема).
            writeD(_charInfo.getPaperdollVisualId(Inventory.PAPERDOLL_LEGS)); //Внешний вид низа (ИД Итема).
            writeD(_charInfo.getPaperdollVisualId(Inventory.PAPERDOLL_FEET)); //Внешний вид ботинок (ИД Итема).
            writeD(0);
            writeD(_charInfo.getPaperdollVisualId(Inventory.PAPERDOLL_HAIR)); //Внешний вид шляпы (ИД итема).
            writeD(_charInfo.getPaperdollVisualId(Inventory.PAPERDOLL_DHAIR)); //Внешний вид маски (ИД итема).

            writeD(_charInfo.getHairStyle());
            writeD(_charInfo.getHairColor());
            writeD(_charInfo.getFace());

            writeF(_charInfo.getMaxHp()); // hp max
            writeF(_charInfo.getMaxMp()); // mp max

            writeD(_charInfo.getAccessLevel() > -100 ? _charInfo.getDeleteTime() : -1);
            writeD(_charInfo.getClassId());
            writeD(_charInfo.isLast() ? 1 : 0);

            writeC(Math.min(_charInfo.getPaperdollEnchantEffect(Inventory.PAPERDOLL_RHAND), 127));

            writeH(0x00);
            writeH(0x00);

            int weaponId = _charInfo.getPaperdollItemId(Inventory.PAPERDOLL_RHAND);
            if (weaponId == 8190) // Transform id
                writeD(301);
            else if (weaponId == 8689)
                writeD(302);
            else
                writeD(0x00);

            for (int j = 0; j < 4; j++)
                writeD(0x00);

            writeF(0x00);
            writeF(0x00);

            writeD(getClient().getVitalityPoints()); // Vitality Points
            writeD(getClient().getVitalityPercent()); // Vitality percent
            writeD(getClient().getVitalityItemCounts()); //Vitaliti items count
            writeD(_charInfo.getAccessLevel() > -100 ? 0x01 : 0x00); // Access level
            writeC(0x00);
            writeC(0x00);
		}
	}
}
Протокол какой используете?

Последний раз редактировалось Mifesto; 03.02.2013 в 20:12.
Mifesto вне форума Отправить сообщение для Mifesto с помощью ICQ Ответить с цитированием
Сказали спасибо: