nebel 0 Опубликовано 20 марта, 2015 (изменено) подскажите куда делся TeamType _team;? public class NpcInfo extends L2GameServerPacket { private boolean _canWriteImpl = false; private int _npcObjId; private int _npcId; private int _running; private boolean _incombat; private boolean _dead; int _showSpawnAnimation; int _runSpd; int _walkSpd; private int _mAtkSpd; private int _pAtkSpd; private int _rhand; private int _lhand; int _karma; int _pvpFlag; int _clanId; int _clanCrestId; int _allyId; int _allyCrestId; int _formId; int _titleColor; private int _HP; private int _maxHP; int _MP; int _maxMP; int _CP; int _maxCP; double _colHeight; double _colRadius; double _currentColHeight; double _currentColRadius; private boolean _isAttackable; private boolean _isNameAbove; private boolean _flying; private Location _loc; String _name = StringUtils.EMPTY; private String _title = StringUtils.EMPTY; private boolean _showName; private boolean _canTarget; int _state; NpcString _nameNpcString = NpcString.NONE; NpcString _titleNpcString = NpcString.NONE; TeamType _team; int _transformId; private List<Integer> _aveList; boolean _waterZone; protected double _moveMultiplier; protected double _spdMultiplier; public NpcInfo(NpcInstance cha, Creature attacker) { _npcId = cha.getDisplayId() != 0 ? cha.getDisplayId() : cha.getTemplate().getId(); _isAttackable = (attacker != null) && cha.isAutoAttackable(attacker); _rhand = cha.getRightHandItem(); _lhand = cha.getLeftHandItem(); if (Config.SERVER_SIDE_NPC_NAME || (cha.getTemplate().displayId != 0) || (!cha.getName().equals(cha.getTemplate().name))) { _name = cha.getName(); } if (Config.SERVER_SIDE_NPC_TITLE || (cha.getTemplate().displayId != 0) || (!cha.getTitle().equals(cha.getTemplate().title))) { _title = cha.getTitle(); } if (Config.SHOW_NPC_LVL && cha.isMonster()) { String t = "Lv " + cha.getLevel() + (cha.isAggressive() ? "*" : ""); if (_title != null) { t += " " + _title; } _title = t; } _HP = (int) cha.getCurrentHp(); _MP = (int) cha.getCurrentMp(); _CP = (int) cha.getCurrentCp(); _maxHP = cha.getMaxHp(); _maxMP = cha.getMaxMp(); _maxCP = cha.getMaxCp(); _showSpawnAnimation = cha.getSpawnAnimation(); _showName = cha.isShowName(); _canTarget = cha.isTargetable(); _state = cha.getNpcState(); _nameNpcString = cha.getNameNpcString(); _titleNpcString = cha.getTitleNpcString(); _transformId = cha.getTransformation(); common(cha); } public NpcInfo(Summon cha, Creature attacker) { if ((cha.getPlayer() != null) && cha.getPlayer().isInvisible()) { return; } _npcId = cha.getTemplate().getId(); _isAttackable = cha.isAutoAttackable(attacker); _rhand = 0; _lhand = 0; _showName = true; _name = cha.getName(); _title = cha.getTitle(); _showSpawnAnimation = cha.getSpawnAnimation(); common(cha); } private void common(Creature cha) { _colHeight = cha.getTemplate().getCollisionHeight(); _colRadius = cha.getTemplate().getCollisionRadius(); _currentColHeight = cha.getColHeight(); _currentColRadius = cha.getColRadius(); _npcObjId = cha.getObjectId(); _loc = cha.getLoc(); _mAtkSpd = cha.getMAtkSpd(); Clan clan = cha.getClan(); Alliance alliance = clan == null ? null : clan.getAlliance(); _clanId = clan == null ? 0 : clan.getClanId(); _clanCrestId = clan == null ? 0 : clan.getCrestId(); _allyId = alliance == null ? 0 : alliance.getAllyId(); _allyCrestId = alliance == null ? 0 : alliance.getAllyCrestId(); _runSpd = cha.getRunSpeed(); _walkSpd = cha.getWalkSpeed(); _karma = cha.getKarma(); _pvpFlag = cha.getPvpFlag(); _pAtkSpd = cha.getPAtkSpd(); _running = cha.isRunning() ? 1 : 0; _incombat = cha.isInCombat(); _dead = cha.isAlikeDead(); _aveList = cha.getAveList(); _flying = cha.isFlying(); _team = cha.getTeam(); _formId = cha.getFormId(); _isNameAbove = cha.isNameAbove(); _titleColor = cha.isSummon() || cha.isPet() ? 1 : 0; _canWriteImpl = true; _waterZone = cha.isInZone(ZoneType.Water); _moveMultiplier = cha.getMovementSpeedMultiplier(); _spdMultiplier = cha.getAttackSpeedMultiplier(); } public NpcInfo update() { _showSpawnAnimation = 1; return this; } @Override protected final void writeImpl() { if (!_canWriteImpl) { return; } writeC(0x0C); writeD(_npcObjId); writeC(0x00); writeC(0x25); writeC(0x00); writeC(0xED); if ((_rhand > 0) || (_lhand > 0)) { writeC(0xFE); } else { writeC(0xBE); } writeC(0x4E); writeC(0xA2); writeC(0x0C); writeC(7 + (_title.length() * 2)); writeC(_isAttackable ? 1 : 0); writeH(0); writeH(0); writeS(_title); if ((_rhand > 0) || (_lhand > 0)) { writeH(68); } else { writeH(56); } writeD(_npcId + 1000000); // npctype id writeD(_loc.getX()); writeD(_loc.getY()); writeD(_loc.getZ() + Config.CLIENT_Z_SHIFT); writeD(_loc.getHeading()); writeD(_mAtkSpd); writeD(_pAtkSpd); putFloat(1.100000023841858f); putFloat(_pAtkSpd / 277.478340719f); if ((_rhand > 0) || (_lhand > 0)) { writeD(_rhand); writeD(0); // chest writeD(_lhand); } writeC(_isNameAbove ? 1 : 0); writeC(_running); writeC(_flying ? 2 : 0); writeD(_flying ? 1 : 0); writeC(0); writeC(0); writeH(0); writeD(_HP); writeD(_maxHP); writeC((_incombat ? 1 : 0) + (_dead ? 2 : 0) + (_canTarget ? 4 : 0) + (_showName ? 8 : 0)); if (_aveList != null) { writeH(_aveList.size()); for (int i : _aveList) { writeH(i); } } else { writeH(0x00); } } } Изменено 21 марта, 2015 пользователем Demoncool Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 20 марта, 2015 https://subversion.assembla.com/svn/l2jmobius/trunk/java/com/l2jserver/gameserver/network/serverpackets/NpcInfo.java ну или в лыже, это быстрее под руку попалось. P.S.: Зачем такое старющее то брать, тем более там написали, что это всего лишь набросок. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты