agregar anti spam admin
#1
hola tengo este anti spam en mi sv, pero no bloquea el spam que manda los admines le podrian agregar que a los admines tambien les bloquee el spam, porfavor,

y borrar esos mensajes demás que hay en el plugins, porfavor

Código:
#include <amxmodx>
#include <amxmisc>
#include <printf>

#define PLUGIN "Block Say"
#define VERSION "1.1"
#define AUTHOR "[R]ak"

enum _:Cvars {
    MAX_DIGIT,
    HOSTNAME
}

new Array:BlockSay, g_BlockSay, g_Cvar[Cvars], g_MaxPlayers, g_ServerName[64]

public plugin_init() {
    
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_clcmd("say", "cmdCheck")
    
    register_clcmd("say_team", "cmdCheck")
    
    g_Cvar[MAX_DIGIT] = register_cvar("rak_max_digit", "9")
    
    g_Cvar[HOSTNAME] = register_cvar("rak_host_name", "FG-ARG.net")
    
    register_logevent("logevent_round_start", 2, "1=Round_Start")
    
    g_MaxPlayers = get_maxplayers()
}

public logevent_round_start() {
    
    for(new i = 1; i <= g_MaxPlayers; i++) {
        
        if(is_user_connected(i)) {
            
            printf(i, GRAY, "[R]ak Acme Inc.-^x04 Anti-Spam^x01 %s", VERSION)
            
            printf(i, GRAY, "Gracias por jugar en ^x04%s", g_ServerName)
        }
    }
}

public plugin_cfg() {
    
    BlockSay = ArrayCreate(64, 1)
    
    new ConfigDir[64]
    
    get_configsdir(ConfigDir, charsmax(ConfigDir))
    
    format(ConfigDir, charsmax(ConfigDir), "%s/BlockSay.ini", ConfigDir)
    
    if(!file_exists(ConfigDir))
        create_file(ConfigDir)
    
    new Data[37], File = fopen(ConfigDir, "rt")
    
    while (!feof(File)) {
        
        fgets(File, Data, charsmax(Data))
        
        trim(Data)
        
        if (Data[0] == ';' || !Data[0])
            continue;
        
        rak_remove_quotes(Data)
        
        ArrayPushString(BlockSay,Data)
        
        g_BlockSay++
        
    }
    
    fclose(File)
    
    get_pcvar_string(g_Cvar[HOSTNAME], g_ServerName, charsmax(g_ServerName))
    
}

create_file(ConfigDir[]) {
    
    new File = fopen(ConfigDir, "wt")
    
    fprintf(File, "; BlockSay By [R]ak Acme Inc.-^n; File location: $moddir/addons/amxmodx/configs/BlockSay.ini^n^n; Las lineas que empiezan con ; son comentarios^n^n; Ejemplo de palabra para chequear:^n; ^"puto^"^n^n; Hay que poner una palabra abajo de la otra y no es necesario usar mayusculas^n;Enjoy")
    
    fclose(File)
}

public cmdCheck(id) {
    
    if(is_user_admin(id))
        return PLUGIN_CONTINUE
    
    static Args[192]
    
    read_args(Args, charsmax(Args))
    
    rak_remove_quotes(Args)
    
    if((contain(Args, "%") != -1) || check_ip(Args) || check_words(Args)) {
        
        printf(id, GRAY, "Esta prohibido hacer Spam; solo [R]ak puede, vos no")
        
        return PLUGIN_HANDLED
    
    }
    
    return PLUGIN_CONTINUE
    
}

check_words(Say[]) {
    
    static word[64], i
    
    for(i = 0; i < g_BlockSay; i++) {
        
        ArrayGetString(BlockSay, i, word, charsmax(word))
        
        if(containi(Say, word) != -1)
            return true
        
    }
    
    return false
}

check_ip(Say[]) {
    
    static digit, i, len
    
    len = rak_strlen(Say)
    
    digit = 0
    
    for(i = 0; i < len; i++) {
        
        if(rak_isdigit(Say[i]))
            digit++
        
    }
    
    if(digit >= get_pcvar_num(g_Cvar[MAX_DIGIT]))
        return true
    
    return false
    
}

stock rak_isdigit(Value)
    return (48 <= Value <= 57)

stock rak_strlen(Args[]) {
    
    static n
    
    for(n = 0; /* nothing */; n++)
        if(!Args[n])
            break
    
    return n
    
}

stock rak_remove_quotes(Args[]) {
    
    static n
    
    if(!Args[0])
        return
    else if(Args[0] == 34) {
        
        for(n = 1;/* nothing */; n++) {
            
            if(!Args[n] || Args[n] == 34 && !Args[n+1]) {
                
                Args[n] = 0
                
                break;
                
            }
            
            Args[n-1] = Args[n]
            
        }
    }
    else {
        
        for(n = 1;/* nothing */; n++) {
            
            if(!Args[n] || Args[n] == 34 && !Args[n+1]) {
                
                Args[n] = 0
                
                break;
                
            }
        }    
    }
}
Responder
#2
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <printf>

