Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class CharInfo extends SendableGameClientPacket
- {
- private static final Logger _log = Logger.getLogger(CharInfo.class.getName());
- private static final String _S__03_CHARINFO = "[S] 31 CharInfo";
- private L2PcInstance _activeChar;
- private Inventory _inv;
- private int _x, _y, _z, _heading, _superBaseClass;
- private int _mAtkSpd, _pAtkSpd;
- private int _runSpd, _walkSpd, _swimRunSpd, _swimWalkSpd, _flRunSpd, _flWalkSpd, _flyRunSpd, _flyWalkSpd;
- private float _moveMultiplier, _attackSpeedMultiplier;
- private int _territoryId;
- private boolean _isDisguised;
- private boolean _isUnknown;
- private boolean _isDreaming;
- /**
- * @param _characters
- */
- public CharInfo(L2PcInstance cha)
- {
- _activeChar = cha;
- _inv = cha.getInventory();
- _x = _activeChar.getX();
- _y = _activeChar.getY();
- _z = _activeChar.getZ();
- _heading = _activeChar.getHeading();
- _mAtkSpd = _activeChar.getMAtkSpd();
- _pAtkSpd = _activeChar.getPAtkSpd();
- if (_activeChar.getClassIndex() == 0)
- {
- _superBaseClass = _activeChar.getClassId().getSuperParent().getId();
- }
- else
- {
- try
- {
- final ClassId classId = ClassId.getForId(_activeChar.getBaseClass());
- _superBaseClass = classId.getSuperParent().getId();
- }
- catch (final Exception e)
- {
- _superBaseClass = _activeChar.getBaseClass();
- e.printStackTrace();
- }
- }
- _moveMultiplier = _activeChar.getMovementSpeedMultiplier();
- _attackSpeedMultiplier = _activeChar.getAttackSpeedMultiplier();
- _runSpd = (int) (_activeChar.getRunSpeed() / _moveMultiplier);
- _walkSpd = (int) (_activeChar.getWalkSpeed() / _moveMultiplier);
- _swimRunSpd = _flRunSpd = _flyRunSpd = _runSpd;
- _swimWalkSpd = _flWalkSpd = _flyWalkSpd = _walkSpd;
- _invisible = cha.getAppearance().getInvisible();
- _territoryId = TerritoryWarManager.getInstance().getRegisteredTerritoryId(cha);
- _isDisguised = TerritoryWarManager.getInstance().isDisguised(cha.getObjectId());
- _isUnknown = cha.isUnknown();
- _isDreaming = cha.isDreaming();
- }
- @Override
- protected final void writeImpl()
- {
- boolean isViewerGm = false;
- L2PcInstance tmp = getClient().getActiveChar();
- if (tmp != null && tmp.isGM())
- isViewerGm = true;
- if (_activeChar.getPoly().isMorphed())
- {
- L2NpcTemplate template = NpcTable.getInstance().getTemplate(_activeChar.getPoly().getPolyId());
- if (template != null)
- {
- writeC(0x0c);
- writeD(_activeChar.getObjectId());
- writeD(_activeChar.getPoly().getPolyId() + 1000000); // npctype id
- writeD(_activeChar.getKarma() > 0 ? 1 : 0);
- writeD(_x);
- writeD(_y);
- writeD(_z);
- writeD(_heading);
- writeD(0x00);
- writeD(_mAtkSpd);
- writeD(_pAtkSpd);
- writeD(_runSpd); // TODO: the order of the speeds should be confirmed
- writeD(_walkSpd);
- writeD(_swimRunSpd); // swim speed
- writeD(_swimWalkSpd); // swim speed
- writeD(_flRunSpd);
- writeD(_flWalkSpd);
- writeD(_flyRunSpd);
- writeD(_flyWalkSpd);
- writeF(_moveMultiplier);
- writeF(_attackSpeedMultiplier);
- writeF(template.collisionRadius);
- writeF(template.collisionHeight);
- writeD(0);//_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); // right hand weapon
- writeD(0);
- writeD(0);//_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); // left hand weapon
- writeC(1); // name above char 1=true ... ??
- writeC(_activeChar.isRunning() ? 1 : 0);
- writeC(_activeChar.isInCombat() ? 1 : 0);
- writeC(_activeChar.isAlikeDead() ? 1 : 0);
- writeC(isViewerGm && _invisible ? 0 : _invisible ? 1 : 0); // invisible ?? 0=false 1=true 2=summoned (only works if model has a summon animation)
- writeS(_activeChar.getAppearance().getVisibleName());
- writeS(isViewerGm && _invisible ? "Invisible" : _activeChar.isUnknown() ? "" : _activeChar.getAppearance().getVisibleTitle());
- writeD(0);
- writeD(0);
- writeD(0000); // hmm karma ??
- writeD(isViewerGm && _invisible ? (_activeChar.getAbnormalEffect() | AbnormalEffect.STEALTH.getMask()) : _activeChar.getAbnormalEffect());
- writeD(_activeChar.getClanId()); //clan id
- writeD(_activeChar.getClanCrestId()); //crest id
- writeD(0); // C2
- writeD(0); // C2
- writeC(0); // C2
- writeC(0x00); // C3 team circle 1-blue, 2-red
- writeF(template.collisionRadius);
- writeF(template.collisionHeight);
- writeD(0x00); // C4
- writeD(0x00); // C6
- writeD(0x00);
- writeD(0x00);
- writeC(0x01);
- writeC(0x01);
- writeD(0x00);
- }
- else
- {
- _log.log(Level.WARNING, "Character " + _activeChar.getName() + " (" + _activeChar.getObjectId() + ") morphed in a Npc (" + _activeChar.getPoly().getPolyId() + ") w/o template.");
- }
- }
- else
- {
- writeC(0x31);
- writeD(_x);
- writeD(_y);
- writeD(_z);
- writeD(0x00);
- writeD(_activeChar.getObjectId());
- writeS(isViewerGm ? _activeChar.getName() : _activeChar.getAppearance().getVisibleName());
- writeD(_activeChar.getRace().ordinal());
- writeD(_activeChar.getAppearance().getSex() ? 1 : 0);
- writeD(_superBaseClass); // No need to know the truth for client ;) writeD(_activeChar.getClassIndex() == 0 ? _activeChar.getClassId().getId() : _activeChar.getBaseClass());
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_UNDER));
- 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(_isUnknown ? 0x00 : _inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
- writeD(_isUnknown ? 0x00 : _inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR2));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RBRACELET));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LBRACELET));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO1));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO2));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO3));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO4));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO5));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO6));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BELT));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_UNDER));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_HEAD));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LHAND));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_GLOVES));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_CHEST));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LEGS));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_FEET));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_BACK));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_HAIR));
- writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_HAIR2));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_RBRACELET));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LBRACELET));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO1));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO2));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO3));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO4));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO5));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO6));
- writeD(0x00);// No need to know for client ;) writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_BELT));
- writeD(0x00);
- writeD(0x01);
- writeD(_activeChar.getPvpFlag());
- writeD(_activeChar.getKarma());
- writeD(_mAtkSpd);
- writeD(_pAtkSpd);
- writeD(0x00);
- writeD(_runSpd);
- writeD(_walkSpd);
- writeD(_runSpd);
- writeD(_walkSpd);
- writeD(_runSpd);
- writeD(_walkSpd);
- writeD(_runSpd);
- writeD(_walkSpd);
- writeF(_activeChar.getMovementSpeedMultiplier()); // _activeChar.getProperMultiplier()
- writeF(_activeChar.getAttackSpeedMultiplier()); // _activeChar.getAttackSpeedMultiplier()
- L2Transformation trans = null;
- if (_activeChar.getMountType() != 0)
- {
- writeF(NpcTable.getInstance().getTemplate(_activeChar.getMountNpcId()).collisionRadius);
- writeF(NpcTable.getInstance().getTemplate(_activeChar.getMountNpcId()).collisionHeight);
- }
- else if ((trans = _activeChar.getTransformation()) != null)
- {
- writeF(trans.getCollisionRadius());
- writeF(trans.getCollisionHeight());
- }
- else
- {
- writeF(_activeChar.getBaseTemplate().collisionRadius);
- writeF(_activeChar.getBaseTemplate().collisionHeight);
- }
- writeD(_activeChar.getAppearance().getHairStyle());
- writeD(_activeChar.getAppearance().getHairColor());
- writeD(_activeChar.getAppearance().getFace());
- writeS(isViewerGm && _invisible ? "Invisible" : _activeChar.isUnknown() ? "Unknown" : _activeChar.getAppearance().getVisibleTitle());
- if (!_activeChar.isCursedWeaponEquipped() && !_isDreaming && !L2EventManager.hideCrests(_activeChar))
- {
- writeD(_activeChar.getClanId());
- writeD(_activeChar.getClanCrestId());
- writeD(_activeChar.getAllyId());
- writeD(_activeChar.getAllyCrestId());
- }
- else
- {
- writeD(0x00);
- writeD(0x00);
- writeD(0x00);
- writeD(0x00);
- }
- writeC(_activeChar.isSitting() ? 0 : 1); // standing = 1 sitting = 0
- writeC(_activeChar.isRunning() ? 1 : 0); // running = 1 walking = 0
- writeC(_activeChar.isInCombat() ? 1 : 0);
- if (_activeChar.isInOlympiadMode())
- writeC(0);
- else
- writeC(_activeChar.isAlikeDead() ? 1 : 0);
- writeC(isViewerGm ? 0 : _invisible ? 1 : 0); // invisible = 1 visible =0
- writeC(_activeChar.getMountType()); // 1-on Strider, 2-on Wyvern, 3-on Great Wolf, 0-no mount
- writeC(_activeChar.getPrivateStoreType()); // 1 - sellshop
- writeH(_activeChar.getCubics().size());
- for (int id : _activeChar.getCubics().keySet())
- writeH(id);
- writeC(_activeChar.isInPartyMatchRoom() ? 1 : 0);
- int abnormal = _activeChar.getAbnormalEffect();
- if (isViewerGm && _invisible)
- abnormal |= AbnormalEffect.STEALTH.getMask();
- else
- abnormal = _activeChar.getAbnormalEffect();
- if (Config.isExodus() && tmp != null && _activeChar.getProtectionBlessing(tmp) && (tmp.getLevel() - _activeChar.getLevel() >= Config.MOD_LOWLVLPROTECTIONLVLDIFF))
- abnormal |= AbnormalEffect.REDCIRCLE.getMask();
- writeD(abnormal);
- writeC(_activeChar.isFlyingMounted() ? 2 : 0);
- writeH(_activeChar.getRecomHave()); //Blue value for name (0 = white, 255 = pure blue)
- writeD(_activeChar.getMountNpcId() + 1000000);
- writeD(_activeChar.getClassId().getSuperParent().getId());
- writeD(0x00); //?
- writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect());
- writeC(_activeChar.getTeam() > 2 ? 0 : _activeChar.getTeam()); //team circle around feet 1= Blue, 2 = red
- writeD(_activeChar.getClanCrestLargeId());
- writeC(0x00);// No need to know for client ;) writeC(_activeChar.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
- writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) && !L2EventManager.hideCrests(_activeChar) && !_activeChar.isDreaming() ? 1 : 0); // Hero Aura
- writeC(_activeChar.isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
- writeD(_activeChar.getFishx());
- writeD(_activeChar.getFishy());
- writeD(_activeChar.getFishz());
- writeD(_activeChar.getAppearance().getNameColor());
- writeD(_heading);
- writeD(_activeChar.getPledgeClass());
- writeD(_activeChar.getPledgeType());
- writeD(Config.isExodus() && tmp != null ? _activeChar.isGM() ? _activeChar.getAppearance().getTitleColor() : IncUtil.getLevelDifferenceColor(tmp.getLevel() - _activeChar.getLevel()) : _activeChar.getAppearance().getTitleColor());
- writeD(_activeChar.isCursedWeaponEquipped() ? CursedWeaponsManager.getInstance().getLevel(_activeChar.getCursedWeaponEquippedId()) : 0x00);
- writeD(0x00);// No need to know for client ;) writeD(_activeChar.getClanId() > 0 ? (int) _activeChar.getClan().getReputationScore() : 0x00);
- writeD(_activeChar.getTransformationGraphicalId());
- writeD(_activeChar.getAgathionId());
- writeD(0x01);
- writeD(_activeChar.getSpecialEffect());
- writeD(_territoryId); // territory Id
- writeD((_isDisguised ? 0x01 : 0x00)); // is Disguised
- writeD(_territoryId); // territory Id
- }
- }
- /**
- *
- * @see org.inc.gameserver.network.gameclientcon.SendableGameClientPacket#getType()
- */
- @Override
- public String getType()
- {
- return _S__03_CHARINFO;
- }
- }
- public final class CharSelectionInfo extends SendableGameClientPacket
- {
- private static final String _S__1F_CHARSELECTINFO = "[S] 09 CharSelectInfo";
- private static Logger _log = Logger.getLogger(CharSelectionInfo.class.getName());
- private String _loginName;
- private int _sessionId, _activeId;
- private CharSelectInfoPackage[] _characterPackages;
- public CharSelectionInfo(String loginName, int sessionId)
- {
- _sessionId = sessionId;
- _loginName = loginName;
- _characterPackages = loadCharacterSelectInfo();
- _activeId = -1;
- }
- public CharSelectionInfo(String loginName, int sessionId, int activeId)
- {
- _sessionId = sessionId;
- _loginName = loginName;
- _characterPackages = loadCharacterSelectInfo();
- _activeId = activeId;
- }
- public CharSelectInfoPackage[] getCharInfo()
- {
- return _characterPackages;
- }
- @Override
- protected final void writeImpl()
- {
- writeC(0x09);
- int size = (_characterPackages.length);
- writeD(size);
- // Can prevent players from creating new characters (if 0); (if 1, the client will ask if chars may be created (0x13) Response: (0x0D) )
- writeD(0x07);
- writeC(0x00);
- long lastAccess = 0L;
- 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.getCharId());
- 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());
- if (charInfoPackage.isOfflineModeCharacter())
- writeD(0x00); // active ??
- else
- writeD(0x01); // active ??
- writeD(charInfoPackage.getX()); // x
- writeD(charInfoPackage.getY()); // y
- writeD(charInfoPackage.getZ()); // z
- writeF(charInfoPackage.getCurrentHp()); // hp cur
- writeF(charInfoPackage.getCurrentMp()); // mp cur
- writeD(charInfoPackage.getSp());
- writeQ(charInfoPackage.getExp());
- writeF((float)(charInfoPackage.getExp() - Experience.LEVEL[charInfoPackage.getLevel()]) / (Experience.LEVEL[charInfoPackage.getLevel() + 1] - Experience.LEVEL[charInfoPackage.getLevel()])); // H5 exp %
- writeD(charInfoPackage.getLevel());
- writeD(charInfoPackage.getKarma()); // karma
- writeD(charInfoPackage.getPkKills());
- writeD(charInfoPackage.getPvPKills());
- writeD(0x00);
- writeD(0x00);
- writeD(0x00);
- writeD(0x00);
- writeD(0x00);
- writeD(0x00);
- writeD(0x00);
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIRALL));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_REAR));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_NECK));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_FEET));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_BACK));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_HAIR2));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_RBRACELET));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_LBRACELET));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO1));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO2));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO3));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO4));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO5));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_DECO6));
- writeD(charInfoPackage.getPaperdollItemId(Inventory.PAPERDOLL_BELT));
- 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(deletedays); // days left before
- // delete .. if != 0
- // then char is inactive
- writeD(charInfoPackage.getClassId());
- if (i == _activeId)
- writeD(0x01);
- else
- writeD(0x00); //c3 auto-select char
- writeC(charInfoPackage.getEnchantEffect() > 127 ? 127 : charInfoPackage.getEnchantEffect());
- writeH(0);
- writeH(0);
- //writeD(charInfoPackage.getAugmentationId());
- //writeD(charInfoPackage.getTransformId()); // Used to display Transformations
- writeD(0x00); // Currently on retail when you are on character select you don't see your transformation.
- // Freya by Vistall:
- writeD(0); // npdid - 16024 Tame Tiny Baby Kookaburra A9E89C
- writeD(0); // level
- writeD(0); // ?
- writeD(0); // food? - 1200
- writeF(0); // max Hp
- writeF(0); // cur Hp
- writeD(charInfoPackage.getVitalityPoints()); // H5 Vitality
- }
- }
- private CharSelectInfoPackage[] loadCharacterSelectInfo()
- {
- CharSelectInfoPackage charInfopackage;
- List<CharSelectInfoPackage> characterList = new FastList<CharSelectInfoPackage>();
- java.sql.Connection con = null;
- try
- {
- con = L2DatabaseFactory.getInstance().getConnection();
- PreparedStatement statement = con.prepareStatement("SELECT account_name, charId, char_name, level, maxHp, curHp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, sp, karma, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, accesslevel, online, char_slot, lastAccess, base_class, vitality_points FROM characters WHERE account_name=?");
- statement.setString(1, _loginName);
- ResultSet charList = statement.executeQuery();
- while (charList.next())// fills the package
- {
- charInfopackage = restoreChar(charList);
- if (charInfopackage != null)
- characterList.add(charInfopackage);
- }
- charList.close();
- statement.close();
- return characterList.toArray(new CharSelectInfoPackage[characterList.size()]);
- }
- catch (Exception e)
- {
- _log.log(Level.WARNING, "Could not restore char info: ", e);
- }
- finally
- {
- try
- {
- con.close();
- }
- catch (Exception e)
- {
- }
- }
- return new CharSelectInfoPackage[0];
- }
- private void loadCharacterSubclassInfo(CharSelectInfoPackage charInfopackage, int ObjectId, int activeClassId)
- {
- java.sql.Connection con = null;
- try
- {
- con = L2DatabaseFactory.getInstance().getConnection();
- PreparedStatement statement = con.prepareStatement("SELECT exp, sp, level FROM character_subclasses WHERE charId=? && class_id=? ORDER BY charId");
- statement.setInt(1, ObjectId);
- statement.setInt(2, activeClassId);
- ResultSet charList = statement.executeQuery();
- if (charList.next())
- {
- charInfopackage.setExp(charList.getLong("exp"));
- charInfopackage.setSp(charList.getInt("sp"));
- charInfopackage.setLevel(charList.getInt("level"));
- }
- charList.close();
- statement.close();
- }
- catch (Exception e)
- {
- _log.log(Level.WARNING, "Could not restore char subclass info: ", e);
- }
- finally
- {
- try
- {
- con.close();
- }
- catch (Exception e)
- {
- }
- }
- }
- private CharSelectInfoPackage restoreChar(ResultSet chardata) throws Exception
- {
- int objectId = chardata.getInt("charId");
- String name = chardata.getString("char_name");
- // See if the char must be deleted
- long deletetime = chardata.getLong("deletetime");
- if (deletetime > 0)
- {
- if (System.currentTimeMillis() > deletetime)
- {
- L2Clan clan = ClanTable.getInstance().getClan(chardata.getInt("clanid"));
- if (clan != null)
- clan.removeClanMember(objectId, 0);
- GameClient.deleteCharByObjId(objectId);
- return null;
- }
- }
- CharSelectInfoPackage charInfopackage = new CharSelectInfoPackage(objectId, name);
- charInfopackage.setLevel(chardata.getInt("level"));
- charInfopackage.setMaxHp(chardata.getInt("maxhp"));
- charInfopackage.setCurrentHp(chardata.getDouble("curhp"));
- charInfopackage.setMaxMp(chardata.getInt("maxmp"));
- charInfopackage.setCurrentMp(chardata.getDouble("curmp"));
- charInfopackage.setKarma(chardata.getInt("karma"));
- charInfopackage.setPkKills(chardata.getInt("pkkills"));
- charInfopackage.setPvPKills(chardata.getInt("pvpkills"));
- charInfopackage.setFace(chardata.getInt("face"));
- charInfopackage.setHairStyle(chardata.getInt("hairstyle"));
- charInfopackage.setHairColor(chardata.getInt("haircolor"));
- charInfopackage.setSex(chardata.getInt("sex"));
- charInfopackage.setExp(chardata.getLong("exp"));
- charInfopackage.setSp(chardata.getInt("sp"));
- charInfopackage.setVitalityPoints(chardata.getInt("vitality_points"));
- charInfopackage.setClanId(chardata.getInt("clanid"));
- charInfopackage.setRace(chardata.getInt("race"));
- final int baseClassId = chardata.getInt("base_class");
- final int activeClassId = chardata.getInt("classid");
- charInfopackage.setX(chardata.getInt("x"));
- charInfopackage.setY(chardata.getInt("y"));
- charInfopackage.setZ(chardata.getInt("z"));
- // if is in subclass, load subclass exp, sp, lvl info
- if (baseClassId != activeClassId)
- loadCharacterSubclassInfo(charInfopackage, objectId, activeClassId);
- charInfopackage.setClassId(activeClassId);
- // Get the augmentation id for equipped weapon
- int weaponObjId = charInfopackage.getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND);
- if (weaponObjId < 1)
- weaponObjId = charInfopackage.getPaperdollObjectId(Inventory.PAPERDOLL_RHAND);
- // Check Transformation
- int cursedWeaponId = CursedWeaponsManager.getInstance().checkOwnsWeaponId(objectId);
- if (cursedWeaponId > 0)
- {
- // cursed weapon transformations
- if (cursedWeaponId == 8190)
- charInfopackage.setTransformId(301);
- else if (cursedWeaponId == 8689)
- charInfopackage.setTransformId(302);
- else
- charInfopackage.setTransformId(0);
- }
- else
- charInfopackage.setTransformId(0);
- if (weaponObjId > 0)
- {
- java.sql.Connection con = null;
- try
- {
- con = L2DatabaseFactory.getInstance().getConnection();
- PreparedStatement statement = con.prepareStatement("SELECT augAttributes FROM item_attributes WHERE itemId=?");
- statement.setInt(1, weaponObjId);
- ResultSet result = statement.executeQuery();
- if (result.next())
- {
- int augment = result.getInt("augAttributes");
- charInfopackage.setAugmentationId(augment == -1 ? 0 : augment);
- }
- result.close();
- statement.close();
- }
- catch (Exception e)
- {
- _log.log(Level.WARNING, "Could not restore augmentation info: ", e);
- }
- finally
- {
- try
- {
- con.close();
- }
- catch (Exception e)
- {
- }
- }
- }
- /*
- * Check if the base class is set to zero and alse doesn't match
- * with the current active class, otherwise send the base class ID.
- *
- * This prevents chars created before base class was introduced
- * from being displayed incorrectly.
- */
- if (baseClassId == 0 && activeClassId > 0)
- charInfopackage.setBaseClassId(activeClassId);
- else
- charInfopackage.setBaseClassId(baseClassId);
- charInfopackage.setDeleteTimer(deletetime);
- charInfopackage.setLastAccess(chardata.getLong("lastAccess"));
- return charInfopackage;
- }
- @Override
- public final String getType()
- {
- return _S__1F_CHARSELECTINFO;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement