Показать сообщение отдельно
Старый 14.10.2007, 23:34   #7
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: Различия в пакетах C4, C5, Интерлюдии

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;
	}
}
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием