Witam Serdecznie wszystkich.
Mam następujący problem ze swoim pluginem, problem polega na tym że gracze mogą reklamować swoje strony internetowe.
Chciałbym prosić aby ktoś mi pomógł w edycji tego pluginu i dodał funkcję blokującą poszczególnych fraz takich jak www / eu / pl itp.
#include <amxmodx> #include <regex> new pCvar[5], iCvar[5], zareklamowal[33] new Powod[64], Flagi[12], Domyslnie[128] new PlikAllowed[] = "addons/amxmodx/configs/allowed.ini"; new NazwySlow[192][32] new IloscDozwolonych public plugin_init() { register_plugin("Don't say IPs", "1.0", "naXe") register_clcmd("say", "hook_say") register_clcmd("say_team", "hook_say") pCvar[0] = register_cvar("dsi_check_times", "3") // po ilu reklamach ma banowac (w tym przypadku za 4 (+1)) pCvar[1] = register_cvar("dsi_ban_time", "30") // czas bana za reklame pCvar[2] = register_cvar("dsi_immunitet_flags", "a") // mozna laczyc kilka flag np. "abcde" pCvar[3] = register_cvar("dsi_ban_reason", "Reklama IP") // powod bana za reklame pCvar[4] = register_cvar("dsi_default_say", "Musze to powiedziec... Ten serwer jest za***isty!") // na co zamieniac reklame if(!file_exists(PlikAllowed)) { log_message("Plik %s nie zostal odnaleziony", PlikAllowed) return } new iLen while(IloscDozwolonych < 192 && read_file(PlikAllowed, IloscDozwolonych, NazwySlow[IloscDozwolonych][1], 30, iLen)) { if(NazwySlow[IloscDozwolonych][0] == ';') continue NazwySlow[IloscDozwolonych][0] = iLen ++IloscDozwolonych } } public plugin_cfg() { iCvar[0] = get_pcvar_num(pCvar[0]) iCvar[1] = get_pcvar_num(pCvar[1]) get_pcvar_string(pCvar[2], Flagi, 11) get_pcvar_string(pCvar[3], Powod, 63) get_pcvar_string(pCvar[4], Domyslnie, 127) } public hook_say(id) { new said[1024], cmd[32], g_blad[64], zwrocona_wartosc, bool:znalaziono, pos, i read_args(said, 1023) read_argv(0, cmd, 31) while(i < IloscDozwolonych) { if((pos = containi(said, NazwySlow[i][1])) != -1) { new len = NazwySlow[i][0] while(len--) said[pos++] = '*' znalaziono = true continue } ++i } new Regex:g_result = regex_match(said, "(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]?)", zwrocona_wartosc, g_blad, 63) switch(g_result) { case REGEX_MATCH_FAIL: { log_amx("REGEX_MATCH_FAIL! %s", g_blad) return 0 } case REGEX_PATTERN_FAIL: { log_amx("REGEX_PATTERN_FAIL! %s", g_blad) return 0 } case REGEX_NO_MATCH: return 0 default: { if(znalaziono || get_user_flags(id) & read_flags(Flagi)) return 0 else { if(++zareklamowal[id] > iCvar[0]) { engclient_cmd(id, cmd, "%s", Domyslnie) server_cmd("amx_ban %d #%d ^"%s^"", iCvar[1], get_user_userid(id), Powod) return 1 } regex_free(g_result) } return 1 } } return 0 }
Za udzieloną pomoc serdecznie dziękuję, pozdrawiam !