From 97115f19fd507370a66104b7beaca70588e0f2c8 Mon Sep 17 00:00:00 2001
From: Christian <christian@debian>
Date: Tue, 2 Mar 2021 12:50:08 +0100
Subject: [PATCH] should be fixed for good now

---
 RaceTimer/scripting/unloze_racetimer_redux.sp | 83 +++++++++----------
 1 file changed, 37 insertions(+), 46 deletions(-)

diff --git a/RaceTimer/scripting/unloze_racetimer_redux.sp b/RaceTimer/scripting/unloze_racetimer_redux.sp
index 43edb81b..ee75d2ff 100644
--- a/RaceTimer/scripting/unloze_racetimer_redux.sp
+++ b/RaceTimer/scripting/unloze_racetimer_redux.sp
@@ -18,7 +18,7 @@ char g_cSpecialMapStart[g_dLength];
 char g_cSpecialMapEnd[g_dLength];
 static char g_sConfigzones[PLATFORM_MAX_PATH];
 float g_fStartTime[MAXPLAYERS + 1];
-char g_csTime_record[MAXPLAYERS + 1];
+char g_csTime_record[MAXPLAYERS + 1][64];
 float g_fClientVectors[MAXPLAYERS + 1][3];
 int g_iClientFrames[MAXPLAYERS + 1];
 int g_iClientSpeedInterval[MAXPLAYERS + 1];
@@ -48,7 +48,6 @@ public Plugin myinfo =
 public void OnPluginStart()
 {
 	//cmds
-	AutoExecConfig();
 	RegConsoleCmd("sm_toptime", cmd_timerCheckTop, "checking top 10");
 	RegConsoleCmd("sm_mytime", cmd_timerCheckSelf, "checking your personal time");
 	RegConsoleCmd("sm_stages", cmd_timerCheckStage, "Checking race stages");
@@ -63,19 +62,11 @@ public void OnPluginStart()
 	for (int i = MaxClients; i > 0; --i)
 	{
 		if (!AreClientCookiesCached(i))
-		{
 			continue;
-		}
 		OnClientCookiesCached(i);
 	}
 }
 
-public void OnConfigsExecuted()
-{
-	Database.Connect(SQL_OnDatabaseConnect, "racetimercss");
-}
-
-
 //----------------------------------------------------------------------------------------------------
 // Purpose: 
 //----------------------------------------------------------------------------------------------------
@@ -100,28 +91,20 @@ public void SQL_OnConnectFinished(Database db, DBResultSet results, const char[]
                 LogError("Database error: %s", error);
                 return;
         }
-	OnMapStart();
-        for(int i = 1; i <= MaxClients; i++)
-        	OnClientPostAdminCheck(i);
-}
+	static Handle hHostName;
+        if((hHostName = FindConVar("hostname")) == INVALID_HANDLE)
+            return;
+        char line[g_dLength];
+        GetConVarString(hHostName, line, sizeof(line));
+        if (StrContains(line, "EVENT", false) > -1)
+                g_bEventBool = true;
+        g_bDisplaySpecial = unloze_gBSpecialMapDisplay();
+        GetCurrentMap(g_cMapname, sizeof(g_cMapname));
+        startTimer();
 
-public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] error, DataPack data)
-{
-	ResetPack(data);
-	int client_serial = data.ReadCell();
-	if (!db || strlen(error))
-        {
-                char sQuery[g_dLength];
-                data.ReadString(sQuery, sizeof(sQuery));
-		LogError("Query error 1: %s", error);   
-                LogError("actual query: %s", sQuery);
-		return;
-        }
-	int client;
-	if ((client = GetClientFromSerial(client_serial)) == 0)
-		return;
-	if (results.RowCount && results.FetchRow())
-		results.FetchString(0, g_csTime_record[client], sizeof(g_csTime_record));
+	for(int i = 1; i <= MaxClients; i++)
+		if (IsValidClient(i))
+			OnClientPostAdminCheck(i);
 }
 
 public void MYSQLCheckMapEntry()
