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
|
/*
Caches the player's personal best jumpstats.
*/
void DB_CacheJSPBs(int client, int steamID)
{
ClearCache(client);
char query[1024];
Transaction txn = SQL_CreateTransaction();
FormatEx(query, sizeof(query), sql_jumpstats_getpbs, steamID);
txn.AddQuery(query);
FormatEx(query, sizeof(query), sql_jumpstats_getblockpbs, steamID, steamID);
txn.AddQuery(query);
SQL_ExecuteTransaction(gH_DB, txn, DB_TxnSuccess_CacheJSPBs, DB_TxnFailure_Generic, GetClientUserId(client), DBPrio_High);
}
public void DB_TxnSuccess_CacheJSPBs(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 distance, mode, jumpType, block;
while (SQL_FetchRow(results[0]))
{
distance = SQL_FetchInt(results[0], 0);
mode = SQL_FetchInt(results[0], 1);
jumpType = SQL_FetchInt(results[0], 2);
gI_PBJSCache[client][mode][jumpType][JumpstatDB_Cache_Distance] = block;
}
while (SQL_FetchRow(results[1]))
{
distance = SQL_FetchInt(results[1], 0);
mode = SQL_FetchInt(results[1], 1);
jumpType = SQL_FetchInt(results[1], 2);
block = SQL_FetchInt(results[1], 3);
gI_PBJSCache[client][mode][jumpType][JumpstatDB_Cache_BlockDistance] = distance;
gI_PBJSCache[client][mode][jumpType][JumpstatDB_Cache_Block] = block;
}
}
void ClearCache(int client)
{
for (int mode = 0; mode < MODE_COUNT; mode += 1)
{
for (int type = 0; type < JUMPTYPE_COUNT; type += 1)
{
for (int cache = 0; cache < JUMPSTATDB_CACHE_COUNT; cache += 1)
{
gI_PBJSCache[client][mode][type][cache] = 0;
}
}
}
}
|