SHOW:
|
|
- or go back to the newest paste.
| 1 | package net.sf.l2j.gameserver.network.serverpackets; | |
| 2 | ||
| 3 | import net.sf.l2j.Config; | |
| 4 | import net.sf.l2j.gameserver.data.NpcTable; | |
| 5 | import net.sf.l2j.gameserver.data.manager.CursedWeaponManager; | |
| 6 | import net.sf.l2j.gameserver.model.actor.instance.Player; | |
| 7 | import net.sf.l2j.gameserver.model.itemcontainer.Inventory; | |
| 8 | import net.sf.l2j.gameserver.model.location.Location; | |
| 9 | import net.sf.l2j.gameserver.skills.AbnormalEffect; | |
| 10 | ||
| 11 | public class CharInfo extends L2GameServerPacket | |
| 12 | {
| |
| 13 | private final Player _activeChar; | |
| 14 | private final Inventory _inv; | |
| 15 | ||
| 16 | public CharInfo(Player cha) | |
| 17 | {
| |
| 18 | _activeChar = cha; | |
| 19 | _inv = _activeChar.getInventory(); | |
| 20 | } | |
| 21 | ||
| 22 | @Override | |
| 23 | protected final void writeImpl() | |
| 24 | {
| |
| 25 | boolean gmSeeInvis = false; | |
| 26 | ||
| 27 | if (_activeChar.getAppearance().getInvisible()) | |
| 28 | {
| |
| 29 | Player tmp = getClient().getActiveChar(); | |
| 30 | if (tmp != null && tmp.isGM()) | |
| 31 | gmSeeInvis = true; | |
| 32 | } | |
| 33 | ||
| 34 | writeC(0x03); | |
| 35 | writeD(_activeChar.getX()); | |
| 36 | writeD(_activeChar.getY()); | |
| 37 | writeD(_activeChar.getZ()); | |
| 38 | writeD(_activeChar.getHeading()); | |
| 39 | writeD(_activeChar.getObjectId()); | |
| 40 | writeS(_activeChar.getName()); | |
| 41 | writeD(_activeChar.getRace().ordinal()); | |
| 42 | writeD(_activeChar.getAppearance().getSex().ordinal()); | |
| 43 | ||
| 44 | if (_activeChar.getClassIndex() == 0) | |
| 45 | writeD(_activeChar.getClassId().getId()); | |
| 46 | else | |
| 47 | writeD(_activeChar.getBaseClass()); | |
| 48 | ||
| 49 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIRALL)); | |
| 50 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD)); | |
| 51 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); | |
| 52 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND)); | |
| 53 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES)); | |
| 54 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST)); | |
| 55 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS)); | |
| 56 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET)); | |
| 57 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BACK)); | |
| 58 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND)); | |
| 59 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR)); | |
| 60 | writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FACE)); | |
| 61 | ||
| 62 | // c6 new h's | |
| 63 | writeH(0x00); | |
| 64 | writeH(0x00); | |
| 65 | writeH(0x00); | |
| 66 | writeH(0x00); | |
| 67 | writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND)); | |
| 68 | writeH(0x00); | |
| 69 | writeH(0x00); | |
| 70 | writeH(0x00); | |
| 71 | writeH(0x00); | |
| 72 | writeH(0x00); | |
| 73 | writeH(0x00); | |
| 74 | writeH(0x00); | |
| 75 | writeH(0x00); | |
| 76 | writeH(0x00); | |
| 77 | writeH(0x00); | |
| 78 | writeH(0x00); | |
| 79 | writeH(0x00); | |
| 80 | writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LHAND)); | |
| 81 | writeH(0x00); | |
| 82 | writeH(0x00); | |
| 83 | writeH(0x00); | |
| 84 | writeH(0x00); | |
| 85 | ||
| 86 | writeD(_activeChar.getPvpFlag()); | |
| 87 | writeD(_activeChar.getKarma()); | |
| 88 | ||
| 89 | writeD(_activeChar.getMAtkSpd()); | |
| 90 | writeD(_activeChar.getPAtkSpd()); | |
| 91 | ||
| 92 | writeD(_activeChar.getPvpFlag()); | |
| 93 | writeD(_activeChar.getKarma()); | |
| 94 | ||
| 95 | int _runSpd = _activeChar.getStat().getBaseRunSpeed(); | |
| 96 | int _walkSpd = _activeChar.getStat().getBaseWalkSpeed(); | |
| 97 | int _swimSpd = _activeChar.getStat().getBaseSwimSpeed(); | |
| 98 | writeD(_runSpd); // base run speed | |
| 99 | writeD(_walkSpd); // base walk speed | |
| 100 | writeD(_swimSpd); // swim run speed | |
| 101 | writeD(_swimSpd); // swim walk speed | |
| 102 | writeD(_runSpd); | |
| 103 | writeD(_walkSpd); | |
| 104 | writeD(_activeChar.isFlying() ? _runSpd : 0); // fly run speed | |
| 105 | writeD(_activeChar.isFlying() ? _walkSpd : 0); // fly walk speed | |
| 106 | writeF(_activeChar.getStat().getMovementSpeedMultiplier()); // run speed multiplier | |
| 107 | writeF(_activeChar.getStat().getAttackSpeedMultiplier()); // attack speed multiplier | |
| 108 | ||
| 109 | if (_activeChar.getMountType() != 0) | |
| 110 | {
| |
| 111 | writeF(NpcTable.getInstance().getTemplate(_activeChar.getMountNpcId()).getCollisionRadius()); | |
| 112 | writeF(NpcTable.getInstance().getTemplate(_activeChar.getMountNpcId()).getCollisionHeight()); | |
| 113 | } | |
| 114 | else | |
| 115 | {
| |
| 116 | writeF(_activeChar.getCollisionRadius()); | |
| 117 | writeF(_activeChar.getCollisionHeight()); | |
| 118 | } | |
| 119 | ||
| 120 | writeD(_activeChar.getAppearance().getHairStyle()); | |
| 121 | writeD(_activeChar.getAppearance().getHairColor()); | |
| 122 | writeD(_activeChar.getAppearance().getFace()); | |
| 123 | ||
| 124 | if (gmSeeInvis) | |
| 125 | writeS("Invisible");
| |
| 126 | else | |
| 127 | writeS(_activeChar.getTitle()); | |
| 128 | ||
| 129 | writeD(_activeChar.getClanId()); | |
| 130 | writeD(_activeChar.getClanCrestId()); | |
| 131 | writeD(_activeChar.getAllyId()); | |
| 132 | writeD(_activeChar.getAllyCrestId()); | |
| 133 | ||
| 134 | writeD(0); | |
| 135 | ||
| 136 | writeC(_activeChar.isSitting() ? 0 : 1); // standing = 1 sitting = 0 | |
| 137 | writeC(_activeChar.isRunning() ? 1 : 0); // running = 1 walking = 0 | |
| 138 | writeC(_activeChar.isInCombat() ? 1 : 0); | |
| 139 | writeC(_activeChar.isAlikeDead() ? 1 : 0); | |
| 140 | ||
| 141 | if (gmSeeInvis) | |
| 142 | writeC(0); | |
| 143 | else | |
| 144 | writeC(_activeChar.getAppearance().getInvisible() ? 1 : 0); // invisible = 1 visible =0 | |
| 145 | ||
| 146 | writeC(_activeChar.getMountType()); // 1 on strider 2 on wyvern 0 no mount | |
| 147 | writeC(_activeChar.getStoreType().getId()); // 1 - sellshop | |
| 148 | ||
| 149 | writeH(_activeChar.getCubics().size()); | |
| 150 | for (int id : _activeChar.getCubics().keySet()) | |
| 151 | writeH(id); | |
| 152 | ||
| 153 | writeC(_activeChar.isInPartyMatchRoom() ? 1 : 0); | |
| 154 | ||
| 155 | if (gmSeeInvis) | |
| 156 | writeD((_activeChar.getAbnormalEffect() | AbnormalEffect.STEALTH.getMask())); | |
| 157 | else | |
| 158 | writeD(_activeChar.getAbnormalEffect()); | |
| 159 | ||
| 160 | writeC(_activeChar.getRecomLeft()); | |
| 161 | writeH(_activeChar.getRecomHave()); // Blue value for name (0 = white, 255 = pure blue) | |
| 162 | writeD(_activeChar.getClassId().getId()); | |
| 163 | ||
| 164 | writeD(_activeChar.getMaxCp()); | |
| 165 | writeD((int) _activeChar.getCurrentCp()); | |
| 166 | writeC(_activeChar.isMounted() ? 0 : _activeChar.getEnchantEffect()); | |
| 167 | ||
| 168 | if (_activeChar.getTeam() == 1 || (Config.PLAYER_SPAWN_PROTECTION > 0 && _activeChar.isSpawnProtected())) | |
| 169 | writeC(0x01); // team circle around feet 1= Blue, 2 = red | |
| 170 | else if (_activeChar.getTeam() == 2) | |
| 171 | writeC(0x02); // team circle around feet 1= Blue, 2 = red | |
| 172 | else | |
| 173 | writeC(0x00); // team circle around feet 1= Blue, 2 = red | |
| 174 | ||
| 175 | writeD(_activeChar.getClanCrestLargeId()); | |
| 176 | writeC(_activeChar.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I | |
| 177 | writeC((_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA)) ? 1 : 0); // Hero Aura | |
| 178 | ||
| 179 | writeC(_activeChar.isFishing() ? 1 : 0); // 0x01: Fishing Mode (Cant be undone by setting back to 0) | |
| 180 | ||
| 181 | Location loc = _activeChar.getFishingLoc(); | |
| 182 | if (loc != null) | |
| 183 | {
| |
| 184 | writeD(loc.getX()); | |
| 185 | writeD(loc.getY()); | |
| 186 | writeD(loc.getZ()); | |
| 187 | } | |
| 188 | else | |
| 189 | {
| |
| 190 | writeD(0); | |
| 191 | writeD(0); | |
| 192 | writeD(0); | |
| 193 | } | |
| 194 | ||
| 195 | writeD(_activeChar.getAppearance().getNameColor()); | |
| 196 | ||
| 197 | writeD(0x00); // isRunning() as in UserInfo? | |
| 198 | ||
| 199 | writeD(_activeChar.getPledgeClass()); | |
| 200 | writeD(_activeChar.getPledgeType()); | |
| 201 | ||
| 202 | writeD(_activeChar.getAppearance().getTitleColor()); | |
| 203 | ||
| 204 | if (_activeChar.isCursedWeaponEquipped()) | |
| 205 | writeD(CursedWeaponManager.getInstance().getCurrentStage(_activeChar.getCursedWeaponEquippedId()) - 1); | |
| 206 | else | |
| 207 | writeD(0x00); | |
| 208 | } | |
| 209 | } |