Amaranthe,
вот пакет отвечающий за отображение персонажей в Лобби!
(копия для l2jserver)
Свернуть ↑
PHP код:
protected final void writeImpl()
{
writeC(0x09);
int size = (_characterPackages.length);
writeD(size);
writeD(Config.MAX_CHARACTERS_NUMBER_PER_ACCOUNT);
writeC(0x00);
writeC(0x01);
writeC(0x02);
writeD(0x00);
long lastAccess = -1L;
if (_activeId == -1)
{
for (int i = 0; i < size; i++)
{
if (lastAccess < _characterPackages[i].getLastAccess())
{
lastAccess = _characterPackages[i].getLastAccess();
_activeId = i++;
}
}
}
for (int i = 0; i < size; i++)
{
CharSelectInfoPackage charInfoPackage = _characterPackages[i];
writeS(charInfoPackage.getName());
writeD(charInfoPackage.getObjectId());
writeS(_loginName);
writeD(_sessionId);
writeD(charInfoPackage.getClanId());
writeD(0x00); // ??
writeD(charInfoPackage.getSex());
writeD(charInfoPackage.getRace());
if (charInfoPackage.getClassId() == charInfoPackage.getBaseClassId())
{
writeD(charInfoPackage.getClassId());
}
else
{
writeD(charInfoPackage.getBaseClassId());
}
writeD(0x01); // active ??
writeD(charInfoPackage.getX());
writeD(charInfoPackage.getY());
writeD(charInfoPackage.getZ());
writeF(charInfoPackage.getCurrentHp());
writeF(charInfoPackage.getCurrentMp());
writeD(charInfoPackage.getSp());
writeQ(charInfoPackage.getExp());
writeF((float) (charInfoPackage.getExp() - ExperienceTable.getInstance().getExpForLevel(charInfoPackage.getLevel())) / (ExperienceTable.getInstance().getExpForLevel(charInfoPackage.getLevel() + 1) - ExperienceTable.getInstance().getExpForLevel(charInfoPackage.getLevel()))); // High Five
// exp %
writeD(charInfoPackage.getLevel());
writeD(charInfoPackage.getKarma());
writeD(charInfoPackage.getPkKills());
writeD(charInfoPackage.getPvPKills());
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
for (int slot : getPaperdollOrder())
{
writeD(charInfoPackage.getPaperdollItemId(slot));
}
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(0x00);
writeD(charInfoPackage.getHairStyle());
writeD(charInfoPackage.getHairColor());
writeD(charInfoPackage.getFace());
writeF(charInfoPackage.getMaxHp()); // hp max
writeF(charInfoPackage.getMaxMp()); // mp max
long deleteTime = charInfoPackage.getDeleteTimer();
int deletedays = 0;
if (deleteTime > 0)
{
deletedays = (int) ((deleteTime - System.currentTimeMillis()) / 1000);
}
writeD(charInfoPackage.getAccessLevel() <= 100 ? -1 : deletedays); // days left before
// delete .. if != 0
// then char is inactive
writeD(charInfoPackage.getClassId());
writeD(i == _activeId ? 0x01 : 0x00); // c3 auto-select char
writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect());
writeD(0x00); //Augmentation ID
int weaponId = charInfoPackage.getPaperdollItemId(7);
if (weaponId == 8190)
writeD(301);
else if (weaponId == 8689)
writeD(302);
else
writeD(0x00);
// Freya by Vistall:
writeD(0x00); // npdid - 16024 Tame Tiny Baby Kookaburra A9E89C
writeD(0x00); // level
writeD(0x00); // ?
writeD(0x00); // food? - 1200
writeF(0x00); // max Hp
writeF(0x00); // cur Hp
// High Five by Vistall:
writeD(charInfoPackage.getVitalityPoints()); // H5 Vitality
writeD(200);
writeD(5);
writeD(0);
writeC(0);
writeC(0);
}
}
Свернуть ↑Развернуть ↓