Advertisement
Guest User

Untitled

a guest
Sep 26th, 2012
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 13.03 KB | None | 0 0
  1. package su.westeros.gameserver.serverpackets;
  2.  
  3. import su.westeros.gameserver.Config;
  4. import su.westeros.gameserver.data.xml.holder.NpcHolder;
  5. import su.westeros.gameserver.instancemanager.CursedWeaponsManager;
  6. import su.westeros.gameserver.model.Skill;
  7. import su.westeros.gameserver.model.Zone;
  8. import su.westeros.gameserver.model.base.AttributeElement;
  9. import su.westeros.gameserver.model.base.pc.ClassId;
  10. import su.westeros.gameserver.model.base.Experience;
  11. import su.westeros.gameserver.model.base.TeamType;
  12. import su.westeros.gameserver.model.entity.events.GlobalEvent;
  13. import su.westeros.gameserver.model.general.Player;
  14. import su.westeros.gameserver.model.items.Inventory;
  15. import su.westeros.gameserver.model.matching.MatchingRoom;
  16. import su.westeros.gameserver.model.pledge.Alliance;
  17. import su.westeros.gameserver.model.pledge.Clan;
  18. import su.westeros.gameserver.skills.effects.EffectCubic;
  19. import su.westeros.gameserver.utils.Location;
  20.  
  21.  
  22. public class UserInfo extends L2GameServerPacket
  23. {
  24.     private boolean can_writeImpl = false, partyRoom;
  25.     private int _abnormalEffect, _abnormalEffect2, noble, hero, mount_id, cw_level;
  26.     private long _exp;
  27.     private double _expPercent;
  28.     private int[][] _inv;
  29.     private Location _loc, _fishLoc;
  30.     private int _mdef, pvp_flag, karma, hair_style, hair_color, face, gm_commands, fame, vitality;
  31.     private String _name, title;
  32.     private int _patk, _patkspd, _pdef, evasion, accuracy, crit, _matk, _matkspd, mevasion, maccuracy, mCritRate;
  33.     private int _runSpd, _walkSpd, _swimRunSpd, _swimWalkSpd, _flRunSpd, _flWalkSpd, _flyRunSpd, _flyWalkSpd, _relation;
  34.     private int _str, _con, _dex, _int, _wit, _men, _sp, ClanPrivs, InventoryLimit;
  35.     private TeamType _team;
  36.     private AttributeElement attackElement;
  37.     private int attackElementValue;
  38.     private int clan_id, clan_crest_id, ally_id, ally_crest_id, large_clan_crest_id;
  39.     private EffectCubic[] cubics;
  40.     private int curHp, maxHp, curMp, maxMp, curLoad, maxLoad, rec_left, rec_have;
  41.     private int defenceFire, defenceWater, defenceWind, defenceEarth, defenceHoly, defenceUnholy;
  42.     private boolean isFlying, _allowMap;
  43.     private int mount_type;
  44.     private double move_speed, attack_speed, col_radius, col_height;
  45.     private int name_color, running, pledge_class, pledge_type, title_color, transformation, fishing;
  46.     private int obj_id, vehicle_obj_id, _race, sex, base_class, level, curCp, maxCp, _enchant, _weaponFlag;
  47.     private boolean openCloak;
  48.     private int private_store, can_crystalize, pk_kills, pvp_kills, class_id, agathion;
  49.     private int talismans;
  50.  
  51.  
  52.     public UserInfo(Player player)
  53.     {
  54.     if (player.getTransformationName() != null)
  55.     {
  56.         _name = player.getTransformationName();
  57.         title = "";
  58.         clan_crest_id = 0;
  59.         ally_crest_id = 0;
  60.         large_clan_crest_id = 0;
  61.         cw_level = CursedWeaponsManager.getInstance().getLevel(player.getCursedWeaponEquippedId());
  62.     }
  63.     else
  64.     {
  65.         _name = player.getName();
  66.  
  67.         Clan clan = player.getClan();
  68.         Alliance alliance = (clan == null) ? null : clan.getAlliance();
  69.  
  70.         //
  71.         clan_id = (clan == null) ? 0 : clan.getClanId();
  72.         clan_crest_id = (clan == null) ? 0 : clan.getCrestId();
  73.         large_clan_crest_id = (clan == null) ? 0 : clan.getCrestLargeId();
  74.  
  75.         //
  76.         ally_id = (alliance == null) ? 0 : alliance.getAllyId();
  77.         ally_crest_id = (alliance == null) ? 0 : alliance.getAllyCrestId();
  78.         cw_level = 0;
  79.         title = player.getTitle();
  80.     }
  81.  
  82.     if (player.getPlayerAccess().GodMode && player.isInvisible())
  83.     {
  84.         title += "[I]";
  85.     }
  86.  
  87.     if (player.isPolymorphed())
  88.     {
  89.         if (NpcHolder.getInstance().getTemplate(player.getPolyId()) != null)
  90.         {
  91.         title += " - " + NpcHolder.getInstance().getTemplate(player.getPolyId()).name;
  92.         }
  93.         else
  94.         {
  95.         title += " - Polymorphed";
  96.         }
  97.     }
  98.  
  99.     if (player.isMounted())
  100.     {
  101.         _enchant = 0;
  102.         mount_id = player.getMountNpcId() + 1000000;
  103.         mount_type = player.getMountType();
  104.     }
  105.     else
  106.     {
  107.         _enchant = player.getEnchantEffect();
  108.         mount_id = 0;
  109.         mount_type = 0;
  110.     }
  111.  
  112.     _weaponFlag = (player.getActiveWeaponInstance() == null) ? 0x14 : 0x28;
  113.      move_speed = player.getMovementSpeedMultiplier();
  114.     _runSpd = (int) (player.getRunSpeed() / move_speed);
  115.     _walkSpd = (int) (player.getWalkSpeed() / move_speed);
  116.     _flRunSpd = 0;    // TODO
  117.     _flWalkSpd = 0;    // TODO
  118.  
  119.     if (player.isFlying())
  120.     {
  121.         _flyRunSpd = _runSpd;
  122.         _flyWalkSpd = _walkSpd;
  123.     }
  124.     else
  125.     {
  126.         _flyRunSpd = 0;
  127.         _flyWalkSpd = 0;
  128.     }
  129.  
  130.     _swimRunSpd = player.getSwimSpeed();
  131.     _swimWalkSpd = player.getSwimSpeed();
  132.     _inv = new int[Inventory.PAPERDOLL_MAX][3];
  133.  
  134.     for (int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
  135.     {
  136.         _inv[PAPERDOLL_ID][0] = player.getInventory().getPaperdollObjectId(PAPERDOLL_ID);
  137.         _inv[PAPERDOLL_ID][1] = player.getInventory().getPaperdollItemId(PAPERDOLL_ID);
  138.         _inv[PAPERDOLL_ID][2] = player.getInventory().getPaperdollAugmentationId(PAPERDOLL_ID);
  139.     }
  140.  
  141.     _relation = player.isClanLeader() ? 0x40 : 0;
  142.  
  143.     for (GlobalEvent e : player.getEvents())
  144.     {
  145.         _relation = e.getUserRelation(player, _relation);
  146.     }
  147.  
  148.     _loc = player.getLoc();
  149.     obj_id = player.getObjectId();
  150.     vehicle_obj_id = player.isInBoat() ? player.getBoat().getBoatId() : 0x00;
  151.     _race = player.getRace().ordinal();
  152.     sex = player.getSex();
  153.     base_class = player.getBaseClassId().getOrdinalClass().getId();
  154.     level = player.getLevel();
  155.     _exp = player.getExp();
  156.     _expPercent = Experience.getExpPercent(player.getLevel(), player.getExp());
  157.     _str = player.getSTR();
  158.     _dex = player.getDEX();
  159.     _con = player.getCON();
  160.     _int = player.getINT();
  161.     _wit = player.getWIT();
  162.     _men = player.getMEN();
  163.     curHp = (int) player.getCurrentHp();
  164.     maxHp = player.getMaxHp();
  165.     curMp = (int) player.getCurrentMp();
  166.     maxMp = player.getMaxMp();
  167.     curLoad = player.getCurrentLoad();
  168.     maxLoad = player.getMaxLoad();
  169.     _sp = player.getIntSp();
  170.     _patk = player.getPAtk(null);
  171.     _patkspd = player.getPAtkSpd();
  172.     _pdef = player.getPDef(null);
  173.     evasion = player.getEvasionRate(null);
  174.     mevasion = player.getMEvasionRate(null);
  175.     maccuracy = player.getMAccuracy();
  176.     mCritRate = (int) player.getMagicCriticalHit(null, null);
  177.     accuracy = player.getAccuracy();
  178.     crit = player.getCriticalHit(null, null);
  179.     _matk = player.getMAtk(null, null);
  180.     _matkspd = player.getMAtkSpd();
  181.     _mdef = player.getMDef(null, null);
  182.     pvp_flag = player.getPvpFlag();    // 0=white, 1=purple, 2=purpleblink
  183.     karma = player.getKarma();
  184.     attack_speed = player.getAttackSpeedMultiplier();
  185.     col_radius = player.getColRadius();
  186.     col_height = player.getColHeight();
  187.     hair_style = player.getHairStyle();
  188.     hair_color = player.getHairColor();
  189.     face = player.getFace();
  190.     gm_commands = (player.isGM() || player.getPlayerAccess().CanUseGMCommand) ? 1 : 0;
  191.  
  192.     // builder level активирует в клиенте админские команды
  193.     clan_id = player.getClanId();
  194.     ally_id = player.getAllyId();
  195.     private_store = player.getPrivateStoreType();
  196.     can_crystalize = (player.getSkillLevel(Skill.SKILL_CRYSTALLIZE) > 0) ? 1 : 0;
  197.     pk_kills = player.getPkKills();
  198.     pvp_kills = player.getPvpKills();
  199.     cubics = player.getCubics().toArray(new EffectCubic[player.getCubics().size()]);
  200.     _abnormalEffect = player.getAbnormalEffect();
  201.     _abnormalEffect2 = player.getAbnormalEffect2();
  202.     ClanPrivs = player.getClanPrivileges();
  203.     rec_left = player.getRecomLeft();    // c2 recommendations remaining
  204.     rec_have = player.getRecomHave();    // c2 recommendations received
  205.     InventoryLimit = player.getInventoryLimit();
  206.     class_id = player.getClassId().getDisplayId();
  207.     maxCp = player.getMaxCp();
  208.     curCp = (int) player.getCurrentCp();
  209.     _team = player.getTeam();
  210.     noble = (player.isNoble() || (player.isGM() && Config.GM_HERO_AURA)) ? 1 : 0;    // 0x01: symbol on char menu ctrl+I
  211.     hero = (player.isHero() || (player.isGM() && Config.GM_HERO_AURA)) ? 1 : 0;    // 0x01: Hero Aura and symbol
  212.  
  213.     // fishing = _cha.isFishing() ? 1 : 0; // Fishing Mode
  214.     _fishLoc = player.getFishLoc();
  215.     name_color = player.getNameColor();
  216.     running = player.isRunning() ? 0x01 : 0x00;    // changes the Speed display on Status Window
  217.     pledge_class = player.getSocialRank().ordinal();
  218.     pledge_type = player.getPledgeType();
  219.     title_color = player.getTitleColor();
  220.     transformation = player.getTransformation();
  221.     attackElement = player.getAttackElement();
  222.     attackElementValue = player.getAttack(attackElement);
  223.     defenceFire = player.getDefence(AttributeElement.FIRE);
  224.     defenceWater = player.getDefence(AttributeElement.WATER);
  225.     defenceWind = player.getDefence(AttributeElement.WIND);
  226.     defenceEarth = player.getDefence(AttributeElement.EARTH);
  227.     defenceHoly = player.getDefence(AttributeElement.HOLY);
  228.     defenceUnholy = player.getDefence(AttributeElement.UNHOLY);
  229.     agathion = player.getAgathionId();
  230.     fame = player.getFame();
  231.     vitality = player.getVitality();
  232.     partyRoom = (player.getMatchingRoom() != null)
  233.            && (player.getMatchingRoom().getType() == MatchingRoom.PARTY_MATCHING)
  234.            && (player.getMatchingRoom().getLeader() == player);
  235.     isFlying = player.isInFlyingTransform();
  236.     talismans = player.getTalismanCount();
  237.     openCloak = player.getOpenCloak();
  238.     _allowMap = player.isActionBlocked(Zone.BLOCKED_ACTION_MINIMAP);
  239.     fishing = player.isFishing() ? 1 : 0;    // Fishing Mode
  240.     can_writeImpl = true;
  241.     }
  242.  
  243.     @Override
  244.     protected final void writeImpl()
  245.     {
  246.     if (!can_writeImpl)
  247.     {
  248.         return;
  249.     }
  250.  
  251.     writeC(0x32);
  252.     writeD(_loc.x);
  253.     writeD(_loc.y);
  254.     writeD(_loc.z + Config.CLIENT_Z_SHIFT);
  255.     writeD(vehicle_obj_id);
  256.     writeD(obj_id);
  257.     writeS(_name);
  258.     writeD(_race);
  259.     writeD(sex);
  260.     writeD(base_class);
  261.     writeD(level);
  262.     writeQ(_exp);
  263.     writeF(_expPercent);
  264.     writeD(_str);
  265.     writeD(_dex);
  266.     writeD(_con);
  267.     writeD(_int);
  268.     writeD(_wit);
  269.     writeD(_men);
  270.     writeD(maxHp);
  271.     writeD(curHp);
  272.     writeD(maxMp);
  273.     writeD(curMp);
  274.     writeD(_sp);
  275.     writeD(curLoad);
  276.     writeD(maxLoad);
  277.     writeD(_weaponFlag);
  278.  
  279.     for (int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
  280.     {
  281.         writeD(_inv[PAPERDOLL_ID][0]);
  282.     }
  283.  
  284.     for (int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
  285.     {
  286.         writeD(_inv[PAPERDOLL_ID][1]);
  287.     }
  288.  
  289.     for (int PAPERDOLL_ID : Inventory.PAPERDOLL_ORDER)
  290.     {
  291.         writeD(_inv[PAPERDOLL_ID][2]);
  292.     }
  293.  
  294.     writeD(talismans);
  295.     writeD(openCloak ? 0x01 : 0x00);
  296.     writeD(0x00);    // Внешний вид оружия (ИД Итема).
  297.     writeD(0x00);    // Внешний вид щита (ИД Итема).
  298.     writeD(0x00);    // ???
  299.  
  300.     writeD(_patk);
  301.     writeD(_patkspd);
  302.     writeD(_pdef);
  303.     writeD(evasion);
  304.     writeD(accuracy);
  305.     writeD(crit);
  306.     writeD(_matk);
  307.     writeD(_matkspd);
  308.     writeD(_patkspd);
  309.     writeD(_mdef);
  310.     writeD(mevasion);    // mEvasion    //GOD
  311.     writeD(maccuracy);    // mAccuracy   //GOD
  312.     writeD(mCritRate);    // mCritRate   //GOD
  313.     writeD(pvp_flag);
  314.     writeD(karma);
  315.     writeD(_runSpd);
  316.     writeD(_walkSpd);
  317.    
  318.    
  319.     writeD(_swimRunSpd);    // swimspeed
  320.     writeD(_swimWalkSpd);    // swimspeed
  321.     writeD(_flRunSpd);
  322.     writeD(_flWalkSpd);
  323.     writeD(_flyRunSpd);
  324.     writeD(_flyWalkSpd);
  325.     writeF(move_speed);
  326.     writeF(attack_speed);
  327.     writeF(col_radius);
  328.     writeF(col_height);
  329.     writeD(hair_style);
  330.     writeD(hair_color);
  331.     writeD(face);
  332.     writeD(gm_commands);
  333.     writeS(title);
  334.     writeD(clan_id);
  335.     writeD(clan_crest_id);
  336.     writeD(ally_id);
  337.     writeD(ally_crest_id);
  338.  
  339.     // 0x40 leader rights
  340.     // siege flags: attacker - 0x180 sword over name, defender - 0x80 shield, 0xC0 crown (|leader), 0x1C0 flag (|leader)
  341.     writeD(_relation);
  342.     writeC(mount_type);    // mount type
  343.     writeC(private_store);
  344.     writeC(can_crystalize);
  345.     writeD(pk_kills);
  346.     writeD(pvp_kills);
  347.     writeH(cubics.length);
  348.  
  349.     for (EffectCubic cubic : cubics)
  350.     {
  351.         writeH((cubic == null) ? 0 : cubic.getId());
  352.     }
  353.  
  354.     writeC(partyRoom ? 0x01 : 0x00);    // 1-find party members
  355.     writeD(_abnormalEffect);
  356.     writeC(isFlying ? 0x02 : 0x00);
  357.     writeD(ClanPrivs);
  358.     writeH(rec_left);
  359.     writeH(rec_have);
  360.     writeD(mount_id);
  361.     writeH(InventoryLimit);
  362.     writeD(class_id);
  363.     writeD(0x00);    // special effects? circles around player...
  364.     writeD(maxCp);
  365.     writeD(curCp);
  366.     writeC(_enchant);
  367.     writeC(_team.ordinal());
  368.     writeD(large_clan_crest_id);
  369.     writeC(noble);
  370.     writeC(hero);
  371.     writeC(fishing);
  372.     writeD(_fishLoc.x);
  373.     writeD(_fishLoc.y);
  374.     writeD(_fishLoc.z);
  375.     writeD(name_color);
  376.     writeC(running);
  377.     writeD(pledge_class);
  378.     writeD(pledge_type);
  379.     writeD(title_color);
  380.     writeD(cw_level);
  381.     writeD(transformation);    // Transformation id
  382.  
  383.     // AttackElement (0 - Fire, 1 - Water, 2 - Wind, 3 - Earth, 4 - Holy, 5 - Dark, -2 - None)
  384.     writeH(attackElement.getId());
  385.     writeH(attackElementValue);    // AttackElementValue
  386.     writeH(defenceFire);    // DefAttrFire
  387.     writeH(defenceWater);    // DefAttrWater
  388.     writeH(defenceWind);    // DefAttrWind
  389.     writeH(defenceEarth);    // DefAttrEarth
  390.     writeH(defenceHoly);    // DefAttrHoly
  391.     writeH(defenceUnholy);    // DefAttrUnholy
  392.     writeD(agathion);
  393.  
  394.     // T2 Starts
  395.     writeD(fame);    // Fame
  396.     writeD(_allowMap ? 1 : 0);    // Minimap on Hellbound
  397.     writeD(vitality);    // Vitality Points
  398.     writeD(_abnormalEffect2);
  399.  
  400.     writeD(0x00);
  401.     writeD(0x00);
  402.    
  403.     writeC(0x00);    // UI кнопка refresh
  404.     }
  405. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement