Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 15.71 KB | None | 0 0
  1. public final class UserInfo extends SendableGameClientPacket
  2. {
  3.     private static final String _S__04_USERINFO = "[S] 32 UserInfo";
  4.     private L2PcInstance _activeChar;
  5.     private int _runSpd, _walkSpd, _swimRunSpd, _swimWalkSpd, _flyRunSpd, _flyWalkSpd, _relation;
  6.     private float _moveMultiplier;
  7.     private int _territoryId;
  8.     private boolean _isDisguised;
  9.    
  10.     /**
  11.      * @param _characters
  12.      */
  13.     public UserInfo(L2PcInstance character)
  14.     {
  15.         _activeChar = character;
  16.         _moveMultiplier = _activeChar.getMovementSpeedMultiplier();
  17.         _runSpd = Math.round((_activeChar.getRunSpeed() / _moveMultiplier));
  18.         _walkSpd = (int) (_activeChar.getWalkSpeed() / _moveMultiplier);
  19.         _territoryId = TerritoryWarManager.getInstance().getRegisteredTerritoryId(character);
  20.         _swimRunSpd = _flyRunSpd = _runSpd;
  21.         _swimWalkSpd = _flyWalkSpd = _walkSpd;
  22.         _relation = _activeChar.isClanLeader() ? 0x40 : 0;
  23.         if (_activeChar.getSiegeState() == 1)
  24.         {
  25.             if (_territoryId == 0)
  26.                 _relation |= 0x180;
  27.             else
  28.                 _relation |= 0x1000;
  29.         }
  30.         if (_activeChar.getSiegeState() == 2)
  31.             _relation |= 0x80;
  32.         _isDisguised = TerritoryWarManager.getInstance().isDisguised(character.getObjectId());
  33.     }
  34.    
  35.     /**
  36.      *
  37.      * @see org.inc.gameserver.network.gameclientcon.SendableGameClientPacket#writeImpl()
  38.      */
  39.     @Override
  40.     protected final void writeImpl()
  41.     {
  42.         if (!_activeChar.isInsideWorld())
  43.             return;
  44.        
  45.         writeC(0x32);
  46.        
  47.         writeD(_activeChar.getX());
  48.         writeD(_activeChar.getY());
  49.         writeD(_activeChar.getZ());
  50.         writeD(_activeChar.isInAirShip() ? _activeChar.getAirShip().getObjectId() : 0x00); // heading from CT2.3 no longer used inside userinfo, here is now vehicle id (boat,airship)
  51.         writeD(_activeChar.getObjectId());
  52.         writeS(_activeChar.getName());
  53.         writeD(_activeChar.getRace().ordinal());
  54.         writeD(_activeChar.getAppearance().getSex() ? 1 : 0);
  55.        
  56.         if (_activeChar.getClassIndex() == 0)
  57.             writeD(_activeChar.getClassId().getId());
  58.         else
  59.             writeD(_activeChar.getBaseClass());
  60.        
  61.         writeD(_activeChar.getLevel());
  62.         writeQ(_activeChar.getExp());
  63.         writeF((float)(_activeChar.getExp() - Experience.LEVEL[_activeChar.getLevel()]) / (Experience.LEVEL[_activeChar.getLevel() + 1] - Experience.LEVEL[_activeChar.getLevel()])); // H5 exp %
  64.         writeD(_activeChar.getSTR());
  65.         writeD(_activeChar.getDEX());
  66.         writeD(_activeChar.getCON());
  67.         writeD(_activeChar.getINT());
  68.         writeD(_activeChar.getWIT());
  69.         writeD(_activeChar.getMEN());
  70.         writeD(_activeChar.getMaxHp());
  71.         writeD((int) _activeChar.getCurrentHp());
  72.         writeD(_activeChar.getMaxMp());
  73.         writeD((int) _activeChar.getCurrentMp());
  74.         writeD(_activeChar.getSp());
  75.         writeD(_activeChar.getCurrentLoad());
  76.         writeD(_activeChar.getMaxLoad());
  77.        
  78.         writeD(_activeChar.getActiveWeaponItem() != null ? 40 : 20); // 20 no weapon, 40 weapon equipped
  79.        
  80.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_UNDER));
  81.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
  82.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
  83.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
  84.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
  85.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
  86.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
  87.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
  88.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
  89.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
  90.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
  91.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
  92.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
  93.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
  94.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));
  95.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
  96.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR2));
  97.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RBRACELET));
  98.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LBRACELET));
  99.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO1));
  100.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO2));
  101.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO3));
  102.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO4));
  103.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO5));
  104.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DECO6));
  105.         writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BELT)); // CT2.3
  106.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_UNDER));
  107.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
  108.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
  109.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
  110.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
  111.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
  112.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
  113.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
  114.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
  115.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
  116.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
  117.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
  118.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
  119.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
  120.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
  121.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
  122.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR2));
  123.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RBRACELET));
  124.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LBRACELET));
  125.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO1));
  126.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO2));
  127.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO3));
  128.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO4));
  129.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO5));
  130.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DECO6));
  131.         writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BELT)); // CT2.3
  132.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_UNDER));
  133.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_REAR));
  134.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LEAR));
  135.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_NECK));
  136.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RFINGER));
  137.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LFINGER));
  138.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_HEAD));
  139.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
  140.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LHAND));
  141.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_GLOVES));
  142.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_CHEST));
  143.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LEGS));
  144.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_FEET));
  145.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_BACK));
  146.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND));
  147.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_HAIR));
  148.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_HAIR2));
  149.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RBRACELET));
  150.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LBRACELET));
  151.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO1));
  152.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO2));
  153.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO3));
  154.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO4));
  155.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO5));
  156.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_DECO6));
  157.         writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_BELT)); // CT2.3
  158.         writeD(_activeChar.getInventory().getMaxTalismanCount()); // CT2.3
  159.         writeD(_activeChar.getInventory().getCloakStatus()); // CT2.3
  160.         writeD(_activeChar.getPAtk(null));
  161.         writeD(_activeChar.getPAtkSpd());
  162.         writeD(_activeChar.getPDef(null));
  163.         writeD(_activeChar.getEvasionRate(null));
  164.         writeD(_activeChar.getAccuracy());
  165.         writeD(_activeChar.getCriticalHit(null, null));
  166.         writeD(_activeChar.getMAtk(null, null));
  167.        
  168.         writeD(_activeChar.getMAtkSpd());
  169.         writeD(_activeChar.getPAtkSpd());
  170.        
  171.         writeD(_activeChar.getMDef(null, null));
  172.        
  173.         writeD(_activeChar.getPvpFlag()); // 0-non-pvp  1-pvp = violett name
  174.         writeD(_activeChar.getKarma());
  175.        
  176.         writeD(_runSpd);
  177.         writeD(_walkSpd);
  178.         writeD(_swimRunSpd); // swimspeed
  179.         writeD(_swimWalkSpd); // swimspeed
  180.         writeD(0); // AIR speed run
  181.         writeD(0); // AIR speed walk
  182.         writeD(_activeChar.isFlying() ? _flyRunSpd : 0); // fly speed
  183.         writeD(_activeChar.isFlying() ? _flyWalkSpd : 0); // fly speed
  184.         writeF(_moveMultiplier);
  185.         writeF(_activeChar.getAttackSpeedMultiplier());
  186.        
  187.         L2Summon pet = _activeChar.getPet();
  188.         L2Transformation trans;
  189.         if (_activeChar.getMountType() != 0 && pet != null)
  190.         {
  191.             writeF(pet.getTemplate().collisionRadius);
  192.             writeF(pet.getTemplate().collisionHeight);
  193.         }
  194.         else if ((trans = _activeChar.getTransformation()) != null)
  195.         {
  196.             writeF(trans.getCollisionRadius());
  197.             writeF(trans.getCollisionHeight());
  198.         }
  199.         else
  200.         {
  201.             writeF(_activeChar.getBaseTemplate().collisionRadius);
  202.             writeF(_activeChar.getBaseTemplate().collisionHeight);
  203.         }
  204.        
  205.         writeD(_activeChar.getAppearance().getHairStyle());
  206.         writeD(_activeChar.getAppearance().getHairColor());
  207.         writeD(_activeChar.getAppearance().getFace());
  208.         writeD(_activeChar.isGM() ? 1 : 0); // builder level
  209.        
  210.         String title = _activeChar.getAppearance().getVisibleTitle();
  211.         if (_activeChar.getAppearance().getInvisible() && _activeChar.isGM())
  212.             title = "Invisible";
  213.         if (_activeChar.getPoly().isMorphed())
  214.         {
  215.             L2NpcTemplate polyObj = NpcTable.getInstance().getTemplate(_activeChar.getPoly().getPolyId());
  216.             if (polyObj != null)
  217.                 title += " - " + polyObj.name;
  218.         }
  219.         writeS(title);
  220.        
  221.         writeD(_activeChar.getClanId());
  222.         writeD(_activeChar.getClanCrestId());
  223.         writeD(_activeChar.getAllyId());
  224.         writeD(_activeChar.getAllyCrestId()); // ally crest id
  225.         // 0x40 leader rights
  226.         // siege flags: attacker - 0x180 sword over name, defender - 0x80 shield, 0xC0 crown (|leader), 0x1C0 flag (|leader)
  227.         writeD(_relation);
  228.         writeC(_activeChar.getMountType()); // mount type
  229.         writeC(_activeChar.getPrivateStoreType());
  230.         writeC(_activeChar.hasDwarvenCraft() ? 1 : 0);
  231.         writeD(_activeChar.getPkKills());
  232.         writeD(_activeChar.getPvpKills());
  233.        
  234.         writeH(_activeChar.getCubics().size());
  235.         for (int id : _activeChar.getCubics().keySet())
  236.             writeH(id);
  237.        
  238.         writeC(_activeChar.isInPartyMatchRoom() ? 1 : 0); //1-find party members
  239.        
  240.         if (_activeChar.getAppearance().getInvisible() && _activeChar.isGM())
  241.             writeD(_activeChar.getAbnormalEffect() | AbnormalEffect.STEALTH.getMask());
  242.         else
  243.             writeD(_activeChar.getAbnormalEffect());
  244.        
  245.         writeC(_activeChar.isFlyingMounted() ? 2 : 0);
  246.        
  247.         writeD(_activeChar.getClanPrivileges());
  248.        
  249.         writeH(_activeChar.getRecomLeft()); //c2  recommendations remaining
  250.         writeH(_activeChar.getRecomHave()); //c2  recommendations received
  251.         writeD(_activeChar.getMountNpcId() > 0 ? _activeChar.getMountNpcId() + 1000000 : 0);
  252.         writeH(_activeChar.getInventoryLimit());
  253.        
  254.         writeD(_activeChar.getClassId().getId());
  255.         writeD(0x00); // special effects? circles around player...
  256.         writeD(_activeChar.getMaxCp());
  257.         writeD((int) _activeChar.getCurrentCp());
  258.         writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect());
  259.        
  260.         if (_activeChar.getTeam() == 1)
  261.             writeC(0x01); //team circle around feet 1= Blue, 2 = red
  262.         else if (_activeChar.getTeam() == 2)
  263.             writeC(0x02); //team circle around feet 1= Blue, 2 = red
  264.         else
  265.             writeC(0x00); //team circle around feet 1= Blue, 2 = red
  266.            
  267.         writeD(_activeChar.getClanCrestLargeId());
  268.         writeC(_activeChar.isNoble() ? 1 : 0); //0x01: symbol on char menu ctrl+I
  269.         writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) && !_activeChar.isPlayingColiseum() ? 1 : 0); //0x01: Hero Aura
  270.        
  271.         writeC(_activeChar.isFishing() ? 1 : 0); //Fishing Mode
  272.         writeD(_activeChar.getFishx()); //fishing x
  273.         writeD(_activeChar.getFishy()); //fishing y
  274.         writeD(_activeChar.getFishz()); //fishing z
  275.         writeD(_activeChar.getAppearance().getNameColor());
  276.        
  277.         //new c5
  278.         writeC(_activeChar.isRunning() ? 0x01 : 0x00); //changes the Speed display on Status Window
  279.        
  280.         writeD(_activeChar.getPledgeClass()); //changes the text above CP on Status Window
  281.         writeD(_activeChar.getPledgeType());
  282.        
  283.         writeD(_activeChar.getAppearance().getTitleColor());
  284.        
  285.         if (_activeChar.isCursedWeaponEquipped())
  286.             writeD(CursedWeaponsManager.getInstance().getLevel(_activeChar.getCursedWeaponEquippedId()));
  287.         else
  288.             writeD(0x00);
  289.        
  290.         // T1 Starts
  291.         writeD(_activeChar.getTransformationGraphicalId());
  292.        
  293.         int attackAttribute = _activeChar.getAttackElement();
  294.         writeH(attackAttribute);
  295.         writeH(_activeChar.getAttackElementValue(attackAttribute));
  296.         writeH(_activeChar.getDefAttrFire());
  297.         writeH(_activeChar.getDefAttrWater());
  298.         writeH(_activeChar.getDefAttrWind());
  299.         writeH(_activeChar.getDefAttrEarth());
  300.         writeH(_activeChar.getDefAttrHoly());
  301.         writeH(_activeChar.getDefAttrUnholy());
  302.        
  303.         writeD(_activeChar.getAgathionId());
  304.        
  305.         // T2 Starts
  306.         writeD(_activeChar.getFame()); // Fame
  307.         writeD(_activeChar.isMinimapAllowed() ? 1 : 0); // Unknown
  308.         writeD(_activeChar.getVitalityPoints()); // Vitality Points
  309.         writeD(_activeChar.getSpecialEffect()); // CT2.3
  310.         writeD(_territoryId); // CT2.3
  311.         writeD((_isDisguised ? 0x01: 0x00)); // CT2.3
  312.         writeD(_territoryId); // CT2.3
  313.     }
  314.    
  315.     protected void runImpl(final GameClient client)
  316.     {
  317.         L2PcInstance player = client.getActiveChar();
  318.        
  319.         if (player != null)
  320.             player.sendExtraUserInfo();
  321.     }
  322.    
  323.     /**
  324.      *
  325.      * @see org.inc.gameserver.network.gameclientcon.SendableGameClientPacket#getType()
  326.      */
  327.     @Override
  328.     public String getType()
  329.     {
  330.         return _S__04_USERINFO;
  331.     }
  332. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement