#include <amxmodx>
#include <fakemeta>
#define PLUGIN "XCLIENT DETECTOR"
#define VERSION "5.1"
#define AUTHOR "HackForums.Ru"
//Квары
new xvi_time, xvi_onlylog, xvi_reason, xvi_dp_steam, xvi_debug;
new ms[33], warns[33];
new gFrameTime[33][2]
new szWarns[33],szChecks[33],szCheck[33];
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR);
register_forward(FM_CmdStart, "cmdStart");
xvi_time = register_cvar("xvi_time","-1");//Время бана или -1 кик
xvi_onlylog = register_cvar("xvi_onlylog","0");//Только лог
xvi_reason = register_cvar("xvi_reason","Server is full.");//Причина
xvi_dp_steam = register_cvar("xvi_dp_steam","2");//Фикс стима
xvi_debug = register_cvar("xvi_debug","0");//Логирование всех игроков
}
public client_putinserver(id) {
ms[id]=0;//Обнуляем счетчик
if(task_exists(id)) {
remove_task(id);
}
set_task(0.1,"check",id,"",0,"b");//Добавляем таймер
}
public check(id){
ms[id]++;
if(get_user_team(id)==1||get_user_team(id)==2||get_user_team(id)==3){//Игрок выбрал команду
remove_task(id);//Удаляем таймер
//server_print("MS: %d",ms[id])
if(ms[id]<16){
warns[id]++;
}
if(szWarns[id]>6){//Если больше 7 варнов при проверке фпс
warns[id]++;
}
if(warns[id]>=2){
fake_ban(id);
}
}
}
public client_connect(id){
szWarns[id]=0;
szChecks[id]=0;
szCheck[id]=0;
warns[id]=0;
}
public cmdStart(id,uc_handle,seed){
if(is_user_connected(id)&&szChecks[id]<11){//Если нету 10 проверок
szChecks[id]++;//+1 проверка
//Чек фпс
gFrameTime[id][1] = gFrameTime[id][0];
gFrameTime[id][0] = get_uc(uc_handle, UC_Msec);
if(gFrameTime[id][0]<17&&gFrameTime[id][0]>14){
szWarns[id]++
}
}
}
public fake_ban(id){
new szName[255],szIP[255],szReason[255];
get_user_ip(id,szIP,254,0);
get_user_name(id,szName,254);
get_pcvar_string(xvi_reason,szReason,254);
//Проверка на стим
new steam = 0;
server_cmd("dp_clientinfo %d",id);
if(get_cvar_num("dp_r_id_provider")==get_pcvar_num(xvi_dp_steam)){
steam = 1;
}
if(get_pcvar_num(xvi_debug)==1) {
log_to_file("Bitches.txt","[DBG] NAME: %s | IP: %s (%d.%d.%d.%d)",szName,szIP,warns[id],ms[id],szWarns[id],steam);
}else{
log_to_file("Bitches.txt","NAME: %s | IP: %s",szName,szIP);
if(!get_pcvar_num(xvi_onlylog)==1&&get_pcvar_num(xvi_time)<0&&steam==0){
server_cmd("kick #%d ^"%s^"",get_user_userid(id),szReason);
}else{
server_cmd("addip %d %s",get_pcvar_num(xvi_time),szIP);
}
}
}