should be able to whitelist nosteamers through DB simply

This commit is contained in:
Christian 2020-12-18 23:07:18 +01:00
parent 15c63febe2
commit aebf588588

View File

@ -10,6 +10,7 @@
#include <sourcemod>
#include <sdktools>
public Plugin myinfo =
{
name = "nosteam bhop blocker",
@ -22,9 +23,11 @@ public Plugin myinfo =
bool bhop_restricted_nosteamer[MAXPLAYERS + 1];
int buttons_old[MAXPLAYERS + 1];
int flags_old[MAXPLAYERS + 1];
Database g_dDatabase;
public void OnPluginStart()
{
SQL_StartConnection();
for (int i = 1; i <= MAXPLAYERS; i++)
{
if (IsValidClient(i))
@ -32,6 +35,32 @@ public void OnPluginStart()
}
}
public void OnMapStart()
{
SQL_StartConnection();
}
public void SQL_StartConnection()
{
char error[512];
if (SQL_CheckConfig("bhopnosteam"))
g_dDatabase = SQL_Connect("bhopnosteam", true, error, sizeof(error));
if (g_dDatabase == null)
{
PrintToChatAll("{green}[UNLOZE] {white}Error! Could not connect to MYSQL-DB!");
}
//create table
char sQuery[512];
Format(sQuery, sizeof(sQuery), "CREATE TABLE IF NOT EXISTS bhop_whitelist (`steam_auth` VARCHAR(254) NOT NULL, `name` VARCHAR(254) NOT NULL, PRIMARY KEY (`steam_auth`))");
SQL_TQuery(g_dDatabase, DummyCallbackSimple, sQuery);
}
public void DummyCallbackSimple(Handle hOwner, Handle hChild, const char[] err, DataPack pack1)
{
if (hOwner == null || hChild == null)
LogError("Query error. (%s)", err);
}
stock bool IsValidClient(int client)
{
if (client > 0 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client))
@ -53,6 +82,25 @@ public void OnClientPostAdminCheck(int client)
bhop_restricted_nosteamer[client] = true;
buttons_old[client] = 0;
flags_old[client] = 0;
if (g_dDatabase)
{
DBResultSet rs;
char steam_auth[512];
GetClientAuthId(client, AuthId_Steam2, steam_auth, sizeof(steam_auth));
strcopy(steam_auth, sizeof(steam_auth), steam_auth[8]);
char sQuery[512];
Format(sQuery, sizeof(sQuery), "SELECT * FROM bhop_whitelist WHERE steam_auth = '%s'", steam_auth);
if ((rs = SQL_Query(g_dDatabase, sQuery)) != null)
{
rs.FetchRow();
if (rs.RowCount > 0)
{
bhop_restricted_nosteamer[client] = false;
PrintToChat(client, "bhop unrestricted!");
}
}
delete rs;
}
}
}
@ -83,9 +131,7 @@ public void OnPlayerRunCmdPost(int client, int buttons, int impulse, const float
velocity_block[2] = vel[2];
velocity_block[1] = 0.0;
if (fVelocity > 320.0)
{
TeleportEntity(client, NULL_VECTOR, NULL_VECTOR, velocity_block);
}
buttons_old[client] = buttons;
}