Версия: 1.4
Описание:
Плагин предназначен для отлова игроков с OpenGl
плагин обнаруживает 2 вида OpenGl, обычный и мультихак
Файлы opengl32.dll и opengl32_2.dll закинуть в папку cstrike/
Писать мне о том, что он не актуален что есть маздановский и тд не надо, возможно кому-нибудь понадобится бесплатный....
- Код: Выделить всё
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#define PLUGIN "*Anti Illusion*: OpenGl32 Detect"
#define VERSION "1.4"
#define AUTHOR "ReVKa"
#define LOG_FILE "addons/amxmodx/logs/Opengls.log"
static bool: contains[33] = false;
static bool: in_restart = false
static g_cvar[5];
new OpenGl_File[][] =
{
"../cstrike/opengl32.dll",
"../cstrike/opengl32_2.dll",
"../opengl32.dll"
}
public plugin_precache()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_cvar[0] = register_cvar("ai_opengl_work","1")
g_cvar[1] = register_cvar("ai_opengl_logs","1")
g_cvar[2] = register_cvar("ai_opengl_logs_level","2")
g_cvar[3] = register_cvar("ai_opengl_punish","kick #%uid% OpenGL_Hack;wait;addip 1440 %ip%;wait;writeip")
g_cvar[4] = register_cvar("ai_opengl_hudmessage","1")
//g_cvar[5] = register_cvar("ai_opengl_next_punish","addip 1440 %ip%;wait;writeip")
//g_cvar[6] = register_cvar("ai_opengl_next_punish_time","15.0")
server_cmd("mp_consistency ^"1^"")
server_cmd("exec addons/amxmodx/configs/opengl_config.cfg")
if(!get_pcvar_num(g_cvar[0]))
return PLUGIN_HANDLED_MAIN;
for(new i = 2;i<sizeof( OpenGl_File );i++)
{
if(file_exists(OpenGl_File[i]))
{
static sBuff[34]
md5_file(OpenGl_File[i],sBuff)
static ip[25]
get_user_ip(0,ip,24)
static Times[32]
get_time("%d.%m.%Y - %H:%M:%S",Times,31)
static filesizes;
filesizes= filesize(OpenGl_File[i])
static files
for(new j = 0;j<2;j++)
{
files = filesize(OpenGl_File[j])
if(files == filesizes)
log_amx("[*Ai* CheckFiles] File Size %s",files)
else
{
if(get_pcvar_num(g_cvar[2]) >1) PrintMessage(" File <%s> will be replace [File Replace %s]",OpenGl_File[i],OpenGl_File[j])
static error[64]
if(file_copy(OpenGl_File[j],OpenGl_File[i],error,63,true))
{
if(get_pcvar_num(g_cvar[2]) >1) PrintMessage("Success Copy Opengl File <%s>",OpenGl_File[j])
}
else
if(get_pcvar_num(g_cvar[2]) >1) PrintMessage(error)
}
}
PrintMessage(" ** File Checker is enabled on Server <%s> Date <%s>",ip,Times)
PrintMessage(" ** Main File <%s> exists MD5 <%s>",OpenGl_File[i],sBuff)
force_unmodified(force_exactfile, {0,0,0},{0,0,0}, OpenGl_File[i])
}
if(!file_exists(OpenGl_File[i]) && file_exists(OpenGl_File[0]))
{
if(get_pcvar_num(g_cvar[2]) >2) PrintMessage(" File <%s> not exists, search from file <%s>",OpenGl_File[i],OpenGl_File[0])
static error[64]
if(file_copy(OpenGl_File[0],OpenGl_File[i],error,63,true))
{
if(get_pcvar_num(g_cvar[2]) >1) PrintMessage("Success Copy Opengl File to Dir <%s>",OpenGl_File[i])
in_restart = true
}
else
if(get_pcvar_num(g_cvar[2]) >1) PrintMessage(error)
}
else if(!file_exists(OpenGl_File[i]) && !file_exists(OpenGl_File[0]))
{
if(get_pcvar_num(g_cvar[2]) >1) PrintMessage(" Warning! Main File <%s> and Reserve File <%s> not exists, PLUGIN is LOCK",OpenGl_File[i],OpenGl_File[0])
set_fail_state("Warning! Main File and Reserve File not exists, PLUGIN is LOCK(Check Logs)")
}
}
return PLUGIN_CONTINUE;
}
public PrintMessage(const szMessage[], any:...)
{
if(!get_pcvar_num(g_cvar[1]))
return;
static szMsg[256];
vformat(szMsg, charsmax(szMsg), szMessage, 2);
log_to_file(LOG_FILE,"[*Ai* CheckFiles] %s",szMsg)
server_print("[*Ai* CheckFiles] %s",szMsg)
return;
}
public plugin_init()
{
if(in_restart)
{
if(get_pcvar_num(g_cvar[2]) >2) PrintMessage(" Need To Restart Server,5 seconds to restart")
set_task(5.0,"RestartFunction")
}
}
public RestartFunction()
{
PrintMessage("Restart Now in 0 seconds")
server_cmd("restart")
}
public inconsistent_file(id, const filename[], reason[64])
{
for(new i = 1;i<sizeof( OpenGl_File );i++)
{
static file[32]
copy(file,31,OpenGl_File[i])
replace_all(file,31,"../", "")
if(containi(filename,file))
{
static name[25]
get_user_name(id,name,24)
static authid[25]
get_user_authid(id,authid,24)
if(get_pcvar_num(g_cvar[2]) >1) PrintMessage(" Player %s <%s> not has a file %s",name,authid,filename)
contains[id] = true;
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public client_putinserver(id)
{
if ((is_user_hltv(id)) || (is_user_bot(id)))
return PLUGIN_CONTINUE
set_task(random_float(5.0,10.0), "check_file", id+33)
return PLUGIN_CONTINUE
}
public client_connect(id)
contains[id] = false;
public check_file(id)
{
id -=33
new s_Name[32],s_IP[32]
get_user_ip(id, s_IP, 31, 1)
get_user_name(id, s_Name, sizeof(s_Name)-1)
if(!contains[id])
{
static g_cvars[25]
get_pcvar_string(g_cvar[3],g_cvars,24)
static uid[5]
num_to_str(get_user_userid(id),uid,4)
replace_all(g_cvars,24,"%ip%", s_IP)
replace_all(g_cvars,24,"%uid%", uid)
for(new j = 0;j<get_maxplayers();j++)
{
if(j!=id)
{
if(get_pcvar_num(g_cvar[4]))
{
set_hudmessage(200,100, 50, 0.05, 0.30, 0, 0.5, 6.0, 1.0,1.0,3)
show_hudmessage(j,"========================^nOpenGL32 Детектор^nРРіСЂРѕРє: <%s>^nIP Адрес <%s>^nПричина <OpenGL32 Detect>^n========================", s_Name,s_IP)
}
//ColorPrint(j," ^4%s ^1(^3%s^1) использует ^4 OpenGL32 Hack^1, он ^3был наказан^1 за это",s_Name,s_IP)
}
}
server_print("[SERVER] %s",g_cvars)
server_cmd(g_cvars)
PrintMessage(" OpenGL File detected on Player %s <%s>",s_Name,s_IP)
}
return PLUGIN_CONTINUE
}
stock bool:file_copy(SOURCE[], TARGET[], error[], const ERRORLEN, const bool:REPLACE_TARGET = false) {
if (!file_exists(SOURCE)) {
format(error, ERRORLEN, "File copy error: Source ^"%s^" doesn't exist!", SOURCE)
return false
}
if (!REPLACE_TARGET && file_exists(TARGET)) {
format(error, ERRORLEN, "File copy error: Target ^"%s^" exists!", TARGET)
return false
}
new source = fopen(SOURCE, "rb")
if (!source) {
format(error, ERRORLEN, "File copy error: Opening source ^"%s^" failed!", SOURCE)
return false
}
new target = fopen(TARGET, "wb")
if (!target) {
format(error, ERRORLEN, "File copy error: Opening target ^"%s^" failed!", TARGET)
fclose(source)
return false
}
for (new buffer, eof = feof(source); !eof; !eof && fputc(target, buffer)) {
buffer = fgetc(source)
eof = feof(source)
}
fclose(source)
fclose(target)
return true
}
Настройки:
// *Ai* OpenGL Detector 1.0 (Author - ReVKa)
//Модуль обнаруженияя opengl32 является дополнением к модулю защиты сервера amxmodx
// [RU] Расположение Файла $moddir/addons/amxmodx/configs/opengl_config.cfg
// [EN] File Location $moddir/addons/amxmodx/configs/opengl_config.cfg
echo [*Ai* OpenGl] Start Load config File
// [RU] Работа Плагина: 1 - включить, 0 - выключить
// [EN] Plugin Work: 1 - enable, 0 - disable
ai_opengl_work "1"
// [RU] Логи плагина: 1 - включить, 0 - выключить
// [EN] Plugin Logs: 1 - enable, 0 - disable
ai_opengl_logs "1"
// [RU] Уровень логов: от 1 до 3
// [EN] Level of Logs: from 1 to 3
ai_opengl_logs_level "1"
// [RU] Введите наказание при обнаружении у игрока чита
// [EN] Write Punish for player if detected cheat
// [RU] Пример ai_opengl_punish "addip 1440 %ip%" или "amx_ban 1440 %uid% ^"Opengl Hack^""
// [EN] Example ai_opengl_punish "addip 1440 %ip%" or "amx_ban 1440 %uid% ^"Opengl Hack^""
ai_opengl_punish "stc_ban 1440 #%uid% OpenGL_Hack"
// [RU] Показывать ли hud при обнаружении чита
// [EN] Write Hud if detected cheat
ai_opengl_hudmessage "1"