public class CharacterSelectionInfo extends L2GameServerPacket
{
@Override
protected final void writeImpl()
{
int size = charSelectionInfo.size();
writeC(0x09);
writeD(size);
writeD(0x07);
writeC(0x00);
writeC(0x01);
writeD(0x00);
long lastAccess = -1L;
int lastUsed = -1;
for (CharSelectInfoPackage info : charSelectionInfo)
if (lastAccess < info.getLastAccess())
{
lastAccess = info.getLastAccess();
lastUsed++;
}
int i = 0;
for (CharSelectInfoPackage charInfoPackage : charSelectionInfo)
{
writeS(charInfoPackage.getName());
writeD(charInfoPackage.getCharId()); // ?
writeS(_loginName);
writeD(_sessionId);
writeD(charInfoPackage.getClanId());
writeD(0x00); // ??
writeD(charInfoPackage.getSex());
writeD(charInfoPackage.getRace());
writeD(charInfoPackage.getBaseClassId());
if(Config.ACCESS_ENTER_ONLY_PREMIUM)
writeD(charSelectionInfo.getPremiumAccess() > 0 ? 0x01 : 0x00);
else
writeD(0x01); // default active for all (GOD)
writeD(charInfoPackage.getX());
writeD(charInfoPackage.getY());
writeD(charInfoPackage.getZ());
writeF(charInfoPackage.getCurrentHp());
writeF(charInfoPackage.getCurrentMp());
writeD(charInfoPackage.getSp());
writeQ(charInfoPackage.getExp());
writeF(Experience.getExpPercent(charInfoPackage.getLevel(), charInfoPackage.getExp()));
writeD(charInfoPackage.getLevel());
writeD(charInfoPackage.getKarma());
writeD(charInfoPackage.getPk());
writeD(charInfoPackage.getPvP());
for (int j = 0; j < 7; j++)
writeD(0x00);
for (int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
writeD(charInfoPackage.getPaperdollItemId(PAPERDOLL_ID));
writeD(charInfoPackage.getPaperdollDisplayId(Inventory.PAPERDOLL_RHAND));
writeD(charInfoPackage.getPaperdollDisplayId(Inventory.PAPERDOLL_LHAND));
writeD(charInfoPackage.getPaperdollDisplayId(Inventory.PAPERDOLL_GLOVES));
writeD(charInfoPackage.getPaperdollDisplayId(Inventory.PAPERDOLL_CHEST));
writeD(charInfoPackage.getPaperdollDisplayId(Inventory.PAPERDOLL_LEGS));
writeD(charInfoPackage.getPaperdollDisplayId(Inventory.PAPERDOLL_FEET));
writeD(charInfoPackage.getPaperdollDisplayId(Inventory.PAPERDOLL_HAIR));
writeD(charInfoPackage.getPaperdollDisplayId(Inventory.PAPERDOLL_DHAIR));
writeD(0);
writeD(charInfoPackage.getHairStyle());
writeD(charInfoPackage.getHairColor());
writeD(charInfoPackage.getFace());
writeF(charInfoPackage.getMaxHp()); // hp max
writeF(charInfoPackage.getMaxMp()); // mp max
writeD(charInfoPackage.getAccessLevel() > -100 ? charInfoPackage.getDeleteTimer() : -1);
writeD(charInfoPackage.getClassId());
writeD(i == lastUsed ? 1 : 0);
writeC(Math.min(charInfoPackage.getPaperdollEnchantEffect(Inventory.PAPERDOLL_RHAND), 127));
writeH(0x00);
writeH(0x00);
int weaponId = charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RHAND);
if (weaponId == 8190) // Transform id
writeD(301);
else if (weaponId == 8689)
writeD(302);
else
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeF(0x00);
writeF(0x00);
writeD(charSelectionInfo.getVitalityPoints()); // Vitality Points
writeD(charSelectionInfo.getPremiumAccess() > 0 ? 300 : 200); // Vitality percent
writeD(charSelectionInfo.getVitalityItemCounts()); //Vitaliti items count
writeD(charInfoPackage.getAccessLevel() > -100 ? 0x01 : 0x00); // Access level
writeC(0x00);
writeC(0x00);
i++;
}
}
}Code: Java
488 протокол. Там еще помимо ExAcquirableSkillListByClass (0 после МинУровня скила), такой же 0 и в ExAcquirableSkillInfo.
Еще есть неведомая хрень с телепортом. Если кто в курсе - что так поменялось то в ГД?!(Смотрел Мув, Теле, Валидейт - локатион пакетики, ниче вроде не менялось О_О). Это походу то самое, на что намекал Кейчи