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