#define PLUGIN "Block Say"
#define VERSION "1.1"
#define AUTHOR "[R]ak"

enum _:Cvars 
{
    
MAX_DIGIT,
    
HOSTNAME
}
new Array:
BlockSayg_BlockSayg_Cvar[Cvars], g_MaxPlayersg_ServerName[64]

public 
plugin_init() 
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
register_clcmd("say""cmdCheck")
    
register_clcmd("say_team""cmdCheck")
    
register_logevent("logevent_round_start"2"1=Round_Start")

    
g_Cvar[MAX_DIGIT] = register_cvar("rak_max_digit""9")
    
g_Cvar[HOSTNAME] = register_cvar("rak_host_name""FG-ARG.net")
    
g_MaxPlayers get_maxplayers()
}
public 
logevent_round_start() 
{
    for(new 
1<= g_MaxPlayersi++) 
    {
        if(
is_user_connected(i)) 
        {
            
printf(iGRAY"[R]ak Acme Inc.-^x04 Anti-Spam^x01 %s"VERSION)
            
printf(iGRAY"Gracias por jugar en ^x04%s"g_ServerName)
        }
    }
}
public 
plugin_cfg() 
{
    
BlockSay ArrayCreate(641)
    
    new 
ConfigDir[64]
    
get_configsdir(ConfigDircharsmax(ConfigDir))
    
format(ConfigDircharsmax(ConfigDir), "%s/BlockSay.ini"ConfigDir

    if(!
file_exists(ConfigDir))
    
create_file(ConfigDir)

    new 
Data[37], File fopen(ConfigDir"rt")

    while (!
feof(File)) 
    {
        
fgets(FileDatacharsmax(Data))
        
trim(Data)

        if (
Data[0] == ';' || !Data[0]) 
        continue;

        
rak_remove_quotes(Data)
        
ArrayPushString(BlockSay,Data)

        
g_BlockSay++

    }
    
fclose(File)
    
get_pcvar_string(g_Cvar[HOSTNAME], g_ServerNamecharsmax(g_ServerName))
}
create_file(ConfigDir[]) 
{
    new 
File fopen(ConfigDir"wt")
    
fprintf(File"; BlockSay By [R]ak Acme Inc.-^n; File location: $moddir/addons/amxmodx/configs/BlockSay.ini^n^n; Las lineas que empiezan con ; son comentarios^n^n; Ejemplo de palabra para chequear:^n; ^"puto^"^n^n; Hay que poner una palabra abajo de la otra y no es necesario usar mayusculas^n;Enjoy")
    
fclose(File)
}

public 
cmdCheck(id
{
    static 
Args[192]
    
read_args(Argscharsmax(Args))
    
rak_remove_quotes(Args)

    if((
contain(Args"%") != -1) || check_ip(Args) || check_words(Args)) 
    {
        
printf(idGRAY"Esta prohibido hacer Spam; solo [R]ak puede, vos no")
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_CONTINUE
}
check_words(Say[]) 
{
    static 
word[64], i
    
for(0g_BlockSayi++) 
    {
        
ArrayGetString(BlockSayiwordcharsmax(word))

        if(
containi(Sayword) != -1)
        return 
true
    
}
    return 
false
}
check_ip(Say[]) 
{
    static 
digitilen
    len 
rak_strlen(Say)
    
digit 0

    
for(0leni++) 
    {
        if(
rak_isdigit(Say[i]))
        
digit++
    }
    if(
digit >= get_pcvar_num(g_Cvar[MAX_DIGIT]))
    return 
true
    
return false
}
stock rak_isdigit(Value)
return (
48 <= Value <= 57)

stock rak_strlen(Args[]) 
{
    static 
n
    
for(0/* nothing */n++)
    if(!
Args[n])
    break
    return 
n
}

stock rak_remove_quotes(Args[]) 
{
    static 
n

    
if(!Args[0])
    return
    
    else if(
Args[0] == 34
    {
        for(
1;/* nothing */n++) 
        {
            if(!
Args[n] || Args[n] == 34 && !Args[n+1]) 
            {
                
Args[n] = 0
                
break;

            }
            
Args[n-1] = Args[n]
        }
    }
    else 
    {
        for(
1;/* nothing */n++) 
        {
            if(!
Args[n] || Args[n] == 34 && !Args[n+1]) 
            {
                
Args[n] = 0
                
break;

            }
        }    
    }

Steam
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)