From aef0d1c1268ab7d4bc18996c9c6b4da16a40aadc Mon Sep 17 00:00:00 2001 From: navewindre Date: Mon, 4 Dec 2023 18:06:10 +0100 Subject: bbbbbbbbwaaaaaaaaaaa --- sourcemod/scripting/gokz-localranks/db/helpers.sp | 91 +++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 sourcemod/scripting/gokz-localranks/db/helpers.sp (limited to 'sourcemod/scripting/gokz-localranks/db/helpers.sp') diff --git a/sourcemod/scripting/gokz-localranks/db/helpers.sp b/sourcemod/scripting/gokz-localranks/db/helpers.sp new file mode 100644 index 0000000..670a420 --- /dev/null +++ b/sourcemod/scripting/gokz-localranks/db/helpers.sp @@ -0,0 +1,91 @@ +/* + Database helper functions and callbacks. +*/ + + + +/* Error report callback for failed transactions */ +public void DB_TxnFailure_Generic(Handle db, any data, int numQueries, const char[] error, int failIndex, any[] queryData) +{ + LogError("Database transaction error: %s", error); +} + +/* Error report callback for failed transactions which deletes the DataPack */ +public void DB_TxnFailure_Generic_DataPack(Handle db, DataPack data, int numQueries, const char[] error, int failIndex, any[] queryData) +{ + delete data; + LogError("Database transaction error: %s", error); +} + +/* Used to search the database for a player name and return their PlayerID and alias + + For SQLTxnSuccess onSuccess: + results[0] - 0:PlayerID, 1:Alias +*/ +void DB_FindPlayer(const char[] playerSearch, SQLTxnSuccess onSuccess, any data = 0, DBPriority priority = DBPrio_Normal) +{ + char query[1024], playerEscaped[MAX_NAME_LENGTH * 2 + 1]; + SQL_EscapeString(gH_DB, playerSearch, playerEscaped, sizeof(playerEscaped)); + + String_ToLower(playerEscaped, playerEscaped, sizeof(playerEscaped)); + + Transaction txn = SQL_CreateTransaction(); + + // Look for player name and retrieve their PlayerID + FormatEx(query, sizeof(query), sql_players_searchbyalias, playerEscaped, playerEscaped); + txn.AddQuery(query); + + SQL_ExecuteTransaction(gH_DB, txn, onSuccess, DB_TxnFailure_Generic, data, priority); +} + +/* Used to search the database for a map name and return its MapID and name + + For SQLTxnSuccess onSuccess: + results[0] - 0:MapID, 1:Name +*/ +void DB_FindMap(const char[] mapSearch, SQLTxnSuccess onSuccess, any data = 0, DBPriority priority = DBPrio_Normal) +{ + char query[1024], mapEscaped[129]; + SQL_EscapeString(gH_DB, mapSearch, mapEscaped, sizeof(mapEscaped)); + + Transaction txn = SQL_CreateTransaction(); + + // Look for map name and retrieve it's MapID + FormatEx(query, sizeof(query), sql_maps_searchbyname, mapEscaped, mapEscaped); + txn.AddQuery(query); + + SQL_ExecuteTransaction(gH_DB, txn, onSuccess, DB_TxnFailure_Generic, data, priority); +} + +/* Used to search the database for a player name and return their PlayerID and alias, + and search the database for a map name and return its MapID and name + + For SQLTxnSuccess onSuccess: + results[0] - 0:PlayerID, 1:Alias + results[1] - 0:MapID, 1:Name +*/ +void DB_FindPlayerAndMap(const char[] playerSearch, const char[] mapSearch, SQLTxnSuccess onSuccess, any data = 0, DBPriority priority = DBPrio_Normal) +{ + char query[1024], mapEscaped[129], playerEscaped[MAX_NAME_LENGTH * 2 + 1]; + SQL_EscapeString(gH_DB, playerSearch, playerEscaped, sizeof(playerEscaped)); + SQL_EscapeString(gH_DB, mapSearch, mapEscaped, sizeof(mapEscaped)); + + String_ToLower(playerEscaped, playerEscaped, sizeof(playerEscaped)); + + Transaction txn = SQL_CreateTransaction(); + + // Look for player name and retrieve their PlayerID + FormatEx(query, sizeof(query), sql_players_searchbyalias, playerEscaped, playerEscaped); + txn.AddQuery(query); + // Look for map name and retrieve it's MapID + FormatEx(query, sizeof(query), sql_maps_searchbyname, mapEscaped, mapEscaped); + txn.AddQuery(query); + + SQL_ExecuteTransaction(gH_DB, txn, onSuccess, DB_TxnFailure_Generic, data, priority); +} + +// Used to convert the Account ID to the SteamID we can use for a Global API query +int GetSteam2FromAccountId(char[] result, int maxlen, int account_id) +{ + return Format(result, maxlen, "STEAM_1:%d:%d", view_as(account_id % 2), account_id / 2); +} -- cgit v1.2.3