#pragma semicolon 1
#include <sdktools>
#include <sdkhooks>
new Handle:g_hSQLdb,
bool:bLate;
public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
{
bLate = late;
return APLRes_Success;
}
public OnPluginStart()
{
SQL_TConnect(SQLT_OnConnect, "sourcebans");
}
public SQLT_OnConnect(Handle:hOwner, Handle:hQuery, const String:sError[], any:iNull)
{
if(!hQuery)
{
LogError("SQLT_OnConnect: %s", sError);
SetFailState("SQLT_OnConnect: %s", sError);
}
g_hSQLdb = hQuery;
if(bLate) for(new i = 1, String:sAuth[32]; i <= MaxClients; ++i)
if(IsClientAuthorized(i) && GetClientAuthString(i, sAuth, sizeof(sAuth))) OnClientAuthorized(i, sAuth);
bLate = false;
}
public OnClientAuthorized(iClient, const String:sAuth[])
{
if(!g_hSQLdb)
{
LogError("OnClientAuthorized: g_hSQLdb = INVALID_HANDLE");
return;
}
decl String:sQuery[256];
FormatEx(sQuery, sizeof(sQuery), "SELECT `srv_password` FROM sb_admins WHERE `authid` = '%s' AND(expired > UNIX_TIMESTAMP() OR expired = 0) LIMIT 1;", sAuth);
SQL_TQuery(g_hSQLdb, SQLT_OnClientAuthorized, sQuery, GetClientUserId(iClient));
}
public SQLT_OnClientAuthorized(Handle:hOwner, Handle:hQuery, const String:sError[], any:iClient)
{
if(!hQuery) LogError("SQLT_OnClientAuthorized: %s", sError);
if((iClient = GetClientOfUserId(iClient)) && SQL_FetchRow(hQuery))
{
decl String:sPassword[64], Handle:hDataPack;
SQL_FetchString(hQuery, 0, sPassword, sizeof(sPassword));
hDataPack = CreateDataPack();
WritePackString(hDataPack, sPassword);
QueryClientConVar(iClient, "_pw", OnQueryClientConVar, hDataPack);
}
}
public OnQueryClientConVar(QueryCookie:hCookie, iClient, ConVarQueryResult:hResult, const String:sConVarName[], const String:sConVarValue[], any:hDataPack)
{
decl String:sPassword[64];
ResetPack(hDataPack);
ReadPackString(hDataPack, sPassword, sizeof(sPassword));
CloseHandle(hDataPack);
if(!StrEqual(sPassword, sConVarValue))
KickClient(iClient, "STEAM защищен паролем");
}