-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathUserInfo.cpp
More file actions
191 lines (177 loc) · 9.36 KB
/
UserInfo.cpp
File metadata and controls
191 lines (177 loc) · 9.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
#ifndef _SERVERPACKETS_
#include "ServerPackets.h"
#endif
void UserInfo(CSocket *pSocket, va_list vPacket)
{
char szUserInfo[8192];
L2Server::VAssemble(szUserInfo, 8192, "cdddddSdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddffffddddSdddddcccddhbcdcddhhdhddddccdcccdddd", vPacket);
CPacketDisassembler pOldUserInfo(szUserInfo);
User *pUser = pSocket->GetUser();
CSharedData *pSharedData = pUser->GetSharedData();
CPacketAssembler pNewUserInfo;
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // OpCode
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // X Location
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Y Location
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Z Location
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Heading
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Object Id
pNewUserInfo.WriteS(pOldUserInfo.ReadS()); // Name
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Race
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Sex
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Class Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Level
pNewUserInfo.WriteQ(pOldUserInfo.ReadD()); // Exp
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // STR
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // DEX
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // CON
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // INT
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // WIT
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // MEN
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Max HP
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Current HP
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Max MP
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Current MP
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // SP
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Current Weight
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Max Weight
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Unknown
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Hair Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Right Ear Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Left Ear Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Necklace Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Right Finger Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Left Finger Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Head Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Right Hand Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Left Hand Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Gloves Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Chest Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Legs Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Feet Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Back Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Left/Right Hand Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Hair Object Id
pNewUserInfo.WriteD(0); // Face Object Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Hair Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Right Ear Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Left Ear Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Necklace Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Right Finger Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Left Finger Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Head Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Right Hand Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Left Hand Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Gloves Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Chest Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Legs Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Feet Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Back Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Left/Right Hand Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Hair Id
pNewUserInfo.WriteD(0); // Face Id
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteD(0); // Right Hand Augment Id
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteD(0); // Left/Right Hand Augment Id
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteH(0); // Unknown
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Physical Attack
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Physical Attack Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Physical Defense
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Evasion Rate
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Accuracy
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Critical Hit
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Magical Attack
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Magical Attack Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Physical Attack Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Magical Defense
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // PvP Flag (0 = Non-PvP : 1 = PvP)
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Karma
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Run Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Walk Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Swim Run Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Swim Walk Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Fly Run Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Fly Walk Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Fly2 Run Speed
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Fly2 Walk Speed
pNewUserInfo.WriteF(pOldUserInfo.ReadF()); // Move Multiplier
pNewUserInfo.WriteF(pOldUserInfo.ReadF()); // Attack Speed Multiplier
pNewUserInfo.WriteF(pOldUserInfo.ReadF()); // Collision Radius
pNewUserInfo.WriteF(pOldUserInfo.ReadF()); // Collision Height
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Hair Style
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Hair Color
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Face
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Builder Level
pNewUserInfo.WriteS(pOldUserInfo.ReadS()); // Title
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Clan Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Clan Crest Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Ally Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Ally Crest Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Siege Relation
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Mount Type
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Private Store Type
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Dwarven Craft
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // PK Kills
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // PvP Kills
Int16 nBufferSize = pOldUserInfo.ReadH(); // Cubic KeySet Buffer Size
pNewUserInfo.WriteH(nBufferSize);
for (Int16 i = 0; i < nBufferSize; i++)
pNewUserInfo.WriteH(pOldUserInfo.ReadH()); // Cubic KeySet
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Find Party Members
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Abnormal Effect
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Unknown
Int32 nClanPrivSize = pOldUserInfo.ReadD(); // Clan Priv Buffer Size
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Clan Privileges
pNewUserInfo.WriteH(pOldUserInfo.ReadH()); // Rec Remaining
pNewUserInfo.WriteH(pOldUserInfo.ReadH()); // Rec Received
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Unknown
pNewUserInfo.WriteH(pOldUserInfo.ReadH()); // Inventory Limit
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Class Id
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Unknown (Special Effects?)
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Max CP
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Current CP
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Enchant Effect
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Special Circle (1 = Blue : 2 = Red)
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Clan Crest Large Id
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Is Noblesse
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Is Hero
pNewUserInfo.WriteC(pOldUserInfo.ReadC()); // Fishing Mode
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Fishing X
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Fishing Y
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Fishing Z
pNewUserInfo.WriteD(pOldUserInfo.ReadD()); // Name Color
pNewUserInfo.WriteC(pSharedData->nMoveType); // Is Running
pNewUserInfo.WriteD(pUser->GetPledgeClass()); // Pledge Class
pNewUserInfo.WriteD(0); // Unknown
//pNewUserInfo.WriteD(pSharedData->pExUserInfo->nTitleColor); // Title Color
pNewUserInfo.WriteD(0); // Title Color
pNewUserInfo.WriteD(pUser->GetCursedWeaponGlowLevel()); // Cursed Weapon Glow Level
pSocket->Send("b", pNewUserInfo.GetSize(), pNewUserInfo.GetPacket());
}