13/06/2018, 07:22 AM
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
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;
}
}
}
}