UserInfo.java из L2j FORTRESS Interlude
Код:
public class UserInfo extends ServerBasePacket
{
private static final String _S__04_USERINFO = "[S] 04 UserInfo";
private final L2Player _cha;
private int _runSpd, _walkSpd, _swimRunSpd, _swimWalkSpd, _flRunSpd,
_flWalkSpd, _flyRunSpd, _flyWalkSpd;
/**
* @param _characters
*/
public UserInfo(L2Player cha)
{
_cha = cha;
}
@Override
final void runImpl()
{
float moveMultiplier = _cha.getMovementSpeedMultiplier();
_runSpd = (int) (_cha.getRunSpeed() / moveMultiplier);
_walkSpd = (int) (_cha.getWalkSpeed() / moveMultiplier);
_flRunSpd = _flyRunSpd = _runSpd;
_flWalkSpd = _flyWalkSpd = _walkSpd;
_swimRunSpd = _cha.getSwimSpeed();
_swimWalkSpd = _cha.getSwimSpeed();
}
@Override
final void writeImpl()
{
writeC(0x04);
writeD(_cha.getX());
writeD(_cha.getY());
writeD(_cha.getZ());
writeD(_cha.getHeading());
writeD(_cha.getObjectId());
writeS(_cha.getName());
writeD(_cha.getRace().ordinal());
writeD(_cha.getSex());
writeD(_cha.getBaseClass());
writeD(_cha.getLevel());
writeQ(_cha.getExp());
writeD(_cha.getSTR());
writeD(_cha.getDEX());
writeD(_cha.getCON());
writeD(_cha.getINT());
writeD(_cha.getWIT());
writeD(_cha.getMEN());
writeD(_cha.getMaxHp());
writeD((int) _cha.getCurrentHp());
writeD(_cha.getMaxMp());
writeD((int) _cha.getCurrentMp());
writeD(_cha.getSp());
writeD(_cha.getCurrentLoad());
writeD(_cha.getMaxLoad());
writeD(0x28); // unknown
//writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_UNDER));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
writeD(_cha.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE));
//writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_UNDER));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DHAIR));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
writeD(_cha.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeH(0x00);
writeD(_cha.getPAtk(null));
writeD(_cha.getPAtkSpd());
writeD(_cha.getPDef(null));
writeD(_cha.getEvasionRate(null));
writeD(_cha.getAccuracy());
writeD(_cha.getCriticalHit(null, null));
writeD(_cha.getMAtk(null, null));
writeD(_cha.getMAtkSpd());
writeD(_cha.getPAtkSpd());
writeD(_cha.getMDef(null, null));
writeD(_cha.getPvpFlag()); // 0=white, 1=purple, 2=purpleblink
writeD(_cha.getKarma());
writeD(_runSpd);
writeD(_walkSpd);
writeD(_swimRunSpd); // swimspeed
writeD(_swimWalkSpd); // swimspeed
writeD(_flRunSpd);
writeD(_flWalkSpd);
writeD(_flyRunSpd);
writeD(_flyWalkSpd);
writeF(_cha.getMovementSpeedMultiplier());
writeF(_cha.getAttackSpeedMultiplier());
if(_cha.getMountType() != 0 && _cha.getPet() != null)
{
writeF(_cha.getPet().getTemplate().collisionRadius);
writeF(_cha.getPet().getTemplate().collisionHeight);
}
else
{
writeF(_cha.getBaseTemplate().collisionRadius);
writeF(_cha.getBaseTemplate().collisionHeight);
}
writeD(_cha.getHairStyle());
writeD(_cha.getHairColor());
writeD(_cha.getFace());
writeD(_cha.getPlayerAccess().IsGM || _cha.getPlayerAccess().CanUseGMCommand ? 1 : 0); // builder level активирет в клиенте админские команды
String title = _cha.getTitle();
if(_cha.isInvisible())
title = "Invisible";
if(_cha.isPolymorphed())
title += " - " + NpcTable.getTemplate(_cha.getPolyid()).name;
writeS(title);
writeD(_cha.getClanId());
writeD(_cha.getClanCrestId()); //clan crest
writeD(_cha.getAllyId());
writeD(_cha.getAllyCrestId()); // ally crest id
writeD(_cha.isClanLeader() ? 0x60 : 0); // siege-flags 0x40 - leader rights 0x20 - ??
writeC(_cha.getMountType()); // mount type
writeC(_cha.getPrivateStoreType());
writeC(_cha.getSkillLevel(L2Skill.SKILL_CRYSTALLIZE) > 0 ? 1 : 0);
writeD(_cha.getPkKills());
writeD(_cha.getPvpKills());
writeH(_cha.getCubics().size());
for(int id : _cha.getCubics().keySet())
writeH(id);
writeC(0x00); //1-find party members
writeD(_cha.getAbnormalEffect());
writeC(0x11);
writeD(_cha.getClanPrivileges());
writeH(_cha.getRecomLeft()); //c2 recommendations remaining
writeH(_cha.getPlayerAccess().IsGM ? 0 : _cha.getRecomHave()); //c2 recommendations received
writeD(0x00);
writeH(_cha.getInventoryLimit());
writeD(_cha.getClassId().getId());
writeD(0x00); // special effects? circles around player...
writeD(_cha.getMaxCp());
writeD((int) _cha.getCurrentCp());
writeC(_cha.isMounted() ? 0 : _cha.getEnchantEffect()); //should check if mounted and not use
writeC(_cha.getTeam()); //team circle around feet 1= Blue, 2 = red
writeD(_cha.getClanCrestLargeId());
writeC(_cha.isNoble() || _cha.isGM() && Config.GM_HERO_AURA ? 1 : 0); //0x01: symbol on char menu ctrl+I
writeC(_cha.isHero() || _cha.isGM() && Config.GM_HERO_AURA ? 1 : 0); //0x01: Hero Aura and symbol
writeC(_cha.isFishing() ? 1 : 0); //Fishing Mode
writeD(_cha.GetFishx()); //fishing x
writeD(_cha.GetFishy()); //fishing y
writeD(_cha.GetFishz()); //fishing z
writeD(_cha.getNameColor());
writeC(_cha.isRunning() ? 0x01 : 0x00); //changes the Speed display on Status Window
writeD(_cha.getPledgeClass()); //C5 ??
writeD(0x00); //C5 ??
writeD(_cha.getTitleColor()); //C5 ??
writeD(0); //C5 ??
if(_cha.isCursedWeaponEquiped())
writeD(CursedWeaponsManager.getInstance().getLevel(_cha.getCursedWeaponEquipedId()));
else
writeD(0x00);
_cha.refreshSavedStats();
}
@Override
public String getType()
{
return _S__04_USERINFO;
}
}
CharInfo.java из L2j FORTRESS Interlude
Код:
public class CharInfo extends ServerBasePacket
{
private static final String _S__03_CHARINFO = "[S] 03 CharInfo";
private L2Player _cha;
private Inventory _inv;
private int _mAtkSpd, _pAtkSpd;
private int _runSpd, _walkSpd, _swimRunSpd, _swimWalkSpd, _flRunSpd,
_flWalkSpd;
protected boolean logHandled()
{
return true;
}
/**
* @param _characters
*/
public CharInfo(L2Player cha)
{
_cha = cha;
_inv = cha.getInventory();
_mAtkSpd = _cha.getMAtkSpd();
_pAtkSpd = _cha.getPAtkSpd();
}
@Override
final void runImpl()
{
// no long-running tasks
float moveMultiplier = _cha.getMovementSpeedMultiplier();
_runSpd = (int) (_cha.getRunSpeed() / moveMultiplier);
_walkSpd = (int) (_cha.getWalkSpeed() / moveMultiplier);
_flRunSpd = _runSpd;
_flWalkSpd = _walkSpd;
_swimRunSpd = _cha.getSwimSpeed();
_swimWalkSpd = _cha.getSwimSpeed();
}
@Override
final void writeImpl()
{
if(_cha == null)
return;
if(_cha.isPolymorphed())
{
writeC(0x16);
writeD(_cha.getObjectId());
writeD(_cha.getPolyid() + 1000000); // npctype id
writeD(_cha.getKarma() > 0 ? 1 : 0);
writeD(_cha.getX());
writeD(_cha.getY());
writeD(_cha.getZ());
writeD(_cha.getHeading());
writeD(0x11);
writeD(_mAtkSpd);
writeD(_pAtkSpd);
writeD(_runSpd);
writeD(_walkSpd);
writeD(_swimRunSpd/*0x32*/); // swimspeed
writeD(_swimWalkSpd/*0x32*/); // swimspeed
writeD(_flRunSpd);
writeD(_flWalkSpd);
writeD(0x00); //_flyRunSpd
writeD(0x00); //_flyWalkSpd
writeF(_cha.getMovementSpeedMultiplier());
writeF(_cha.getAttackSpeedMultiplier());
writeF(_cha.getPolyRadius());
writeF(_cha.getPolyHeight());
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); // right hand weapon
writeD(0);
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); // left hand weapon
writeC(1); // name above char 1=true ... ??
writeC(_cha.isRunning() ? 1 : 0);
writeC(_cha.isInCombat() ? 1 : 0);
writeC(_cha.isAlikeDead() ? 1 : 0);
writeC(_cha.isInvisible() ? 1 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation)
writeS(_cha.getName());
writeS(_cha.getTitle());
writeD(0);
writeD(_cha.getPvpFlag());
writeD(_cha.getKarma()); // hmm karma ??
writeH(_cha.getAbnormalEffect()); // C2
writeH(0x00); // C2
writeD(0); // C2
writeD(0); // C2
writeD(0); // C2
writeD(0); // C2
writeC(0); // C2
}
else
{
writeC(0x03);
writeD(_cha.getX());
writeD(_cha.getY());
writeD(_cha.getZ());
writeD(_cha.getHeading());
writeD(_cha.getObjectId());
writeS(_cha.getName());
writeD(_cha.getBaseTemplate().race.ordinal());
writeD(_cha.getSex());
writeD(_cha.getBaseClass());
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BACK));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FACE));
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeH(0);
writeD(_cha.getPvpFlag());
writeD(_cha.getKarma());
writeD(_mAtkSpd);
writeD(_pAtkSpd);
writeD(_cha.getPvpFlag());
writeD(_cha.getKarma());
writeD(_runSpd);
writeD(_walkSpd);
writeD(_swimRunSpd/* 0x32 */); // swimspeed
writeD(_swimWalkSpd/* 0x32 */); // swimspeed
writeD(_flRunSpd);
writeD(_flWalkSpd);
writeD(0x00); //_flyRunSpd
writeD(0x00); //_flyWalkSpd
writeF(_cha.getMovementSpeedMultiplier()); // _cha.getProperMultiplier()
writeF(_cha.getAttackSpeedMultiplier()); // _cha.getAttackSpeedMultiplier()
writeF(_cha.getBaseTemplate().collisionRadius);
writeF(_cha.getBaseTemplate().collisionHeight);
writeD(_cha.getHairStyle());
writeD(_cha.getHairColor());
writeD(_cha.getFace());
writeS(_cha.getTitle());
writeD(_cha.getClanId());
writeD(_cha.getClanCrestId());
writeD(_cha.getAllyId());
writeD(_cha.getAllyCrestId());
writeD(0x00); // new in rev 417 siege-flags
writeC(_cha.isSitting() ? 0 : 1); // standing = 1 sitting = 0
writeC(_cha.isRunning() ? 1 : 0); // running = 1 walking = 0
writeC(_cha.isInCombat() ? 1 : 0);
writeC(_cha.isAlikeDead() ? 1 : 0);
writeC(_cha.isInvisible() ? 1 : 0); // invisible = 1 visible =0
writeC(_cha.getMountType()); // 1 on strider 2 on wyfern 0 no mount
writeC(_cha.getPrivateStoreType()); // 1 - sellshop
writeH(_cha.getCubics().size());
for(int id : _cha.getCubics().keySet())
writeH(id);
writeC(0x00); // find party members
writeD(_cha.getAbnormalEffect());
writeC(_cha.getRecomLeft());
writeH(_cha.getPlayerAccess().IsGM ? 0 : _cha.getRecomHave());
writeD(_cha.getClassId().getId());
writeD(_cha.getMaxCp());
writeD((int) _cha.getCurrentCp());
writeC(_cha.isMounted() ? 0 : _cha.getEnchantEffect());
writeC(_cha.getTeam()); // team circle around feet 1= Blue, 2 = red
writeD(_cha.getClanCrestLargeId());
writeC(_cha.isNoble() ? 1 : 0); // 0x01: symbol on char menu ctrl+I
writeC(_cha.isHero() || _cha.isGM() && Config.GM_HERO_AURA ? 1 : 0); // 0x01: Hero Aura
writeC(_cha.isFishing() ? 1 : 0);
writeD(_cha.GetFishx());
writeD(_cha.GetFishy());
writeD(_cha.GetFishz());
writeD(_cha.getNameColor());
// New C5
writeD(_cha.isRunning() ? 0x01 : 0x00); //changes the Speed display on Status Window
writeD(_cha.getPledgeClass());
writeD(0x00); //C5 ??
writeD(_cha.getTitleColor());
writeD(0x00); //C5 ??
if(_cha.isCursedWeaponEquiped())
writeD(CursedWeaponsManager.getInstance().getLevel(_cha.getCursedWeaponEquipedId()));
else
writeD(0x00);
}
}
@Override
public String getType()
{
return _S__03_CHARINFO + ": " + _cha;
}
}