#include <amxmodx>
#include <sockets>
#define SITE "/?act=api&plain=1&getUser="
#define HOST "by.api.fastcup.net"
#define PLUGIN "New fastban"
#define VERSION "1.0"
#define AUTHOR "smoke(BLR)"
#define REASON "Забанен на fastcup по топику"
#define REASON2 "Забанен на fastcup"
#define TIME "10080"
new g_Socket;
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
}
public client_authorized(id){
new iError, szSendBuffer[512], steam[35]
get_user_authid(id, steam, 34)
if(is_user_steam(id)){
g_Socket = socket_open(HOST, 80, 1, iError)
switch (iError)
{
case 1:
{
log_to_file("addons/amxmodx/logs/fastban.log","Невозможно создать сокет.")
return ;
}
case 2:
{
log_to_file("addons/amxmodx/logs/fastban.log","Невозможно подключиться к хосту.")
return ;
}
case 3:
{
log_to_file("addons/amxmodx/logs/fastban.log","Невозможно подключиться к HTTP порту.")
return ;
}
}
format(szSendBuffer, charsmax(szSendBuffer), "GET %s%s HTTP/1.1^nHost:%s^r^n^r^n", SITE, steam, HOST)
socket_send(g_Socket, szSendBuffer, charsmax(szSendBuffer))
set_task(5.0, "socketAnswer",id, .flags = "b")
}
}
public socketAnswer(id){
new szData[1024], steams[35], name[32], userid
get_user_authid(id, steams, 34)
get_user_name(id, name, 31)
userid = get_user_userid(id)
if (socket_change(g_Socket)) {
socket_recv(g_Socket, szData, charsmax(szData) )
new Position = containi(szData, "banned_by_myac: true")
new Position2 = containi(szData, "banned_by_cheat_topic: true")
if (Position >= 0){
log_to_file("addons/amxmodx/logs/fastban.log","Игрок:%s | стим:%s забанен маяком",name, steams)
server_cmd("fb_ban %d #%d ^"%s^"",TIME, userid, REASON2)
}
if (Position2 >= 0){
log_to_file("addons/amxmodx/logs/fastban.log","Игрок:%s | стим:%s забанен по топику",name, steams)
server_cmd("kick #%d ^"%s^"", userid, REASON)
}
socket_close(g_Socket);
remove_task( 0 );
}
}
stock bool:is_user_steam(id){
// Author Sh0oter
static dp_pointer
if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id)
server_exec()
return (get_pcvar_num(dp_pointer) == 2) ? true : false
}
return false
}