diff options
Diffstat (limited to 'sourcemod/scripting/gokz-localdb/db/cache_js.sp')
| -rw-r--r-- | sourcemod/scripting/gokz-localdb/db/cache_js.sp | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/sourcemod/scripting/gokz-localdb/db/cache_js.sp b/sourcemod/scripting/gokz-localdb/db/cache_js.sp new file mode 100644 index 0000000..b0df708 --- /dev/null +++ b/sourcemod/scripting/gokz-localdb/db/cache_js.sp @@ -0,0 +1,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; + } + } + } +}
\ No newline at end of file |
