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
409
410
411
|
/*
SQL query templates.
*/
// =====[ MAPS ]=====
char sqlite_maps_alter1[] = "\
ALTER TABLE Maps \
ADD InRankedPool INTEGER NOT NULL DEFAULT '0'";
char mysql_maps_alter1[] = "\
ALTER TABLE Maps \
ADD InRankedPool TINYINT NOT NULL DEFAULT '0'";
char sqlite_maps_insertranked[] = "\
INSERT OR IGNORE INTO Maps \
(InRankedPool, Name) \
VALUES (%d, '%s')";
char sqlite_maps_updateranked[] = "\
UPDATE OR IGNORE Maps \
SET InRankedPool=%d \
WHERE Name = '%s'";
char mysql_maps_upsertranked[] = "\
INSERT INTO Maps (InRankedPool, Name) \
VALUES (%d, '%s') \
ON DUPLICATE KEY UPDATE \
InRankedPool=VALUES(InRankedPool)";
char sql_maps_reset_mappool[] = "\
UPDATE Maps \
SET InRankedPool=0";
char sql_maps_getname[] = "\
SELECT Name \
FROM Maps \
WHERE MapID=%d";
char sql_maps_searchbyname[] = "\
SELECT MapID, Name \
FROM Maps \
WHERE Name LIKE '%%%s%%' \
ORDER BY (Name='%s') DESC, LENGTH(Name) \
LIMIT 1";
// =====[ PLAYERS ]=====
char sql_players_getalias[] = "\
SELECT Alias \
FROM Players \
WHERE SteamID32=%d";
char sql_players_searchbyalias[] = "\
SELECT SteamID32, Alias \
FROM Players \
WHERE Players.Cheater=0 AND LOWER(Alias) LIKE '%%%s%%' \
ORDER BY (LOWER(Alias)='%s') DESC, LastPlayed DESC \
LIMIT 1";
// =====[ MAPCOURSES ]=====
char sql_mapcourses_findid[] = "\
SELECT MapCourseID \
FROM MapCourses \
WHERE MapID=%d AND Course=%d";
// =====[ GENERAL ]=====
char sql_getpb[] = "\
SELECT Times.RunTime, Times.Teleports \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
WHERE Times.SteamID32=%d AND MapCourses.MapID=%d \
AND MapCourses.Course=%d AND Times.Mode=%d \
ORDER BY Times.RunTime \
LIMIT %d";
char sql_getpbpro[] = "\
SELECT Times.RunTime \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
WHERE Times.SteamID32=%d AND MapCourses.MapID=%d \
AND MapCourses.Course=%d AND Times.Mode=%d AND Times.Teleports=0 \
ORDER BY Times.RunTime \
LIMIT %d";
char sql_getmaptop[] = "\
SELECT t.TimeID, t.SteamID32, p.Alias, t.RunTime AS PBTime, t.Teleports \
FROM Times t \
INNER JOIN MapCourses mc ON mc.MapCourseID=t.MapCourseID \
INNER JOIN Players p ON p.SteamID32=t.SteamID32 \
LEFT OUTER JOIN Times t2 ON t2.SteamID32=t.SteamID32 \
AND t2.MapCourseID=t.MapCourseID AND t2.Mode=t.Mode AND t2.RunTime<t.RunTime \
WHERE t2.TimeID IS NULL AND p.Cheater=0 AND mc.MapID=%d AND mc.Course=%d AND t.Mode=%d \
ORDER BY PBTime \
LIMIT %d";
char sql_getmaptoppro[] = "\
SELECT t.TimeID, t.SteamID32, p.Alias, t.RunTime AS PBTime, t.Teleports \
FROM Times t \
INNER JOIN MapCourses mc ON mc.MapCourseID=t.MapCourseID \
INNER JOIN Players p ON p.SteamID32=t.SteamID32 \
LEFT OUTER JOIN Times t2 ON t2.SteamID32=t.SteamID32 AND t2.MapCourseID=t.MapCourseID \
AND t2.Mode=t.Mode AND t2.RunTime<t.RunTime AND t.Teleports=0 AND t2.Teleports=0 \
WHERE t2.TimeID IS NULL AND p.Cheater=0 AND mc.MapID=%d \
AND mc.Course=%d AND t.Mode=%d AND t.Teleports=0 \
ORDER BY PBTime \
LIMIT %d";
char sql_getwrs[] = "\
SELECT MIN(Times.RunTime), MapCourses.Course, Times.Mode \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND MapCourses.MapID=%d \
GROUP BY MapCourses.Course, Times.Mode";
char sql_getwrspro[] = "\
SELECT MIN(Times.RunTime), MapCourses.Course, Times.Mode \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND MapCourses.MapID=%d AND Times.Teleports=0 \
GROUP BY MapCourses.Course, Times.Mode";
char sql_getpbs[] = "\
SELECT MIN(Times.RunTime), MapCourses.Course, Times.Mode \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
WHERE Times.SteamID32=%d AND MapCourses.MapID=%d \
GROUP BY MapCourses.Course, Times.Mode";
char sql_getpbspro[] = "\
SELECT MIN(Times.RunTime), MapCourses.Course, Times.Mode \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
WHERE Times.SteamID32=%d AND MapCourses.MapID=%d AND Times.Teleports=0 \
GROUP BY MapCourses.Course, Times.Mode";
char sql_getmaprank[] = "\
SELECT COUNT(DISTINCT Times.SteamID32) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND MapCourses.MapID=%d AND MapCourses.Course=%d \
AND Times.Mode=%d AND Times.RunTime < \
(SELECT MIN(Times.RunTime) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND Times.SteamID32=%d AND MapCourses.MapID=%d \
AND MapCourses.Course=%d AND Times.Mode=%d) \
+ 1";
char sql_getmaprankpro[] = "\
SELECT COUNT(DISTINCT Times.SteamID32) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND MapCourses.MapID=%d AND MapCourses.Course=%d \
AND Times.Mode=%d AND Times.Teleports=0 \
AND Times.RunTime < \
(SELECT MIN(Times.RunTime) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND Times.SteamID32=%d AND MapCourses.MapID=%d \
AND MapCourses.Course=%d AND Times.Mode=%d AND Times.Teleports=0) \
+ 1";
char sql_getlowestmaprank[] = "\
SELECT COUNT(DISTINCT Times.SteamID32) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND MapCourses.MapID=%d \
AND MapCourses.Course=%d AND Times.Mode=%d";
char sql_getlowestmaprankpro[] = "\
SELECT COUNT(DISTINCT Times.SteamID32) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND MapCourses.MapID=%d \
AND MapCourses.Course=%d AND Times.Mode=%d AND Times.Teleports=0";
char sql_getcount_maincourses[] = "\
SELECT COUNT(*) \
FROM MapCourses \
INNER JOIN Maps ON Maps.MapID=MapCourses.MapID \
WHERE Maps.InRankedPool=1 AND MapCourses.Course=0";
char sql_getcount_maincoursescompleted[] = "\
SELECT COUNT(DISTINCT Times.MapCourseID) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Maps ON Maps.MapID=MapCourses.MapID \
WHERE Maps.InRankedPool=1 AND MapCourses.Course=0 \
AND Times.SteamID32=%d AND Times.Mode=%d";
char sql_getcount_maincoursescompletedpro[] = "\
SELECT COUNT(DISTINCT Times.MapCourseID) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Maps ON Maps.MapID=MapCourses.MapID \
WHERE Maps.InRankedPool=1 AND MapCourses.Course=0 \
AND Times.SteamID32=%d AND Times.Mode=%d AND Times.Teleports=0";
char sql_getcount_bonuses[] = "\
SELECT COUNT(*) \
FROM MapCourses \
INNER JOIN Maps ON Maps.MapID=MapCourses.MapID \
WHERE Maps.InRankedPool=1 AND MapCourses.Course>0";
char sql_getcount_bonusescompleted[] = "\
SELECT COUNT(DISTINCT Times.MapCourseID) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Maps ON Maps.MapID=MapCourses.MapID \
WHERE Maps.InRankedPool=1 AND MapCourses.Course>0 \
AND Times.SteamID32=%d AND Times.Mode=%d";
char sql_getcount_bonusescompletedpro[] = "\
SELECT COUNT(DISTINCT Times.MapCourseID) \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Maps ON Maps.MapID=MapCourses.MapID \
WHERE Maps.InRankedPool=1 AND MapCourses.Course>0 \
AND Times.SteamID32=%d AND Times.Mode=%d AND Times.Teleports=0";
char sql_gettopplayers[] = "\
SELECT Players.SteamID32, Players.Alias, COUNT(*) AS RecordCount \
FROM Times \
INNER JOIN \
(SELECT Times.MapCourseID, Times.Mode, MIN(Times.RunTime) AS RecordTime \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Maps ON Maps.MapID=MapCourses.MapID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND Maps.InRankedPool=1 AND MapCourses.Course=0 \
AND Times.Mode=%d \
GROUP BY Times.MapCourseID) Records \
ON Times.MapCourseID=Records.MapCourseID AND Times.Mode=Records.Mode AND Times.RunTime=Records.RecordTime \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
GROUP BY Players.SteamID32, Players.Alias \
ORDER BY RecordCount DESC \
LIMIT %d"; // Doesn't include bonuses
char sql_gettopplayerspro[] = "\
SELECT Players.SteamID32, Players.Alias, COUNT(*) AS RecordCount \
FROM Times \
INNER JOIN \
(SELECT Times.MapCourseID, Times.Mode, MIN(Times.RunTime) AS RecordTime \
FROM Times \
INNER JOIN MapCourses ON MapCourses.MapCourseID=Times.MapCourseID \
INNER JOIN Maps ON Maps.MapID=MapCourses.MapID \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
WHERE Players.Cheater=0 AND Maps.InRankedPool=1 AND MapCourses.Course=0 \
AND Times.Mode=%d AND Times.Teleports=0 \
GROUP BY Times.MapCourseID) Records \
ON Times.MapCourseID=Records.MapCourseID AND Times.Mode=Records.Mode AND Times.RunTime=Records.RecordTime AND Times.Teleports=0 \
INNER JOIN Players ON Players.SteamID32=Times.SteamID32 \
GROUP BY Players.SteamID32, Players.Alias \
ORDER BY RecordCount DESC \
LIMIT %d"; // Doesn't include bonuses
char sql_getaverage[] = "\
SELECT AVG(PBTime), COUNT(*) \
FROM \
(SELECT MIN(Times.RunTime) AS PBTime \
FROM Times \
INNER JOIN MapCourses ON Times.MapCourseID=MapCourses.MapCourseID \
INNER JOIN Players ON Times.SteamID32=Players.SteamID32 \
WHERE Players.Cheater=0 AND MapCourses.MapID=%d \
AND MapCourses.Course=%d AND Times.Mode=%d \
GROUP BY Times.SteamID32) AS PBTimes";
char sql_getaverage_pro[] = "\
SELECT AVG(PBTime), COUNT(*) \
FROM \
(SELECT MIN(Times.RunTime) AS PBTime \
FROM Times \
INNER JOIN MapCourses ON Times.MapCourseID=MapCourses.MapCourseID \
INNER JOIN Players ON Times.SteamID32=Players.SteamID32 \
WHERE Players.Cheater=0 AND MapCourses.MapID=%d \
AND MapCourses.Course=%d AND Times.Mode=%d AND Times.Teleports=0 \
GROUP BY Times.SteamID32) AS PBTimes";
char sql_getrecentrecords[] = "\
SELECT Maps.Name, MapCourses.Course, MapCourses.MapCourseID, Players.Alias, a.RunTime \
FROM Times AS a \
INNER JOIN MapCourses ON a.MapCourseID=MapCourses.MapCourseID \
INNER JOIN Maps ON MapCourses.MapID=Maps.MapID \
INNER JOIN Players ON a.SteamID32=Players.SteamID32 \
WHERE Players.Cheater=0 AND Maps.InRankedPool AND a.Mode=%d \
AND NOT EXISTS \
(SELECT * \
FROM Times AS b \
WHERE a.MapCourseID=b.MapCourseID AND a.Mode=b.Mode \
AND a.Created>b.Created AND a.RunTime>b.RunTime) \
ORDER BY a.TimeID DESC \
LIMIT %d";
char sql_getrecentrecords_pro[] = "\
SELECT Maps.Name, MapCourses.Course, MapCourses.MapCourseID, Players.Alias, a.RunTime \
FROM Times AS a \
INNER JOIN MapCourses ON a.MapCourseID=MapCourses.MapCourseID \
INNER JOIN Maps ON MapCourses.MapID=Maps.MapID \
INNER JOIN Players ON a.SteamID32=Players.SteamID32 \
WHERE Players.Cheater=0 AND Maps.InRankedPool AND a.Mode=%d AND a.Teleports=0 \
AND NOT EXISTS \
(SELECT * \
FROM Times AS b \
WHERE b.Teleports=0 AND a.MapCourseID=b.MapCourseID AND a.Mode=b.Mode \
AND a.Created>b.Created AND a.RunTime>b.RunTime) \
ORDER BY a.TimeID DESC \
LIMIT %d";
// =====[ JUMPSTATS ]=====
char sql_jumpstats_gettop[] = "\
SELECT j.JumpID, p.SteamID32, p.Alias, j.Block, j.Distance, j.Strafes, j.Sync, j.Pre, j.Max, j.Airtime \
FROM \
Jumpstats j \
INNER JOIN \
Players p ON \
p.SteamID32=j.SteamID32 AND \
p.Cheater = 0 \
INNER JOIN \
( \
SELECT j.SteamID32, j.JumpType, j.Mode, j.IsBlockJump, MAX(j.Distance) BestDistance \
FROM \
Jumpstats j \
INNER JOIN \
( \
SELECT SteamID32, MAX(Block) AS MaxBlockDist \
FROM \
Jumpstats \
WHERE \
JumpType = %d AND \
Mode = %d AND \
IsBlockJump = %d \
GROUP BY SteamID32 \
) MaxBlock ON \
j.SteamID32 = MaxBlock.SteamID32 AND \
j.Block = MaxBlock.MaxBlockDist \
WHERE \
j.JumpType = %d AND \
j.Mode = %d AND \
j.IsBlockJump = %d \
GROUP BY j.SteamID32, j.JumpType, j.Mode, j.IsBlockJump \
) MaxDist ON \
j.SteamID32 = MaxDist.SteamID32 AND \
j.JumpType = MaxDist.JumpType AND \
j.Mode = MaxDist.Mode AND \
j.IsBlockJump = MaxDist.IsBlockJump AND \
j.Distance = MaxDist.BestDistance \
ORDER BY j.Block DESC, j.Distance DESC \
LIMIT %d";
char sql_jumpstats_getrecord[] = "\
SELECT JumpID, Distance, Block \
FROM \
Jumpstats rec \
WHERE \
SteamID32 = %d AND \
JumpType = %d AND \
Mode = %d AND \
IsBlockJump = %d \
ORDER BY Block DESC, Distance DESC";
char sql_jumpstats_getpbs[] = "\
SELECT b.JumpID, b.JumpType, b.Distance, b.Strafes, b.Sync, b.Pre, b.Max, b.Airtime \
FROM Jumpstats b \
INNER JOIN ( \
SELECT a.SteamID32, a.Mode, a.JumpType, MAX(a.Distance) Distance \
FROM Jumpstats a \
WHERE a.SteamID32=%d AND a.Mode=%d AND NOT a.IsBlockJump \
GROUP BY a.JumpType, a.Mode, a.SteamID32 \
) a ON a.JumpType=b.JumpType AND a.Distance=b.Distance \
WHERE a.SteamID32=b.SteamID32 AND a.Mode=b.Mode AND NOT b.IsBlockJump \
ORDER BY b.JumpType";
char sql_jumpstats_getblockpbs[] = "\
SELECT c.JumpID, c.JumpType, c.Block, c.Distance, c.Strafes, c.Sync, c.Pre, c.Max, c.Airtime \
FROM Jumpstats c \
INNER JOIN ( \
SELECT a.SteamID32, a.Mode, a.JumpType, a.Block, MAX(b.Distance) Distance \
FROM Jumpstats b \
INNER JOIN ( \
SELECT a.SteamID32, a.Mode, a.JumpType, MAX(a.Block) Block \
FROM Jumpstats a \
WHERE a.SteamID32=%d AND a.Mode=%d AND a.IsBlockJump \
GROUP BY a.JumpType, a.Mode, a.SteamID32 \
) a ON a.JumpType=b.JumpType AND a.Block=b.Block \
WHERE a.SteamID32=b.SteamID32 AND a.Mode=b.Mode AND b.IsBlockJump \
GROUP BY a.JumpType, a.Mode, a.SteamID32, a.Block \
) b ON b.JumpType=c.JumpType AND b.Block=c.Block AND b.Distance=c.Distance \
WHERE b.SteamID32=c.SteamID32 AND b.Mode=c.Mode AND c.IsBlockJump \
ORDER BY c.JumpType";
|