blob: 6840fc356814a069d76c47558f4c8184f211ab01 (
plain) (
blame)
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
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
|
struct TXTEASymmetricKey {
int (**_vptr.TXTEASymmetricKey)(...); // VTABLE?
uint8 m_SymmetricKey[16];
};
// NOTE(fusion): Some minimal processing up until here. Then I realized the file would be huge.
//==================================================================================================
//==================================================================================================
//==================================================================================================
struct TDatabasePoolConnection {
TDatabaseConnectionPool *DatabaseConnectionPool;
TDatabaseConnection *DatabaseConnection;
bool TransactionRunning;
};
struct TDatabaseConnectionPool {
int NumberOfConnections;
struct TDatabaseSettings DatabaseSettings;
struct TDatabaseConnection **DatabaseConnection;
bool *DatabaseConnectionFree;
struct Semaphore FreeDatabaseConnections;
struct Semaphore DatabaseConnectionMutex;
};
// TODO(fusion): Opaque struct?
struct TDatabaseConnection {};
struct TPreparedQuery {
int Number;
char *Query;
char *DBTypes;
char *CTypes;
char *Name;
};
struct TPlayerIndexNode {
bool InternalNode;
};
struct TPlayerIndexInternalNode {
struct TPlayerIndexNode super_TPlayerIndexNode;
struct TPlayerIndexNode *Child[27];
};
struct TPlayerIndexEntry {
char Name[30];
ulong CharacterID;
};
struct TPlayerIndexLeafNode {
struct TPlayerIndexNode super_TPlayerIndexNode;
int Count;
struct TPlayerIndexEntry Entry[10];
};
struct THouseGuest {
char Name[60];
};
struct THouse {
ushort ID;
char Name[50];
char Description[500];
int Size;
ulong Rent;
int DepotNr;
bool NoAuction;
bool GuildHouse;
int ExitX;
int ExitY;
int ExitZ;
int CenterX;
int CenterY;
int CenterZ;
ulong OwnerID;
char OwnerName[30];
int LastTransition;
int PaidUntil;
struct vector<THouseGuest> Subowner;
int Subowners;
struct vector<THouseGuest> Guest;
int Guests;
int Help;
};
struct TWaitinglistEntry {
struct TWaitinglistEntry *Next;
char Name[30];
ulong NextTry;
bool FreeAccount;
bool Newbie;
bool Sleeping;
};
struct TAttackWave {
int x;
int y;
int z;
int Spread;
int Race;
int MinCount;
int MaxCount;
int Radius;
int Lifetime;
ulong Message;
int ExtraItems;
struct vector<TItemData> ExtraItem;
};
struct TReportedStatement {
ulong StatementID;
ulong TimeStamp;
ulong CharacterID;
int Mode;
int Channel;
char Text[256];
};
struct TListener {
ulong StatementID;
ulong CharacterID;
};
struct TDelayedMail {
ulong CharacterID;
int DepotNumber;
uchar *Packet;
int PacketSize;
};
struct TShortwayPoint {
int x;
int y;
int Waypoints;
int Waylength;
int Heuristic;
struct TShortwayPoint *Predecessor;
struct TShortwayPoint *NextToExpand;
};
struct TMonsterhome {
int Race;
int x;
int y;
int z;
int Radius;
int MaxMonsters;
int ActMonsters;
int RegenerationTime;
int Timer;
};
struct TChannel {
ulong Moderator;
char ModeratorName[30];
struct vector<long_unsigned_int> Subscriber;
int Subscribers;
struct vector<long_unsigned_int> InvitedPlayer;
int InvitedPlayers;
};
struct THelpDepot {
ulong CharacterID;
struct Object Box;
int DepotNr;
};
struct TParty {
ulong Leader;
struct vector<long_unsigned_int> Member;
int Members;
struct vector<long_unsigned_int> InvitedPlayer;
int InvitedPlayers;
};
struct TMoveUseAction {
enum ActionType Action;
int Parameters[5];
};
struct TMoveUseRule {
int FirstCondition;
int LastCondition;
int FirstAction;
int LastAction;
};
struct TMoveUseCondition {
enum ModifierType Modifier;
enum ConditionType Condition;
int Parameters[5];
};
struct THouseArea {
ushort ID;
int SQMPrice;
int DepotNr;
};
struct TStatement {
ulong StatementID;
ulong TimeStamp;
ulong CharacterID;
int Mode;
int Channel;
ulong Text;
bool Reported;
};
struct TDirectReplyData {
ulong CharacterID;
char Message[100];
};
struct TWriterThreadReply {
enum TWriterThreadReplyType ReplyType;
void *Data;
};
struct TWriterThreadOrder {
enum TWriterThreadOrderType OrderType;
void *Data;
};
struct TPunishmentOrderData {
ulong GamemasterID;
char GamemasterName[30];
char CriminalName[30];
char CriminalIPAddress[16];
int Reason;
int Action;
char Comment[200];
int NumberOfStatements;
struct vector<TReportedStatement> *ReportedStatements;
ulong StatementID;
bool IPBanishment;
};
struct TLogoutOrderData {
ulong CharacterID;
int Level;
int Profession;
time_t LastLoginTime;
int TutorActivities;
char Residence[30];
};
struct TCharacterDeathOrderData {
ulong CharacterID;
int Level;
ulong Offender;
char Remark[30];
bool Unjustified;
time_t Time;
};
struct TNameLockOrderData {
ulong GamemasterID;
char GamemasterName[30];
char CharacterName[30];
bool OldNameVisible;
};
struct TNotationOrderData {
ulong GamemasterID;
char GamemasterName[30];
char CharacterName[30];
char Comment[200];
};
struct TProtocolThreadOrder {
char ProtocolName[20];
char Text[256];
};
struct TPlayerlistOrderData {
int NumberOfPlayers;
char *PlayerNames;
int *PlayerLevels;
int *PlayerProfessions;
};
struct TBuddyOrderData {
ulong AccountID;
ulong Buddy;
};
struct TKillStatisticsOrderData {
int NumberOfRaces;
char *RaceNames;
int *KilledPlayers;
int *KilledCreatures;
};
struct TMoveUseDatabase {
struct vector<TMoveUseRule> Rules;
int NumberOfRules;
};
struct TFindCreatures {
int startx;
int starty;
int endx;
int endy;
int blockx;
int blocky;
ulong ActID;
ulong SkipID;
int Mask;
bool finished;
};
struct TReaderThreadOrder {
enum TReaderThreadOrderType OrderType;
int SectorX;
int SectorY;
int SectorZ;
ulong CharacterID;
};
struct TReaderThreadReply {
enum TReaderThreadReplyType ReplyType;
int SectorX;
int SectorY;
int SectorZ;
uchar *Data;
int Size;
};
struct TQueryManagerConnection {
int BufferSize;
uchar *Buffer;
struct TReadBuffer ReadBuffer;
struct TWriteBuffer WriteBuffer;
int Socket;
bool QueryOk;
undefined field6_0x2d;
undefined field7_0x2e;
undefined field8_0x2f;
};
struct TQueryManagerPoolConnection {
struct TQueryManagerConnectionPool *QueryManagerConnectionPool;
struct TQueryManagerConnection *QueryManagerConnection;
};
struct TQueryManagerConnectionPool {
int NumberOfConnections;
struct TQueryManagerConnection *QueryManagerConnection;
bool *QueryManagerConnectionFree;
struct Semaphore FreeQueryManagerConnections;
struct Semaphore QueryManagerConnectionMutex;
};
// NOTE(fusion): Probably bigint structures for RSA decoding.
struct vlong_flex_unit {
uint n;
uint *a;
uint z;
};
struct vlong {
int (**_vptr.vlong)(...);
struct vlong_value *value;
int negative;
};
struct vlong_value {
struct vlong_flex_unit super_vlong_flex_unit;
uint share;
};
struct vlong_montgomery {
struct vlong R;
struct vlong R1;
struct vlong m;
struct vlong n1;
struct vlong T;
struct vlong k;
uint N;
};
// NOTE(fusion): Oh yes.
struct TRSAPrivateKey {
int (**_vptr.TRSAPrivateKey)(...);
struct vlong m_PrimeP;
struct vlong m_PrimeQ;
struct vlong m_U;
struct vlong m_DP;
struct vlong m_DQ;
};
struct TShortway {
struct matrix<TShortwayPoint> *Map;
struct TShortwayPoint *FirstToExpand;
struct TCreature *cr;
int VisibleX;
int VisibleY;
int StartX;
int StartY;
int StartZ;
int MinWaypoints;
};
|