#include <sourcemod>
#define SQL_DatabaseName "Table_JoinCounter"
new Handle:hDataBase = INVALID_HANDLE;
public Plugin:myinfo =
{
name = "Join Count",
author = "The End Is Near...",
version = "1.0",
url = "http://world-source.ru/"
};
public OnPluginStart()
{
decl String:error[1024];
hDataBase = SQLite_UseDatabase(SQL_DatabaseName, error, sizeof(error));
if (hDataBase == INVALID_HANDLE)
{
SetFailState("Ошибка подключения к базе данных. Имя базы данных: '%s'|| Ошибка: %s", SQL_DatabaseName, error);
}
else
{
Format(error, sizeof(error), "CREATE TABLE IF NOT EXISTS %s ('Table_ClientSteamID' varchar (256), Table_ClientJoinCount int (20), PRIMARY KEY ('Table_ClientSteamID'));", SQL_DatabaseName);
if (!SQL_FastQuery(hDataBase, error))
{
if (SQL_GetError(hDataBase, error, sizeof(error)))
{
SetFailState("Ошибка создания таблицы. Ошибка: %s", error);
}
}
}
}
public OnClientAuthorized(client, const String:auth[])
{
if (!IsFakeClient(client))
{
decl String:query[1024];
Format(query, sizeof(query), "SELECT Table_ClientCountJoin FROM %s WHERE Table_ClientSteamID = '%s';", SQL_DatabaseName, auth);
SQL_TQuery(hDataBase, SQL_ConnectPlayer, query, client);
}
}
public SQL_ConnectPlayer(Handle:owner, Handle:hndl, const String:error[], any:data)
{
if (hndl == INVALID_HANDLE)
{
LogError("Не удалось выполнить запрос. Ошибка: %s", error);
}
else
{
decl String:SteamID[40];
if (GetClientAuthString(data, SteamID, sizeof(SteamID)))
{
decl count;
if (SQL_FetchRow(hndl))
{
count = SQL_FetchInt(hndl, 0) + 1;
decl String:query[1024];
Format(query, sizeof(query), "UPDATE %s SET Table_ClientJoinCount = %d WHERE Table_ClientSteamID = '%s';", SQL_DatabaseName, count, SteamID);
if (!SQL_FastQuery(hDataBase, query))
{
if (SQL_GetError(hDataBase, query, sizeof(query)))
{
LogError("Не сохранить данные. Ошибка: %s", query);
}
}
}
else
{
decl String:query[1024];
Format(query, sizeof(query), "INSERT INTO %s ('Table_ClientSteamID', Table_ClientJoinCount) VALUES ('%s', 0);", SQL_DatabaseName, SteamID);
if (!SQL_FastQuery(hDataBase, query))
{
if (SQL_GetError(hDataBase, query, sizeof(query)))
{
LogError("Не удалось создать игрока Ошибка: %s", query);
}
}
count = 1;
}
PrintToChatAll("\x01Игрок \x04%N \x01(\x04%s\x01) заходил \x04%d \x01раз", data, SteamID, count);
}
}
}