Код:
#include <amxmodx>
#define PLUGIN "Another Spambot Blocker"
#define VERSION "1.0"
#define AUTHOR "Metal Messiah"
new bool:can_say[33]
new join_time[33]
new spamcount[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say","check_say")
}
public client_authorized(id)
{
join_time[id]=get_systime(0);
spamcount[id]=0;
new s_hlproxy1[32],s_hlproxy2[32],s_hlproxy3[32]
get_user_info(id, "_ip", s_hlproxy1, charsmax(s_hlproxy1))
get_user_info(id, "_cmd", s_hlproxy2, charsmax(s_hlproxy2))
get_user_info(id, "-cmd", s_hlproxy3, charsmax(s_hlproxy3))
if (!equal(s_hlproxy1, "") || !equal(s_hlproxy2, "") || !equal(s_hlproxy3, ""))
{
new uip[17],userauthid[32],username[32],time[32];
get_user_ip(id,uip,16,1);
get_user_authid(id, userauthid, 31);
get_user_name(id, username, 31);
format_time(time, sizeof(time) - 1, "%Y-%m-%d %H:%M:%S");
server_cmd("addip 60.0 %s",uip)
//log_to_file("hlproxy.log","%s %s %s %s %s %s %s",time,uip,userauthid,username,s_hlproxy1,s_hlproxy2,s_hlproxy3);
//amx_banip
//server_cmd("kick #%d NoHLProxyOnTheServer", get_user_userid(id))
}
if (get_user_flags(id) & ADMIN_LEVEL_H)
{
can_say[id]=true;
}
return PLUGIN_CONTINUE
}
public client_disconnect(id)
{
can_say[id]=false;
join_time[id]=0;
spamcount[id]=0;
}
public check_say(id)
{
//проверка времени разовая, булевые теоретически быстрее работают...
if (!can_say[id]) if((get_systime(0)-join_time[id]) > 30) can_say[id]=true;
//если писать можно
if(can_say[id])
{ //проверяем контент
new args[64];
read_args(args, 63);
remove_quotes(args);
if (
(contain(args, "1slot") != -1) || (contain(args, "Free Vip") != -1) ||
(contain(args, "Free Admin") != -1) || (contain(args, "Connect ") != -1) ||
(contain(args, "New IP") != -1) || (contain(args, "CoNNect ") != -1) ||
(contain(args, "Free") != -1) || (contain(args, " FREE ") != -1) ||
(contain(args, "3AXODITE") != -1) || (contain(args, "3AXODUTE") != -1) )
{
client_print(id,print_chat,"[ANTISPAM] Suge pula!");
spamcount[id]++;
if (spamcount[id]>2)
{
client_cmd(id,"bind b ^"buy^"");
client_cmd(id,"bind o ^"buyequip^"");
new uip[17],userauthid[32],username[32],time[32];
get_user_ip(id,uip,16,1);
get_user_authid(id, userauthid, 31);
get_user_name(id, username, 31);
format_time(time, sizeof(time) - 1, "%Y-%m-%d %H:%M:%S");
log_to_file("spambot_clear.log","%s %s %s %s |%s",time,uip,userauthid,username,args);
if (spamcount[id]>5)
{
server_cmd("kick #%d SPAMER", get_user_userid(id))
server_cmd("addip %f %s;wait;writeip",1440,uip)
}
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
} else
{
new args[64];
read_args(args, 63);
remove_quotes(args);
new uip[17],userauthid[32],username[32],time[32];
get_user_ip(id,uip,16,1);
get_user_authid(id, userauthid, 31);
get_user_name(id, username, 31);
format_time(time, sizeof(time) - 1, "%Y-%m-%d %H:%M:%S");
//ТУТ НЕ БАНИТЬ НИ В КОЕМ СЛУЧАЕ! часто попадают vsem privet
log_to_file("spambot.log","%s %s %s %s |%s",time,uip,userauthid,username,args);
client_print(id,print_chat,"[ANTISPAM] 30 SECONDS OF SILENCE!")
return PLUGIN_HANDLED;
}
}
Отредактировал: Energy, - 28.4.2017, 7:30