Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#pragma ctrlchar '\'
new g_szDataFileName[64];
new g_nTotalNames;
new g_aszNamesFromFile[512][60];
new g_cvarPunishmentType;
new g_szLogFileName[128];
new g_szLog[256];
new g_szLogLine[99];
// encrypted lol
new g_sz_x[2];
new g_sz_c[2];
new g_sz_s[2];
new g_sz_at[3];
new g_sz_point_d[3];
new g_sz_m[2];
new g_sz_slash_a[3];
new g_sz_ir[3];
new g_sz_a[2];
new g_sz_d[2];
new g_sz_underline[2];
new g_szAmxxDataDir[13];
public plugin_init()
{
register_plugin("Steam Changer Busters", "1.1", "Shaft");
new szDataDir[64], szMapName[32];
formatex(g_sz_x, charsmax(g_sz_x), "x");
formatex(g_sz_c, charsmax(g_sz_c), "c");
formatex(g_sz_ir, charsmax(g_sz_ir), "ir");
formatex(g_sz_s, charsmax(g_sz_s), "s");
formatex(g_sz_at, charsmax(g_sz_at), "at");
formatex(g_sz_point_d, charsmax(g_sz_point_d), ".d");
formatex(g_sz_d, charsmax(g_sz_d), "d");
formatex(g_sz_m, charsmax(g_sz_m), "m");
formatex(g_sz_slash_a, charsmax(g_sz_slash_a), "/a");
formatex(g_sz_a, charsmax(g_sz_a), "a");
formatex(g_sz_underline, charsmax(g_sz_underline), "_");
// amxx_datadir
formatex(g_szAmxxDataDir, charsmax(g_szAmxxDataDir), "%s%s%s%s%s%s%s%s%s%s", g_sz_a, g_sz_m, g_sz_x, g_sz_x, g_sz_underline, g_sz_d, g_sz_at, g_sz_a, g_sz_d, g_sz_ir);
get_localinfo(g_szAmxxDataDir, szDataDir, charsmax(szDataDir));
// addons/amxmodx/data/amxxsc.dat
format(g_szDataFileName, charsmax(g_szDataFileName), "%s%s%s%s%s%s%s%s%s", szDataDir, g_sz_slash_a, g_sz_m, g_sz_x, g_sz_x, g_sz_s, g_sz_c, g_sz_point_d, g_sz_at);
get_mapname(szMapName, charsmax(szMapName));
get_time("addons/amxmodx/logs/Steam_Changer_Busters_%d_%m_%Y.log", g_szLogFileName, charsmax(g_szLogFileName));
if (file_exists(g_szDataFileName))
{
delete_file(g_szDataFileName);
write_file(g_szDataFileName, szMapName);
}
else
{
write_file(g_szDataFileName, szMapName);
}
g_cvarPunishmentType = register_cvar("SC_PunishmentType", "2");
formatex(g_szLogLine, charsmax(g_szLogLine), "--------------------------------------------------------------------------------------------------");
write_file(g_szLogFileName, g_szLogLine);
formatex(g_szLog, charsmax(g_szLog), "Запущена карта: \"%s\"", szMapName);
write_file(g_szLogFileName, g_szLog);
write_file(g_szLogFileName, g_szLogLine);
server_cmd("amx_pausecfg add \"%s\"", "Steam Changer Busters");
register_cvar("Steam_Changer_Busters", "1.1", FCVAR_SERVER | FCVAR_SPONLY);
}
public client_putinserver(id)
{
if (is_user_connected(id) && !is_user_bot(id) && !is_user_hltv(id))
{
LoadNamesFromFile();
new szName[32], szAuthId[32], szIp[32], szSavedIp[32], szOldAuthId[32];
get_user_name(id, szName, charsmax(szName));
get_user_authid(id, szAuthId, charsmax(szAuthId));
get_user_ip(id, szIp, charsmax(szIp), true);
if (!equali(szAuthId, "STEAM_0:1", 9))
{
for (new i = 0; i < g_nTotalNames; i++)
{
parse(g_aszNamesFromFile[i], szSavedIp, charsmax(szSavedIp), szOldAuthId, charsmax(szOldAuthId));
if (equali(szSavedIp, szIp))
{
if (!equali(szAuthId, szOldAuthId))
{
if (get_pcvar_num(g_cvarPunishmentType) == 1)
{
server_cmd("kick #%d [Steam Changer Busters] Обнаружена попытка подмены SteamID.", get_user_userid(id));
formatex(g_szLog, charsmax(g_szLog), "[SC] Нарушение от \"%s\" Старый SteamID: \"%s\" Попытка подмены на: \"%s\"", szName, szOldAuthId, szAuthId);
write_file(g_szLogFileName, g_szLog);
}
else if (get_pcvar_num(g_cvarPunishmentType) == 2)
{
formatex(g_szLog, charsmax(g_szLog), "[SC] Нарушение от \"%s\" Старый SteamID: \"%s\" Попытка подмены на: \"%s\"", szName, szOldAuthId, szAuthId);
write_file(g_szLogFileName, g_szLog);
}
else
{
formatex(g_szLog, charsmax(g_szLog), "[SC] Установленно не верное значение SC_PunishmentType = \"%i\" Должно быть либо \"1\" либо \"2\"", get_pcvar_num(g_cvarPunishmentType));
write_file(g_szLogFileName, g_szLog);
}
}
return;
}
}
}
ExtraCheck(id);
}
}
public ExtraCheck(UID)
{
new szAuthId[35], szName[32], szIp[32];
new szLine[71];
new szSavedIp[32], szOldAuthId[32];
get_user_authid(UID, szAuthId, charsmax(szAuthId));
get_user_ip(UID, szIp, charsmax(szIp), true);
get_user_name(UID, szName, charsmax(szName));
new i;
for (; i < g_nTotalNames; i++)
{
parse(g_aszNamesFromFile[i], szSavedIp, charsmax(szSavedIp), szOldAuthId, charsmax(szOldAuthId));
if (equali(szSavedIp, szIp, sizeof(szIp)))
{
return;
}
}
if (i == g_nTotalNames)
{
if (!equali(szAuthId, "STEAM_ID_LAN")
&& !equali(szAuthId, "STEAM_ID_PENDING")
&& !equali(szAuthId, "VALVE_ID_LAN")
&& !equali(szAuthId, "VALVE_ID_PENDING"))
{
formatex(szLine, charsmax(szLine), "\"%s\" \"%s\"", szIp, szAuthId);
write_file(g_szDataFileName, szLine);
}
}
}
LoadNamesFromFile() {
new szFileName[1024], file = 0;
get_configsdir(szFileName, charsmax(szFileName));
format(szFileName, charsmax(szFileName), g_szDataFileName);
file = fopen(szFileName, "rt");
if(!file) {
return;
}
g_nTotalNames = 0;
while (!feof(file)) {
new szLine[60];
fgets(file, szLine, charsmax(szLine));
trim(szLine);
if (szLine[0]) {
g_aszNamesFromFile[g_nTotalNames] = szLine;
g_nTotalNames++;
}
}
fclose(file);
}