Вот мой 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);
}
}
}
Протокол какой используете?