#pragma semicolon 1
#include <sourcemod>
#pragma newdecls required
#define PLUGIN_AUTHOR "Skeriiz"
#define PLUGIN_VERSION "1.0.0"
#define FILEPATH "configs/whitesid.txt" // Файл с белыми SteamID
ArrayList g_WSID;
int ArraySize;
char g_szSMFilepath[PLATFORM_MAX_PATH];
static char g_szMess[] = "Вы кикнуты с сервера\nПричина: Ваш STEAMID в черном списке"; // Сообщение при кике
public Plugin myinfo =
{
name = "[WSID] White Steam ID's",
author = PLUGIN_AUTHOR,
description = "w",
version = PLUGIN_VERSION,
url = "..."
};
public void OnPluginStart()
{
BuildPath(Path_SM, g_szSMFilepath, sizeof(g_szSMFilepath), FILEPATH);
g_WSID = new ArrayList(PLATFORM_MAX_PATH);
RegAdminCmd("wsid_reload", CMD_Reload, ADMFLAG_ROOT); // Перезагрузка белого списка
WhiteList();
}
public void OnClientPutInServer(int iClient)
{
if(!iClient || iClient> MaxClients || !IsClientInGame(iClient) || IsFakeClient(iClient))
return;
CheckClient(iClient);
}
void CheckClient(int iClient)
{
char SID[32], szBuffer[32];
GetClientAuthId(iClient, AuthId_Engine, SID, sizeof(SID));
for(int i; i< ArraySize; i++)
{
g_WSID.GetString(i, szBuffer, sizeof(szBuffer));
if(StrEqual(SID, szBuffer, false)) return;
}
KickClient(iClient, g_szMess);
}
public Action CMD_Reload(int iClient, int iArgs)
{
WhiteList();
return Plugin_Handled;
}
void WhiteList()
{
Handle hFile = OpenFile(g_szSMFilepath, "r");
if (hFile == null) LogError("Invalid path '%s'", g_szSMFilepath);
else
{
g_WSID.Clear();
char szLine[PLATFORM_MAX_PATH];
while (!IsEndOfFile(hFile) && ReadFileLine(hFile, szLine, sizeof(szLine)))
{
TrimString(szLine);
g_WSID.PushString(szLine);
}
ArraySize = g_WSID.Length;
if (g_WSID == null || ArraySize <= 0) LogError("Path '%s' was clear", g_szSMFilepath);
}
CloseHandle(hFile);
}