@@ -167,16 +150,7 @@ public void SQL_FinishedQuery(Database db, DBResultSet results, const char[] err
 
 public void OnMapStart()
 {	
-	static Handle hHostName;
-	if((hHostName = FindConVar("hostname")) == INVALID_HANDLE)
-            return;
-	char line[g_dLength];
-	GetConVarString(hHostName, line, sizeof(line));
-	if (StrContains(line, "EVENT", false) > -1)
-		g_bEventBool = true;
-	g_bDisplaySpecial = unloze_gBSpecialMapDisplay();
-        GetCurrentMap(g_cMapname, sizeof(g_cMapname));
-        startTimer();
+	Database.Connect(SQL_OnDatabaseConnect, "racetimercss");
 }
 
 //----------------------------------------------------------------------------------------------------
@@ -527,8 +501,6 @@ public void FinishedStageRaceZone(int client)
         }
 
 	int l_iZoneCount = unloze_zoneCount();
-	char record_client[32];
-	Format(record_client, sizeof(record_client), g_csTime_record[client]);
 	float client_time = client_current_race_time(client);
         char sTime[32];
         FormatPlayerTime(client_time, sTime, sizeof(sTime), false, 1);
@@ -542,7 +514,7 @@ public void FinishedStageRaceZone(int client)
         else
         	Format(sQuery, sizeof(sQuery), "UPDATE `zetimer_table` SET `%sS%i` = '%s', name = '%s' WHERE steam_auth = '%s' and LENGTH(`%sS%i`) >= LENGTH('%s') and STRCMP(`%sS%i`, '%s') > 0", g_cMapname, stage, sTime, sEscapedName, sSID, g_cMapname, stage, sTime, g_cMapname, stage, sTime);
 	
-	if (StrEqual(record_client, "0.000"))
+	if (StrEqual(g_csTime_record[client], "0.000"))
 	{
 		CPrintToChat(client, "Your record: None yet\nCommand: !toptime !mytime !stages");
 		if (l_iZoneCount < 2)
@@ -551,7 +523,7 @@ public void FinishedStageRaceZone(int client)
 			Format(sQuery, sizeof(sQuery), "UPDATE `zetimer_table` SET `%sS%i` = '%s', name = '%s' WHERE steam_auth = '%s'", g_cMapname, stage, sTime, sEscapedName, sSID);
 	}
 	else
-		CPrintToChat(client, "Your record: %s\nCommand: !toptime !mytime !stages", record_client);
+		CPrintToChat(client, "Your record: %s\nCommand: !toptime !mytime !stages", g_csTime_record[client]);
         DataPack hDataPack = new DataPack();
         hDataPack.WriteString(sQuery);
         g_dDatabase.Query(SQL_FinishedQuery, sQuery, hDataPack, DBPrio_High);
@@ -574,6 +546,25 @@ public void mysql_get_player_time(int client, int stage)
 	g_dDatabase.Query(SQL_OnQueryCompleted, query, hDataPack);
 }
 
+public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] error, DataPack data)
+{
+        ResetPack(data);
+        int client_serial = data.ReadCell();
+        if (!db || strlen(error))
+        {
+                char sQuery[g_dLength]; 
+                data.ReadString(sQuery, sizeof(sQuery));
+                LogError("Query error 1: %s", error);
+                LogError("actual query: %s", sQuery);
+                return;
+        }
+        int client; 
+        if ((client = GetClientFromSerial(client_serial)) == 0)
+                return;
+        if (results.RowCount && results.FetchRow())
+                results.FetchString(0, g_csTime_record[client], sizeof(g_csTime_record[]));
+}
+
 //----------------------------------------------------------------------------------------------------
 // Purpose: TODO implement if needed
 //----------------------------------------------------------------------------------------------------
@@ -911,7 +902,7 @@ public void SQL_CheckSelf(Database db, DBResultSet results, const char[] error,
                         return;
                 }
                 Format(l_cMessageContent, sizeof(l_cMessageContent), "%s - %s", sTime, l_cPlayerName);
-                CPrintToChat(iclient, "Your best time: 0%s", l_cMessageContent);
+                CPrintToChat(iclient, "Your best time: %s", l_cMessageContent);
 	}
 	else
                 CPrintToChat(iclient, "You have no time yet!");