#include <amxmodx>
#include <fakemeta>
#include <regex>
#define DEFAULT_NAME "[ProKillers] Player"
#define TRUE_KEY "prokillers"
#define DROP_PLAYERS_WITH_SPAM
#define ChangeName(%1,%2) engfunc(EngFunc_SetClientKeyValue, %1, engfunc(EngFunc_GetInfoKeyBuffer, %1), "name", %2)
new Regex:RegexHandler;
public plugin_init()
{
register_plugin("TotalBlocker Adverts", "1.0", "neugomon");
new ret, szError[128];
RegexHandler = regex_compile("((((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?))|([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,4}\b)", ret, szError, charsmax(szError), "i");
if(RegexHandler == REGEX_PATTERN_FAIL)
set_fail_state(szError);
else
{
register_clcmd("say", "HookSay");
register_clcmd("say_team","HookSay");
register_forward(FM_SetClientKeyValue, "FmSetClientKeyValue", false);
}
}
public client_connect(id)
{
new name[32]; get_user_info(id, "name", name, charsmax(name));
if(IsNotValidString(name))
{
#if defined DROP_PLAYERS_WITH_SPAM
new ip[25]; get_user_ip(id, ip, charsmax(ip));
log_to_file("spam.log", "Player <Nev: %s ><IP: %s > kirugva.", name, ip);
server_cmd("kick #%d ^"Hirdetes a nevben.^"", get_user_userid(id));
#else
ChangeName(id, DEFAULT_NAME);
#endif
}
}
public FmSetClientKeyValue(id, const szBuffer[], const szKey[], szValue[])
{
if(!equal(szKey, "name"))
return FMRES_IGNORED;
if(equal(szValue, DEFAULT_NAME))
return FMRES_IGNORED;
static szOldName[32]; get_user_name(id, szOldName, charsmax(szOldName));
if(equal(szValue, szOldName))
return FMRES_IGNORED;
if(IsNotValidString(szValue))
{
ChangeName(id, DEFAULT_NAME);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
public HookSay(id)
{
static sMsg[128]; read_args(sMsg, charsmax(sMsg));
return (sMsg[0] != '/' && IsNotValidString(sMsg));
}
bool:IsNotValidString(string[], ret=0)
return bool:(contain(string, TRUE_KEY) == -1 && regex_match_c(string, RegexHandler, ret) > 0);