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
|
/*
Caches the player's personal best times on the map.
*/
void DB_CachePBs(int client, int steamID)
{
char query[1024];
Transaction txn = SQL_CreateTransaction();
// Reset PB exists array
for (int course = 0; course < GOKZ_MAX_COURSES; course++)
{
for (int mode = 0; mode < MODE_COUNT; mode++)
{
for (int timeType = 0; timeType < TIMETYPE_COUNT; timeType++)
{
gB_PBExistsCache[client][course][mode][timeType] = false;
}
}
}
int mapID = GOKZ_DB_GetCurrentMapID();
// Get Map PBs
FormatEx(query, sizeof(query), sql_getpbs, steamID, mapID);
txn.AddQuery(query);
// Get PRO PBs
FormatEx(query, sizeof(query), sql_getpbspro, steamID, mapID);
txn.AddQuery(query);
SQL_ExecuteTransaction(gH_DB, txn, DB_TxnSuccess_CachePBs, DB_TxnFailure_Generic, GetClientUserId(client), DBPrio_High);
}
public void DB_TxnSuccess_CachePBs(Handle db, int userID, int numQueries, Handle[] results, any[] queryData)
{
int client = GetClientOfUserId(userID);
if (client < 1 || client > MaxClients || !IsClientAuthorized(client) || IsFakeClient(client))
{
return;
}
int course, mode;
while (SQL_FetchRow(results[0]))
{
course = SQL_FetchInt(results[0], 1);
mode = SQL_FetchInt(results[0], 2);
gB_PBExistsCache[client][course][mode][TimeType_Nub] = true;
gF_PBTimesCache[client][course][mode][TimeType_Nub] = GOKZ_DB_TimeIntToFloat(SQL_FetchInt(results[0], 0));
}
while (SQL_FetchRow(results[1]))
{
course = SQL_FetchInt(results[1], 1);
mode = SQL_FetchInt(results[1], 2);
gB_PBExistsCache[client][course][mode][TimeType_Pro] = true;
gF_PBTimesCache[client][course][mode][TimeType_Pro] = GOKZ_DB_TimeIntToFloat(SQL_FetchInt(results[1], 0));
}
}
|