#include <sourcemod>
#include <sdktools>
#pragma semicolon 1
#pragma newdecls required
#define PLUGIN_VERSION "1.00"
Database hDatabase = null;
public Plugin myinfo =
{
name = "",
author = "DiogoOnAir",
description = "",
version = PLUGIN_VERSION,
url = "https://steamcommunity.com/id/diogo218dv"
};
public void OnPluginStart()
{
RegAdminCmd("sm_changename", Cmd_ChangeName, ADMFLAG_GENERIC);
ConnectDB();
}
public void OnClientPostAdminCheck(int client)
{
char g_Query[512];
char steamid[512];
GetClientAuthId(client, AuthId_Steam2, steamid, sizeof(steamid));
FormatEx(g_Query, 512, "SELECT name FROM changename_playerdata WHERE steamid='%s';", steamid);
hDatabase.Query(GetName_Callback, g_Query, GetClientUserId(client), DBPrio_Normal);
}
public Action Cmd_ChangeName(int client, int args)
{
if(args < 2)
{
ReplyToCommand(client, "Command usage : !changename <userid> <name>");
return Plugin_Handled;
}
char Value[8];
GetCmdArg(1, Value,
;
int client2 = GetClientOfUserId(StringToInt(Value));
if(IsValidClient(client2))
{
char g_Query[512];
char steamid[32];
char name[64];
GetCmdArg(2, name, 64);
GetClientAuthId(client, AuthId_Steam2, steamid, 32);
SetClientName(client, name);
FormatEx(g_Query, 512, "INSERT INTO changename_playerdata(steamid, name) VALUES('%s', '%s');", steamid, name);
hDatabase.Query(Basic_Callback, g_Query, GetClientUserId(client), DBPrio_Normal);
}
else
{
ReplyToCommand(client, "ERROR : Invalid Userid");
}
return Plugin_Continue;
}
void ConnectDB()
{
if (hDatabase != null)
{
delete hDatabase;
}
char g_Error[255];
if (SQL_CheckConfig("ChangeName"))
{
hDatabase = SQL_Connect("ChangeName", true, g_Error, 255);
if (hDatabase == null)
{
SetFailState("[ChangeName] Error on start. Reason: %s", g_Error);
}
}
else
{
SetFailState("[ChangeName] Cant find `ChangeName` on database.cfg");
}
char g_Query[512];
FormatEx(g_Query, 512, "CREATE TABLE IF NOT EXISTS `changename_playerdata` (`steamid` VARCHAR(32) NOT NULL, `name` VARCHAR(64) NOT NULL, PRIMARY KEY (`steamid`))");
hDatabase.Query(Basic_Callback, g_Query, DBPrio_Normal);
}
public void Basic_Callback(Database db, DBResultSet results, const char[] error, any data)
{
if(db == null || results == null)
{
LogError("Error on Basic CallBack: %s", error);
return;
}
}
public void GetName_Callback(Database db, DBResultSet results, const char[] error, any data)
{
if (!results.FetchRow())
{
return;
}
else
{
char name[64];
int client = GetClientOfUserId(data);
results.FetchString(0, name, 64);
SetClientName(client, name);
}
}
stock bool IsValidClient(int client, bool nobots = true)
{
if (client <= 0 || client > MaxClients || !IsClientConnected(client) || (nobots && IsFakeClient(client)))
{
return false;
}
return IsClientInGame(client);
}