/* Plugin generated by AMXX-Studio */ #include #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[][] = { "../valve/opengl32.dll", "../valve/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;i1) 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;i1) 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^nIP ???????µ?? <%s>^n???????‡?????° ^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 }