@Override
protected final void writeImpl()
{
int size = _characterPackages != null ? _characterPackages.length : 0;
writeC(0x09);
writeD(size);
writeD(ServerConfig.CHAR_NUMBER_PER_SERVER);
writeC(size == ServerConfig.CHAR_NUMBER_PER_SERVER ? 0x01 : 0x00);
writeC(0x01);
writeD(0x02);
writeC(0x00);
writeC(0x00);
long lastAccess = -1L;
int lastUsed = -1;
for(int i = 0; i < size; i++)
if(lastAccess < _characterPackages[I].getLastAccess())
{
lastAccess = _characterPackages[I].getLastAccess();
lastUsed = i;
}
for(int i = 0; i < size; i++)
{
CharSelectInfoPackage charInfoPackage = _characterPackages[I];
writeS(charInfoPackage.getName());
writeD(charInfoPackage.getCharId());
writeS(_loginName);
writeD(_sessionId);
writeD(0x00);
writeD(0x00);
writeD(charInfoPackage.getSex());
writeD(charInfoPackage.getRace());
writeD(charInfoPackage.getBaseClassId());
writeD(0x01);
writeD(charInfoPackage.getX());
writeD(charInfoPackage.getY());
writeD(charInfoPackage.getZ());
writeF(charInfoPackage.getCurrentHp());
writeF(charInfoPackage.getCurrentMp());
writeQ(charInfoPackage.getSp());
writeQ(charInfoPackage.getExp());
final int lvl = charInfoPackage.getLevel();
writeF(ExpDataHolder.getInstance().getExpPercent(lvl, charInfoPackage.getExp()));
writeD(lvl);
writeD(charInfoPackage.getKarma());
writeD(charInfoPackage.getPk());
writeD(charInfoPackage.getPvP());
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
for(int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
writeD(charInfoPackage.getPaperdollItemId(PAPERDOLL_ID));
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeD(charInfoPackage.getHairStyle());
writeD(charInfoPackage.getHairColor());
writeD(charInfoPackage.getFace());
writeF(charInfoPackage.getMaxHp());
writeF(charInfoPackage.getMaxMp());
writeD(charInfoPackage.getAccessLevel() > -100 ? charInfoPackage.getDeleteTimer() : -1);
writeD(charInfoPackage.getClassId());
writeD(i == lastUsed ? 1 : 0);
writeC(Math.min(charInfoPackage.getPaperdollEnchantEffect(Inventory.PAPERDOLL_RHAND), 127));
writeD(charInfoPackage.getPaperdollAugmentation1Id(Inventory.PAPERDOLL_RHAND));
writeD(charInfoPackage.getPaperdollAugmentation2Id(Inventory.PAPERDOLL_RHAND));
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeF(0x00);
writeF(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
[COLOR=rgb(226, 80, 65)] writeD(charInfoPackage.getAccessLevel() == -100 ? 0x00 : 0x01);
writeC(0x00);
writeC(0x00);
writeC(0x00);
writeD(0x00);
writeD((int) (charInfoPackage.getLastAccess() / 1000));
}
}