added squery logs, removed methods, changed alter table, fixed some qoutes probably, changed some checking with mysql

This commit is contained in:
Christian 2021-02-28 23:47:41 +01:00
parent a3f69e7719
commit 63fa29c720

View File

@ -42,10 +42,6 @@ public Plugin myinfo =
url = "www.unloze.com"
};
public void OnConfigsExecuted()
{
Database.Connect(SQL_OnDatabaseConnect, "racetimercss");
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
@ -107,15 +103,20 @@ public void SQL_OnConnectFinished(Database db, DBResultSet results, const char[]
OnClientPostAdminCheck(i);
}
public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] error, any data)
public void SQL_OnQueryCompleted(Database db, DBResultSet results, const char[] error, DataPack data)
{
ResetPack(data);
int client_serial = data.ReadCell();
if (!db || strlen(error))
{
LogError("Query error: %s", 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(data)) == 0)
if ((client = GetClientFromSerial(client_serial)) == 0)
return;
if (results.RowCount && results.FetchRow())
results.FetchString(0, g_csTime_record[client], sizeof(g_csTime_record));
@ -127,70 +128,39 @@ public void MYSQLCheckMapEntry()
int l_iZoneCount = unloze_zoneCount();
char sQuery[g_dLength];
char l_cZoneIndexName[g_dIndex][g_dLength];
if (l_iZoneCount < 2)
{
Format(sQuery, sizeof(sQuery), "SELECT `%s` FROM `zetimer_table` LIMIT 1", g_cMapname);
g_dDatabase.Query(SQL_OnQueryCompleted1, sQuery, _);
}
else
for (int iterator = 0; iterator <= l_iZoneCount; iterator++)
{
if (IsCorrectZone(iterator, l_cZoneIndexName[iterator][g_dLength -1], "ZONE_PREFIX_RACE"))
{
l_iRaceCount++;
Format(sQuery, sizeof(sQuery), "SELECT `%sS%i` FROM `zetimer_table` LIMIT 1", g_cMapname, l_iRaceCount);
g_dDatabase.Query(SQL_OnQueryCompleted1, sQuery, _);
}
}
}
public void SQL_OnQueryCompleted1(Database db, DBResultSet results, const char[] error, any data)
{
if (!db)
{
LogError("Query error: %s", error);
return;
}
int l_iRaceCount;
int l_iZoneCount = unloze_zoneCount();
char sQuery[g_dLength];
char l_cZoneIndexName[g_dIndex][g_dLength];
if (results == null)
{
if (l_iZoneCount == 1)
{
Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table` ADD COLUMN `%s` VARCHAR(256) DEFAULT '0.000' NOT NULL", g_cMapname);
g_dDatabase.Query(SQL_FinishedQuery_mute_error, sQuery, _, DBPrio_High);
}
else
{
//this might seem repetitive but one null check adds all required coloumns
for (int iterator = 0; iterator <= l_iZoneCount; iterator++)
{
if (IsCorrectZone(iterator, l_cZoneIndexName[iterator][g_dLength -1], "ZONE_PREFIX_RACE"))
{
l_iRaceCount++;
Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table` ADD COLUMN `%sS%i` VARCHAR(256) DEFAULT '0.000' NOT NULL", g_cMapname, l_iRaceCount);
g_dDatabase.Query(SQL_FinishedQuery_mute_error, sQuery, _, DBPrio_High);
}
}
}
}
}
public void SQL_FinishedQuery(Database db, DBResultSet results, const char[] error, any data)
{
if (!db || strlen(error))
if (l_iZoneCount == 1)
{
LogError("Query error: %s", error);
return;
Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table` ADD COLUMN IF NOT EXISTS `%s` VARCHAR(256) DEFAULT '0.000' NOT NULL", g_cMapname);
DataPack hDataPack = new DataPack();
hDataPack.WriteString(sQuery);
g_dDatabase.Query(SQL_FinishedQuery, sQuery, hDataPack, DBPrio_High);
}
else
{
for (int iterator = 0; iterator <= l_iZoneCount; iterator++)
{
if (IsCorrectZone(iterator, l_cZoneIndexName[iterator][g_dLength -1], "ZONE_PREFIX_RACE"))
{
l_iRaceCount++;
Format(sQuery, sizeof(sQuery), "ALTER TABLE `zetimer_table` ADD COLUMN IF NOT EXISTS `%sS%i` VARCHAR(256) DEFAULT '0.000' NOT NULL", g_cMapname, l_iRaceCount);
DataPack hDataPack = new DataPack();
hDataPack.WriteString(sQuery);
g_dDatabase.Query(SQL_FinishedQuery, sQuery, hDataPack, DBPrio_High);
}
}
}
}
public void SQL_FinishedQuery_mute_error(Database db, DBResultSet results, const char[] error, any data)
public void SQL_FinishedQuery(Database db, DBResultSet results, const char[] error, DataPack data)
{
if (!db)
return;
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);
}
}
public void OnMapStart()
@ -204,7 +174,7 @@ public void OnMapStart()
GetConVarString(hHostName, line, sizeof(line));
if (StrContains(line, "EVENT", false) > -1)
g_bEventBool = true;
AutoExecConfig();
Database.Connect(SQL_OnDatabaseConnect, "racetimercss");
}
//----------------------------------------------------------------------------------------------------
@ -264,6 +234,7 @@ public void Event_RoundStart(Handle event, const char[] name, bool dontBroadcast
public void OnClientPostAdminCheck(int client)
{
resetClient(client);
insertPlayerMYSQL(client);
}
//----------------------------------------------------------------------------------------------------
// Purpose:
@ -307,7 +278,6 @@ public void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float
g_bHumansAllowedTime[client] = false;
return;
}
if (g_bHumansAllowedTime[client] && (GetClientTeam(client) == CS_TEAM_CT) && IsPlayerAlive(client))
{
int frameCap = 11;
@ -539,28 +509,50 @@ public int RetrieveZoneIndex(char[] zone)
//----------------------------------------------------------------------------------------------------
public void FinishedStageRaceZone(int client)
{
char sSID[g_dIndex];
char sName[MAX_NAME_LENGTH];
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
GetClientName(client, sName, sizeof(sName));
int size2 = 2 * strlen(sName) + 1;
char[] sEscapedName = new char[size2 + 1];
g_dDatabase.Escape(sName, sEscapedName, size2 + 1);
if (StrEqual(sSID, "STEAM_ID_STOP_IGNORING_RETVALS") || StrEqual(sSID, "STEAM_ID_PENDING"))
{
PrintToChat(client, "Your steam ID is not working, not updating timer");
return;
}
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);
float old_record = StringToFloat(record_client);
float new_time = StringToFloat(sTime);
if (l_iZoneCount > 1)
CPrintToChat(client, "{green}[UNLOZE] Stage: %i", player_stage[client]);
CPrintToChat(client, "{green}[UNLOZE] Client: %N Time: %s", client, sTime);
int stage = player_stage[client];
char sQuery[g_dLength];
if (l_iZoneCount < 2)
Format(sQuery, sizeof(sQuery), "UPDATE `zetimer_table` SET `%s` = %s, name = '%s' WHERE steam_auth = '%s' and LENGTH(`%s`) >= LENGTH(%s) and STRCMP(`%s`, %s) > 0", g_cMapname, sTime, sEscapedName, sSID, g_cMapname, sTime, g_cMapname, sTime);
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 (old_record == 0.0)
if (StrEqual(record_client, "0.000"))
{
CPrintToChat(client, "Your record: None yet\nCommand: !toptime !mytime !stages");
sendMYSQL(client, sTime, player_stage[client]);
return;
if (l_iZoneCount < 2)
Format(sQuery, sizeof(sQuery), "UPDATE `zetimer_table` SET `%s` = %s, name = '%s' WHERE steam_auth = '%s'", g_cMapname, sTime, sEscapedName, sSID);
else
Format(sQuery, sizeof(sQuery), "UPDATE `zetimer_table` SET `%sS%i` = %s, name = '%s' WHERE steam_auth = '%s'", g_cMapname, stage, sTime, sEscapedName, sSID);
}
CPrintToChat(client, "Your record: %s\nCommand: !toptime !mytime !stages", record_client);
if (new_time < old_record)
sendMYSQL(client, sTime, player_stage[client]);
else
CPrintToChat(client, "Your record: %s\nCommand: !toptime !mytime !stages", record_client);
DataPack hDataPack = new DataPack();
hDataPack.WriteString(sQuery);
g_dDatabase.Query(SQL_FinishedQuery, sQuery, hDataPack, DBPrio_High);
}
//----------------------------------------------------------------------------------------------------
// Purpose:
@ -574,7 +566,10 @@ public void mysql_get_player_time(int client, int stage)
Format(query, sizeof(query), "SELECT `%s` FROM `zetimer_table` where steam_auth = '%s'", g_cMapname, steam_auth);
else
Format(query, sizeof(query), "SELECT `%sS%i` FROM `zetimer_table` where steam_auth = '%s'", g_cMapname, stage, steam_auth);
g_dDatabase.Query(SQL_OnQueryCompleted, query, GetClientSerial(client));
DataPack hDataPack = new DataPack();
hDataPack.WriteCell(GetClientSerial(client));
hDataPack.WriteString(query);
g_dDatabase.Query(SQL_OnQueryCompleted, query, hDataPack);
}
//----------------------------------------------------------------------------------------------------
@ -596,34 +591,27 @@ public int GetTotalRaceZones()
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void sendMYSQL(int client, char[] sTime, int stage)
public void insertPlayerMYSQL(int client)
{
int l_iZoneCount = unloze_zoneCount();
char sSID[g_dIndex];
char sQuery[g_dLength];
char sName[MAX_NAME_LENGTH];
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
GetClientName(client, sName, sizeof(sName));
int size2 = 2 * strlen(sName) + 1;
char[] sEscapedName = new char[size2 + 1];
g_dDatabase.Escape(sName, sEscapedName, size2 + 1);
if (StrEqual(sSID, "STEAM_ID_STOP_IGNORING_RETVALS") || StrEqual(sSID, "STEAM_ID_PENDING"))
{
PrintToChat(client, "Your steam ID is not working, not updating timer");
if (!IsValidClient(client))
return;
}
if (l_iZoneCount < 2)
{
Format(sQuery, sizeof(sQuery), "INSERT INTO `zetimer_table` (`steam_auth`, `name`, `%s`) VALUES ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE `name` = '%s', `%s` = '%s'", g_cMapname, sSID, sEscapedName, sTime, sEscapedName, g_cMapname, sTime);
}
else
{
Format(sQuery, sizeof(sQuery), "INSERT INTO `zetimer_table` (`steam_auth`, `name`, `%sS%i`) VALUES ('%s', '%s', '%s') ON DUPLICATE KEY UPDATE `name` = '%s', `%sS%i` = '%s'", g_cMapname, stage, sSID, sEscapedName, sTime, sEscapedName, g_cMapname, stage, sTime);
}
g_dDatabase.Query(SQL_FinishedQuery, sQuery, _, DBPrio_High);
CPrintToChat(client, "Updated timer");
char sSID[g_dIndex];
char sQuery[g_dLength];
char sName[MAX_NAME_LENGTH];
GetClientAuthId(client, AuthId_Steam2, sSID, sizeof(sSID));
GetClientName(client, sName, sizeof(sName));
int size2 = 2 * strlen(sName) + 1;
char[] sEscapedName = new char[size2 + 1];
g_dDatabase.Escape(sName, sEscapedName, size2 + 1);
if (StrEqual(sSID, "STEAM_ID_STOP_IGNORING_RETVALS") || StrEqual(sSID, "STEAM_ID_PENDING"))
{
PrintToChat(client, "Your steam ID is not working, not updating timer");
return;
}
Format(sQuery, sizeof(sQuery), "INSERT INTO `zetimer_table` (`steam_auth`, `name`) VALUES ('%s', '%s') ON DUPLICATE KEY UPDATE `name` = '%s'", sSID, sEscapedName, sEscapedName);
DataPack hDataPack = new DataPack();
hDataPack.WriteString(sQuery);
g_dDatabase.Query(SQL_FinishedQuery, sQuery, hDataPack, DBPrio_High);
}
//----------------------------------------------------------------------------------------------------
@ -657,18 +645,27 @@ public void CheckTop(int client, int index, int autismstate)
Format(sQuery, sizeof(sQuery), "SELECT name, `%s` FROM `zetimer_table` WHERE `%s` != 0.000 ORDER BY LENGTH(`%s`) ASC, `%s` ASC LIMIT 10", g_cMapname, g_cMapname, g_cMapname, g_cMapname);
else
Format(sQuery, sizeof(sQuery), "SELECT name, `%sS%i` FROM `zetimer_table` WHERE `%sS%i` != 0.000 ORDER BY LENGTH(`%sS%i`) ASC, `%sS%i` ASC LIMIT 10", g_cMapname, index, g_cMapname, index, g_cMapname, index, g_cMapname, index);
g_dDatabase.Query(SQL_Select_Top_Callback, sQuery, GetClientSerial(client));
DataPack hDataPack = new DataPack();
hDataPack.WriteCell(GetClientSerial(client));
hDataPack.WriteString(sQuery);
g_dDatabase.Query(SQL_Select_Top_Callback, sQuery, hDataPack);
}
public void SQL_Select_Top_Callback(Database db, DBResultSet results, const char[] error, any data)
public void SQL_Select_Top_Callback(Database db, DBResultSet results, const char[] error, DataPack data)
{
if(!db || strlen(error))
ResetPack(data);
int client_serial = data.ReadCell();
if (!db || strlen(error))
{
LogError("Database error: %s", error);
return;
char sQuery[g_dLength];
data.ReadString(sQuery, sizeof(sQuery));
LogError("Query error 2: %s", error);
LogError("actual query: %s", sQuery);
return;
}
int iclient;
if ((iclient = GetClientFromSerial(data)) == 0)
if ((iclient = GetClientFromSerial(client_serial)) == 0)
return;
int l_iPosition;
char sTime[g_dLength];
@ -832,17 +829,14 @@ public Action cmd_timerCheckSelf(int client, int args)
public void deleteClientTime(char[] steam2, int stage)
{
char l_cQuery[g_dLength];
if (stage > 1)
{
int l_iZoneCount = unloze_zoneCount();
if (l_iZoneCount > 1)
Format(l_cQuery, sizeof(l_cQuery), "UPDATE `zetimer_table` SET `%sS%i` = '0.000' WHERE steam_auth = '%s'", g_cMapname, stage, steam2);
}
else
{
Format(l_cQuery, sizeof(l_cQuery), "UPDATE `zetimer_table` SET `%s` = '0.000' WHERE steam_auth = '%s'", g_cMapname, steam2);
g_dDatabase.Query(SQL_FinishedQuery, l_cQuery, _, DBPrio_High);
Format(l_cQuery, sizeof(l_cQuery), "UPDATE `zetimer_table` SET `%sS1` = '0.000' WHERE steam_auth = '%s'", g_cMapname, steam2);
}
g_dDatabase.Query(SQL_FinishedQuery_mute_error, l_cQuery, _, DBPrio_High);
DataPack hDataPack = new DataPack();
hDataPack.WriteString(l_cQuery);
g_dDatabase.Query(SQL_FinishedQuery, l_cQuery, hDataPack, DBPrio_High);
}
//----------------------------------------------------------------------------------------------------
// Purpose:
@ -861,7 +855,10 @@ public void Checkself(int client)
if (l_iZoneCount < 2)
{
Format(l_cQuery, sizeof(l_cQuery), "SELECT name, `%s` FROM `zetimer_table` WHERE steam_auth = '%s'", g_cMapname, l_cSID);
g_dDatabase.Query(SQL_CheckSelf, l_cQuery, GetClientSerial(client));
DataPack hDataPack = new DataPack();
hDataPack.WriteCell(GetClientSerial(client));
hDataPack.WriteString(l_cQuery);
g_dDatabase.Query(SQL_CheckSelf, l_cQuery, hDataPack);
}
else
CheckStagesOnMap(client, 1);
@ -875,24 +872,32 @@ public void CheckStageSelf(int client, int selection)
char l_cSID[g_dIndex];
GetClientAuthId(client, AuthId_Steam2, l_cSID, sizeof(l_cSID));
Format(l_cQuery, sizeof(l_cQuery), "SELECT name, `%sS%i` FROM `zetimer_table` WHERE steam_auth = '%s'", g_cMapname, selection, l_cSID);
g_dDatabase.Query(SQL_CheckSelf, l_cQuery, GetClientSerial(client));
DataPack hDataPack = new DataPack();
hDataPack.WriteCell(GetClientSerial(client));
hDataPack.WriteString(l_cQuery);
g_dDatabase.Query(SQL_CheckSelf, l_cQuery, hDataPack);
}
//----------------------------------------------------------------------------------------------------
// Purpose:
//----------------------------------------------------------------------------------------------------
public void SQL_CheckSelf(Database db, DBResultSet results, const char[] error, any data)
public void SQL_CheckSelf(Database db, DBResultSet results, const char[] error, DataPack data)
{
if(!db || strlen(error))
ResetPack(data);
int client_serial = data.ReadCell();
if (!db || strlen(error))
{
LogError("Database error: %s", error);
char sQuery[g_dLength];
data.ReadString(sQuery, sizeof(sQuery));
LogError("Query error 4: %s", error);
LogError("actual query: %s", sQuery);
return;
}
char sTime[g_dLength];
char l_cMessageContent[g_dLength];
char[] l_cPlayerName = new char[MAX_NAME_LENGTH];
int iclient;
if ((iclient = GetClientFromSerial(data)) == 0)
if ((iclient = GetClientFromSerial(client_serial)) == 0)
return;
if (results.RowCount && results.FetchRow())
{