Anti-spam no bloquea el mensaje con espacios?

Hola a todos bueno aqui tengo un anti-spam, funca bien y bloquea las ips con puntos y todo pero se la pasan haciendome spam de esta forma 123 456 789 100 27019



Ven no le ponen puntos si no espacios y no bloquea el mensaje aqui el code




PHP Code:







#include <amxmodx>
#include <regex>

#define PATTERN "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" // \b

new pCvar_Max, pCvar_Kick

enum
{

NUM = 0,

POINT = 1,

DPOINT = 2,

WWW = 3 ,

TOTAL_LTS
}

public 
plugin_init()

{

register_plugin("Anti-Spam", "1.0", "Click post title for more details.")

register_clcmd("say_team", "hook_say")

register_clcmd("say", "hook_say")

pCvar_Kick = register_cvar("check_mode","1") //0 desactivado, 1 kickear, 2 cambiar el nombre/borrar say

pCvar_Max = register_cvar
("check_maxdigits","10") //cantidad de numeros permitidos en nick

register_message(get_user_msgid("SayText"), "MessageNameChange")
}

public 
client_connect(id) 
{ 
    new 
szName[32] 
    
get_user_name( id, szName, 31 ) 
    
check_name(id,szName) 
    
}

check_name(id,const szName[])
{ 
    
    new 
Count 
    
new iValue = get_pcvar_num(pCvar_Kick)
    
    if(!
iValue)
    {
        return 
PLUGIN_HANDLED
    
}
    
    for(new 
i = 0; i < strlen(szName) ; i++) 
  & nbsp; { 
        if(
48 <= szName[i] <= 57) 
        { 
            
Count++ 
        } 
    } 
    
    if( 
Count >= get_pcvar_num(pCvar_Max) ) 
    { 
        switch(
clamp(iValue,1,2))
      &n bsp; {
            case 
1:
            {  
        
emessage_begin( MSG_ONE, SVC_DISCONNECT, _, id ) 
        
ewrite_string("Nick detectado como spam.") 
        
emessage_end()
            }
            case 
2:
       &n bsp;    {
                
set_user_info(id,"name","[Spam]")
            }
        }
        
    } 
    
    return 
PLUGIN_CONTINUE
}

public 
client_putinserver(id)

check_user_name(id)

public 
client_infochanged(id)

{
new 
oldname[32], newname[32]

get_user_name(id, oldname, 31)

get_user_info(id, "name", newname, 31)

if( !
equal(oldname, newname) )

check_user_name(id, newname)
}

stock check_user_name(id, const name[32] = "")

{
new 
plrname< span>[
32]

if(
equal(name, ""))

{
get_user_name(id, plrname, 31)
}

else

{
plrname = name
}

new 
g_returnvalue, g_error[64]

new 
Regex:g_result = regex_match(plrname, PATTERN, g_returnvalue, g_error, 63)

switch(
g_result)

{case 
REGEX_MATCH_FAIL, REGEX_PATTERN_FAIL:

{
return 
log_amx("REGEX ERROR! %s", g_error)
}

case 
REGEX_NO_MATCH:

{
return 
0
}

default:

{
new 
name[33]

get_user_name(id, name, 32)

client_cmd(id, "name ^"Intento Spammear^"; disconnect; echo ^"Fuiste kickeado por hacer spam.^"")< br />
client_print(0, print_chat, "%s Fue Expulsado por ponerse una IP en el Nombre.", name)

server_cmd("kick %s", name)

return 
1
}
}

return -
1

}

public 
MessageNameChange(msgid, dest, id)

{

new 
szInfo[64]

get_msg_arg_string(2, szInfo, 63)
if(!
equali(szInfo, "#Cstrike_Name_Change"))

{
return 
PLUGIN_CONTINUE
}

return 
PLUGIN_HANDLED
}

public 
hook_say(id)

{

new 
args[192], contador[TOTAL_LTS]

read_args(args, 191)

replace_all(args, 191, " ", "")

for( new 
i = 0; i& nbsp;< strlen(args) ; i++)

{
switch(
args[i])
{

case 
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9' : contador[NUM]++

case 
'.' : contador[POINT]++

case 
':' : contador[DPOINT]+ +

case 
'w' : contador[WWW]++
}
}

if(
contador[NUM] >= 5 && contador[POINT] || (contador[WWW] >= 3 && containi(args,".com")))

{
client_print(id, print_chat, "Mensaje Bloqueado. Considerado Spam.")

return 
PLUGIN_HANDLED
}

return 
PLUGIN_CONTINUE
} 











Orignal From: Anti-spam no bloquea el mensaje con espacios?

No comments

Not a single link is allowed to submit in comment :o