View difference between Paste ID: jH5DpF2C and FYrkFrmR
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
}