diff --git a/RaceTimer/scripting/unloze_racetimer_redux.sp b/RaceTimer/scripting/unloze_racetimer_redux.sp index c9203ae3..9e85a4a3 100755 --- a/RaceTimer/scripting/unloze_racetimer_redux.sp +++ b/RaceTimer/scripting/unloze_racetimer_redux.sp @@ -184,12 +184,16 @@ public void SQL_OnConnectFinished(Database db, DBResultSet results, const char[] { if(!db || strlen(error)) { + delete results; LogError("Database error: %s", error); return; } static Handle hHostName; if((hHostName = FindConVar("hostname")) == INVALID_HANDLE) + { + delete results; return; + } char line[g_dLength]; GetConVarString(hHostName, line, sizeof(line)); if (StrContains(line, "EVENT", false) > -1) @@ -204,6 +208,7 @@ public void SQL_OnConnectFinished(Database db, DBResultSet results, const char[] if (IsValidClient(i)) OnClientPostAdminCheck(i); AddBinarySearchIndex(); + delete results; } public void MYSQLCheckMapEntry() @@ -238,15 +243,16 @@ public void MYSQLCheckMapEntry() public void SQL_FinishedQuery(Database db, DBResultSet results, const char[] error, DataPack data) { - if (!db || strlen(error)) - { - char sQuery[g_dLength]; - ResetPack(data); - data.ReadString(sQuery, sizeof(sQuery)); - LogError("Query error 3: %s", error); - LogError("actual query: %s", sQuery); - } - delete data; + delete results; + if (!db || strlen(error)) + { + char sQuery[g_dLength]; + ResetPack(data); + data.ReadString(sQuery, sizeof(sQuery)); + LogError("Query error 3: %s", error); + LogError("actual query: %s", sQuery); + } + delete data; } //a mysql table can max have 64 keys attached to it without recompiling. Therefore dropping and attaching binary tree index on the given map start, map end, @@ -416,17 +422,28 @@ public void client_ignoring_racetimer(int client) char steam_auth[g_dIndex]; GetClientAuthId(client, AuthId_Steam2, steam_auth, sizeof(steam_auth)); Format(query, sizeof(query), "SELECT is_ignoring FROM `zetimer_table_new_ignoring` where steam_auth = '%s'", steam_auth); - g_dDatabase.Query(SQL_OnQueryCompleted_ignoring, query, client); + + g_dDatabase.Query(SQL_OnQueryCompleted_ignoring, query, GetClientSerial(client)); } -public void SQL_OnQueryCompleted_ignoring(Database db, DBResultSet results, const char[] error, int client) +public void SQL_OnQueryCompleted_ignoring(Database db, DBResultSet results, const char[] error, int Serial) { if (!db) { + delete results; + return; + } + int client; + if ((client = GetClientFromSerial(Serial)) == 0) + { + delete results; return; } if (!IsValidClient(client)) + { + delete results; return; + } int val = 0; if (results.RowCount && results.FetchRow()) val = results.FetchInt(0); @@ -435,6 +452,7 @@ public void SQL_OnQueryCompleted_ignoring(Database db, DBResultSet results, cons { g_bClientsIgnoring[client] = true; } + delete results; } //---------------------------------------------------------------------------------------------------- // Purpose: @@ -689,6 +707,7 @@ public void unloze_zoneLeave(int client, char[] zone) } if (!g_bClient_allowed_to_leave_again[client]) { + PrintToChat(client, "Did not start timer due to teleport cooldown."); return; } @@ -767,16 +786,16 @@ public void FinishedStageRaceZone(int client) } if (l_iZoneCount > 1) CPrintToChat(client, "{green}[UNLOZE] Stage: %i", player_stage[client]); - CPrintToChat(client, "{green}[UNLOZE] Client: %N Time: %06.3f", client, client_time); + CPrintToChat(client, "{green}[UNLOZE] Time: %06.3f", client_time); int stage = player_stage[client]; char sQuery[g_dLength]; if (StrEqual(g_csTime_record[client], "0.000")) { - CPrintToChat(client, "Your record: None yet\nCommand: !toptime !mytime !stages"); + CPrintToChat(client, "{green}[UNLOZE] Your record: None yet\nCommand: !toptime !mytime !stages"); } else { - CPrintToChat(client, "Your record: %s\nCommand: !toptime !mytime !stages", g_csTime_record[client]); + CPrintToChat(client, "{green}[UNLOZE] Your record: %s\nCommand: !toptime !mytime !stages", g_csTime_record[client]); } if (l_iZoneCount < 2) Format(sQuery, sizeof(sQuery), "UPDATE `zetimer_table_new` SET `%s` = '%06.3f', name = '%s' WHERE steam_auth = '%s'", g_cMapname, client_time, sEscapedName, sSID); @@ -835,18 +854,24 @@ public void SQL_OnQueryCompleted_retry(Database db, DBResultSet results, const c delete data; if (!db) { + delete results; return; } int client; if ((client = GetClientFromSerial(client_serial)) == 0) + { + delete results; return; + } if (strlen(error)) { + delete results; mysql_get_player_time(client, 1); return; } if (results.RowCount && results.FetchRow()) results.FetchString(0, g_csTime_record[client], sizeof(g_csTime_record[])); + delete results; } public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] error, DataPack data) @@ -860,14 +885,19 @@ public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] LogError("Query error 1: %s", error); LogError("actual query: %s", sQuery); delete data; + delete results; return; } delete data; int client; if ((client = GetClientFromSerial(client_serial)) == 0) + { + delete results; return; + } if (results.RowCount && results.FetchRow()) results.FetchString(0, g_csTime_record[client], sizeof(g_csTime_record[])); + delete results; } //---------------------------------------------------------------------------------------------------- @@ -1027,7 +1057,10 @@ public void SQL_Select_Top_Callback(Database db, DBResultSet results, const char delete data; int iclient; if ((iclient = GetClientFromSerial(client_serial)) == 0) + { + delete results; return; + } //Player Name char[] g_cPlayerName = new char[MAX_NAME_LENGTH]; char g_cContent[g_dLength]; @@ -1060,6 +1093,7 @@ public void SQL_Select_Top_Callback(Database db, DBResultSet results, const char menu.ExitButton = true; menu.Display(iclient, 0); } + delete results; } //---------------------------------------------------------------------------------------------------- // Purpose: @@ -1196,15 +1230,15 @@ public Action cmd_timerCheckSelf(int client, int args) //---------------------------------------------------------------------------------------------------- public void deleteClientTime(char[] steam2, int stage) { - char l_cQuery[g_dLength]; - int l_iZoneCount = unloze_zoneCount(); - if (l_iZoneCount > 1) - Format(l_cQuery, sizeof(l_cQuery), "UPDATE `zetimer_table_new` SET `%sS%i` = 0.000 WHERE steam_auth = '%s'", g_cMapname, stage, steam2); - else - Format(l_cQuery, sizeof(l_cQuery), "UPDATE `zetimer_table_new` SET `%s` = 0.000 WHERE steam_auth = '%s'", g_cMapname, steam2); - DataPack hDataPack = new DataPack(); - hDataPack.WriteString(l_cQuery); - g_dDatabase.Query(SQL_FinishedQuery, l_cQuery, hDataPack, DBPrio_Normal); + char l_cQuery[g_dLength]; + int l_iZoneCount = unloze_zoneCount(); + if (l_iZoneCount > 1) + Format(l_cQuery, sizeof(l_cQuery), "UPDATE `zetimer_table_new` SET `%sS%i` = 0.000 WHERE steam_auth = '%s'", g_cMapname, stage, steam2); + else + Format(l_cQuery, sizeof(l_cQuery), "UPDATE `zetimer_table_new` SET `%s` = 0.000 WHERE steam_auth = '%s'", g_cMapname, steam2); + DataPack hDataPack = new DataPack(); + hDataPack.WriteString(l_cQuery); + g_dDatabase.Query(SQL_FinishedQuery, l_cQuery, hDataPack, DBPrio_Normal); } //---------------------------------------------------------------------------------------------------- // Purpose: @@ -1260,6 +1294,7 @@ public void SQL_CheckSelf(Database db, DBResultSet results, const char[] error, LogError("Query error 4: %s", error); LogError("actual query: %s", sQuery); delete data; + delete results; return; } delete data; @@ -1267,7 +1302,10 @@ public void SQL_CheckSelf(Database db, DBResultSet results, const char[] error, char[] l_cPlayerName = new char[MAX_NAME_LENGTH]; int iclient; if ((iclient = GetClientFromSerial(client_serial)) == 0) + { + delete results; return; + } if (results.RowCount && results.FetchRow()) { results.FetchString(0, l_cPlayerName, MAX_NAME_LENGTH); @@ -1275,6 +1313,7 @@ public void SQL_CheckSelf(Database db, DBResultSet results, const char[] error, if (fTime == 0.0) { CPrintToChat(iclient, "You have no time yet!"); + delete results; return; } fTime += 0.001; @@ -1283,6 +1322,7 @@ public void SQL_CheckSelf(Database db, DBResultSet results, const char[] error, } else CPrintToChat(iclient, "You have no time yet!"); + delete results; } //---------------------------------------------------------------------------------------------------- diff --git a/jenz_ban_detector/scripting/jenz_ban_detector.sp b/jenz_ban_detector/scripting/jenz_ban_detector.sp index 1d20e458..4db079bf 100644 --- a/jenz_ban_detector/scripting/jenz_ban_detector.sp +++ b/jenz_ban_detector/scripting/jenz_ban_detector.sp @@ -62,7 +62,7 @@ public void SQL_addEntry(int client) g_dDatabase.Escape(sName, sEscapedName, size2 + 1); GetClientIP(client, sIP, sizeof(sIP)); Format(sQuery, sizeof(sQuery), "insert into `ban_detector_steamids` (`steamid`, `name`, `ID`) SELECT '%s', '%s', bd.ID from `ban_detector` bd where bd.ip = '%s' and not exists (select bds.ID from `ban_detector_steamids` bds where bds.ID = bd.ID and bds.steamid = '%s')", sSID, sEscapedName, sIP, sSID); - g_dDatabase.Query(SQL_UpdateEntry, sQuery, client, DBPrio_Low); + g_dDatabase.Query(SQL_UpdateEntry, sQuery, GetClientSerial(client), DBPrio_Low); } public void SQL_OnDatabaseConnect(Database db, const char[] error, any data) @@ -79,18 +79,25 @@ public void SQL_OnDatabaseConnect_sb(Database db, const char[] error, any data) { if(!db || strlen(error)) { - LogError("Database error: %s", error); - return; + LogError("Database error: %s", error); + return; } g_hDatabase_sourceban = db; } -public void SQL_UpdateEntry(Database db, DBResultSet results, const char[] error, int client) +public void SQL_UpdateEntry(Database db, DBResultSet results, const char[] error, int Serial) { if(!db || strlen(error)) { LogError("Database error: %s", error); + delete results; + return; + } + int client; + if ((client = GetClientFromSerial(Serial)) == 0) + { + delete results; return; } if (IsValidClient(client)) @@ -102,16 +109,28 @@ public void SQL_UpdateEntry(Database db, DBResultSet results, const char[] error GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID)); Format(sQuery, sizeof(sQuery), "SELECT bd.fingerprint FROM `ban_detector` bd inner join `ban_detector_steamids` bds on bd.ID = bds.ID where bds.steamid = '%s' or bd.ip = '%s'", sSID, sIP); //PrintToChatAll("sQuery: %s", sQuery); - g_dDatabase.Query(SQL_FindFingerPrints, sQuery, client, DBPrio_Low); + g_dDatabase.Query(SQL_FindFingerPrints, sQuery, GetClientSerial(client), DBPrio_Low); } delete results; } -public void SQL_FindFingerPrints(Database db, DBResultSet results, const char[] error, int client) +public void SQL_FindFingerPrints(Database db, DBResultSet results, const char[] error, int Serial) { if (!db || strlen(error)) { LogError("Database error: %s", error); + delete results; + return; + } + int client; + if ((client = GetClientFromSerial(Serial)) == 0) + { + delete results; + return; + } + if (!IsValidClient(client)) + { + delete results; return; } char fingerprint[1024]; @@ -123,7 +142,7 @@ public void SQL_FindFingerPrints(Database db, DBResultSet results, const char[] g_dDatabase.Escape(fingerprint, sEscapedFingerPrint, 1024); Format(sQuery, sizeof(sQuery), "select steamid, ip from ban_detector bd inner join ban_detector_steamids bds on bd.ID = bds.ID where fingerprint = '%s'", sEscapedFingerPrint); //PrintToChatAll("sQuery: %s", sQuery); - g_dDatabase.Query(SQL_checkSourcebans, sQuery, client, DBPrio_Low); + g_dDatabase.Query(SQL_checkSourcebans, sQuery, GetClientSerial(client), DBPrio_Low); if (IsValidClient(client) && g_bReportedClientBanAvoiding[client]) { break; @@ -132,14 +151,26 @@ public void SQL_FindFingerPrints(Database db, DBResultSet results, const char[] delete results; } -public void SQL_checkSourcebans(Database db, DBResultSet results, const char[] error, int client) +public void SQL_checkSourcebans(Database db, DBResultSet results, const char[] error, int Serial) { if (!db || strlen(error)) { + delete results; LogError("Database error: %s", error); return; } + int client; + if ((client = GetClientFromSerial(Serial)) == 0) + { + delete results; + return; + } + if (!IsValidClient(client)) + { + delete results; + return; + } while (results.RowCount > 0 && results.FetchRow()) { char sSID[MAX_NAME_LENGTH]; @@ -151,7 +182,7 @@ public void SQL_checkSourcebans(Database db, DBResultSet results, const char[] e //PrintToChatAll(sIP); // + 3600 for one hour to accomdate timezone difference Format(sql_statement, sizeof(sql_statement), "select authid, ip from sb_bans where ((ip = '%s' and ip is not null and ip != '') or (authid = '%s' and authid is not null and authid =! '')) and (RemoveType != 'U' or RemoveType is NULL) and (ends > UNIX_TIMESTAMP() + 3600 or ends = created) order by created desc limit 1", sIP, sSID); - g_hDatabase_sourceban.Query(sql_select_sb_bans, sql_statement, client, DBPrio_Low); + g_hDatabase_sourceban.Query(sql_select_sb_bans, sql_statement, GetClientSerial(client), DBPrio_Low); if (IsValidClient(client) && g_bReportedClientBanAvoiding[client]) { break; @@ -160,14 +191,21 @@ public void SQL_checkSourcebans(Database db, DBResultSet results, const char[] e delete results; } -public void sql_select_sb_bans(Database db, DBResultSet results, const char[] error, int client) +public void sql_select_sb_bans(Database db, DBResultSet results, const char[] error, int Serial) { if (!db || strlen(error)) { + delete results; LogError("Database error: %s", error); return; } + int client; + if ((client = GetClientFromSerial(Serial)) == 0) + { + delete results; + return; + } if (!IsValidClient(client)) { delete results;