summaryrefslogtreecommitdiff
path: root/sourcemod/scripting/gokz-localdb/db/cache_js.sp
blob: b0df70875fbb3645eedcbc98875566bf28e76710 (plain)
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;
			}
		}
	}
}