Request edit gag plugin
Модератори: Extreme, Extreme, Extreme, Extreme, Extreme, Extreme, Extreme
-
OciXCrom
Извън линия - Администратор
- Мнения: 7206
- Регистриран на: 06 Окт 2016, 19:20
- Местоположение: /resetscore
- Се отблагодари: 117 пъти
- Получена благодарност: 1295 пъти
- Обратна връзка:
Request edit gag plugin
Removed @all:
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <regex>
#define TAG "Prefix"
#define GAG_DEFAULT_TIME 2
#define TASK 12830
#define EXCLUDE_GAG ADMIN_IMMUNITY
#define G_A_G 60
#define REGEX_IP_PATTERN "\b(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"
#define IsIP(%1) (regex_match_c(%1, g_IP_pattern, g_regex_return) > 0)
new Regex:g_IP_pattern
new g_regex_return
new DataDir[64]
new LogMsg[126]
new LogAdminMsg[126]
new gagIp[512][32]
new gagDetails[512][256]
new gagPlayer[33]=false
new SERVERNAME [] = "Server name";
new const bChat [][] = {
// SPAM
":27015" ,
"www." ,
".ro" ,
".info" ,
".ws" ,
".biz" ,
".com" ,
".org" ,
".net" ,
". ro" ,
".ro" ,
". info" ,
". ws" ,
". biz" ,
". com" ,
". org" ,
". net" ,
".r.o" ,
".c.o.m" ,
".i.n.f.o" ,
".n.e.t" ,
"jb ." ,
"jb." ,
"cs16" ,
"alphacs" ,
"jbx." ,
"VIP GRATIS",
"C O N E C T - J B . C S 1 6 . R O",
"C O N E C T",
"J B . C S 1 6 . R O",
"VIP GRATIS",
"PB.READFEAR.RO",
"C O N E C T - J B . C S 1 6 . R O -",
"C O N E C T - J B . C S 1 6 . R O -VIP GRATIS",
"C O N E C T - J B . C S 1 6 . R O -VIP SI DETINATOR GRATIS",
"jb.cs16.ro",
"C O N E C T - J B . C S 1 6 . R O - A D MINE FREE",
"C , O , N , E , C , T , - , J , B , . , C , S , 1 , 6 , . , R , O ",
"C O N E C T",
"J B . FIORIGINAL . R0 CEL MAI TARE SERVER GO GO GO VA ASTEPTAM GO !",
"J B . FIORIGINAL . R0",
"J ]B . FIORIGINAL . R 0 GO GO GO CEL MAI TARE SV VA ASTEPTAM CU DRAG!",
"INTRA PE ZOMBIE[.]FRAGBITE[.]RO BEST SERVER FOREVER",
"ZOMBIE[.]FRAGBITE[.]RO",
"FRAGBITE[.]RO",
"fragbite.ro",
"zm.",
"INTRA PE ZOMBIE[.]FRAGBITE[.]RO BEST SERVER ZOMBIE XP",
"HAI PE CEL MAI BUN SERVER DE ZM [89.40.104.98] INTRA SI NU ITI VA PAREA RAU",
"INTRA PE ZOMBIE[.]FRAGBITE[.]RO BEST SERVER ZOMBIE XP",
"C / O / N / E / C / T - J / B / . / C / S / 1 / 6 / . / R / O - A D MINE FREE",
"ADMINE FREE",
"C / O / N / E / C / T",
"INTRA PE ZOMBIE[.]FRAGBITE[.]RO BEST SERVER ZOMBIE XP",
"J B . FIORIGINAL . R0 CEL MAI TARE SERVER GO GO GO VA ASTEPTAM GO !",
"GO GO GO CEL MAI TARE!",
"JB . FIORIGINAL . RO",
"fioriginal",
"indungi",
"jb.indungi.ro",
"J b . i n d u n g i . r o",
"cs.viparena.ro",
"viparena",
"cs viparena ro",
"DOBS",
"jb.dobs.ro",
"jb dobs ro",
"JB.,FIORIGILAL. RO",
"WWW.ESPORTSKOSOVA.COM",
"ESPORTSKOSOVA",
"CON NECT",
"CS . UDP . RO",
"cs.udp.ro",
"GO TO CS.VIPARENA.RO",
"JB--ALPHA--CS--RO",
"ALPHA",
"JB-",
"majku",
"picku",
"jebem",
"sestru",
"familiju",
"nabijem",
"kurac",
"mamu",
"AVALA"
}
public plugin_init()
{
register_plugin("GAG Plugin", "0.1", "")
register_concmd("say", "vSay")
register_concmd("say_team", "vSay")
register_concmd("amx_gag", "cAmxGag", ADMIN_KICK, "- <Name> <duration> <reason>")
register_concmd("amx_ungag", "cAmxUnGag", ADMIN_KICK, "<Name>")
get_datadir(DataDir, charsmax(DataDir))
new error[2]
g_IP_pattern = regex_compile(REGEX_IP_PATTERN, g_regex_return, error, sizeof(error) - 1)
cFile()
}
cFile() {
new fDir[126], Data[64]
get_time("%d.%m.%Y", Data, 63)
format(fDir, 125, "%s/chatlog", DataDir)
if (!dir_exists(fDir))
mkdir(fDir)
format(fDir, 125, "%s/chatlog/%s.log", DataDir, Data)
if (!file_exists(fDir))
write_file(fDir, "- START LOG - by 0 -", -1)
format(LogAdminMsg, 125, "%s/chatlog/Advanced_Gags.log", DataDir)
if (!file_exists(LogAdminMsg))
write_file(LogAdminMsg, "- LOG - Blocked words - by 0 -", -1)
copy(LogMsg, 125, fDir)
}
public vSay(id) {
new sText[256]
read_args(sText, 255)
remove_quotes(sText)
if (equali(sText, "/scoategagbot"))
{
new hGag = VerificaGagJucator(id)
RemoveIp(hGag)
gagPlayer[id]=false
remove_task(hGag+TASK)
xColor(id, "Welcome to the server")
return PLUGIN_HANDLED
}
if (gagPlayer[id]) {
new slot = VerificaGagJucator(id)
new dName[32], dTime[32], dDurate[10], dReason[126], transTime[2]
parse(gagDetails[slot], dName, 31, dTime, 31, dDurate, 9, dReason, 125)
fTransformSec((str_to_num(dTime) + (str_to_num(dDurate) * G_A_G) - time()), transTime)
xColor(id, "Admin !g%s!n Gag you. Reason:!g %s!n. Time left:!g %d!n minute%s !g%d!n second%s", dName, dReason, transTime[0], transTime[0]==1 ? "" : "s", transTime[1], transTime[1]==1 ? "s" : "s")
return PLUGIN_HANDLED
} else {
new nSay[32], whyGag[64]
if (!strlen(sText))
return PLUGIN_CONTINUE
strtoupper(sText)
if (VerifySayIP(sText, nSay, 31)) {
format(whyGag, 63, "You spammed the IP [%s]", nSay)
ActGagJucator(0, id, time(), GAG_DEFAULT_TIME, whyGag)
xColor(id, "Gagged automatically because you spammed an ip:!g %s", nSay)
return PLUGIN_HANDLED
}
for (new i=0; i < sizeof(bChat);i++) {
strtoupper(bChat[i])
if (contain(sText, bChat[i]) !=-1) {
if (get_user_flags(id) & ADMIN_RESERVATION) {
xlogAdminMsg(id, i, sText)
format(whyGag, 63, "Blocked word [%s]", bChat[i])
xColor(id, "The message was not sent because it contains:!g %s!n.", bChat[i])
return PLUGIN_HANDLED
} else {
xlogMsg(id, i, sText)
format(whyGag, 63, "Blocked word [%s]", bChat[i])
xColor(id, "The message was not sent because it contains:!g %s!n.", bChat[i])
return PLUGIN_HANDLED
}
}
}
xlogMsg(id, -1, sText)
}
return PLUGIN_CONTINUE
}
public client_disconnected(id) {
gagPlayer[id]=false
new slot = VerificaGagJucator(id)
new pName[32]
get_user_name(id, pName, 31)
if (slot != 0)
xColor(0, "The player!g %s!n was gagged and disconnected", pName)
}
public client_putinserver(id) {
new slot = VerificaGagJucator(id)
new pName[32], dName[32], dTime[32], dDurate[10], dReason[126], transTime[2]
get_user_name(id, pName, 31)
if (slot != 0) {
parse(gagDetails[slot], dName, 31, dTime, 31, dDurate, 9, dReason, 125)
fTransformSec((str_to_num(dTime) + (str_to_num(dDurate) * G_A_G) - time()), transTime)
xColor(0, "The player!g %s!n He reconnected and is still gagged. Time left:!g %d!n minute%s y!g %d!n second%s", pName, transTime[0], transTime[0]==1 ? "" : "s", transTime[1], transTime[1]==1 ? "s" : "s")
set_speak(id, SPEAK_MUTED)
gagPlayer[id]=true
}
}
public cAmxUnGag(id, level, cid) {
if(!cmd_access (id, level, cid, 1))
return PLUGIN_HANDLED
new Victim[32], aName[32], pName[32]
get_user_name(id, aName, 31)
read_argv(1,Victim,31)
new id2 = cmd_target(id, Victim, 8)
if (!id2)
return PLUGIN_HANDLED
get_user_name(id2, pName, 31)
new hGag = VerificaGagJucator(id2)
if (hGag != 0) {
remove_task(hGag+TASK)
RemoveIp(hGag)
gagPlayer[id2]=false
xColor(0, "Admin !g%s!n has ungagged !g %s!n.", aName, pName)
} else
console_print(id, "The Player %s is no longer gagged.", pName)
return PLUGIN_HANDLED
}
public cAmxGag(id, level, cid) {
if(!cmd_access (id, level, cid, 1))
return PLUGIN_HANDLED
new Victim[32], pName[32], transTime[2], aName[32], Temp[10], gTime[10], gReason[126]
get_user_name(id, aName, 31)
read_argv(1,Victim,31)
read_argv(2, gTime, 31)
read_argv(3, gReason, 125)
new gagTime = str_to_num(gTime)
if (!gagTime)
gagTime = GAG_DEFAULT_TIME
if (gagTime < 1) {
console_print(id, "You can gag him for at least 2 minutes")
return PLUGIN_CONTINUE
}
if (strlen(gReason) < 1)
format(gReason, 125, "Unknown")
new id2 = cmd_target(id, Victim, 8)
if (!id2)
return PLUGIN_HANDLED
get_user_name(id2, pName, 31)
new hGag = VerificaGagJucator(id2)
if (hGag != 0) {
new dName[32], dTime[32], dDurate[10], dReason[126]
parse(gagDetails[hGag], dName, 31, dTime, 31, dDurate, 9, dReason, 125)
fTransformSec((str_to_num(dTime) + (str_to_num(dDurate) * G_A_G) - time()), transTime)
console_print(id, "#########################################")
console_print(id, "## Player [%s] Gagged ##", pName)
console_print(id, "# Admin: %s", dName)
console_print(id, "# Duration: %d minute%s", str_to_num(dDurate), str_to_num(dDurate)==1 ? "" : "s")
console_print(id, "# Have passed: %d minutes%s y %d second%s", transTime[0], transTime[0]==1 ? "" : "s", transTime[1], transTime[1]==1 ? "s" : "s")
console_print(id, "# Reason: %s", dReason)
console_print(id, "#########################################")
} else {
new gStatus = ActGagJucator(id, id2, time(), gagTime, gReason)
if (gStatus != 0) {
format(Temp, 9, "%d", gagTime * G_A_G)
new Float:gagTask = floatstr(Temp)
set_task(gagTask, "TaskUnGag", gStatus+TASK)
xColor(0, "Admin !g%s!n: has gagged!g %s!n.[Duration:!g%d!n minute%s] [Reason: !g%s!n]", aName, pName, gagTime, gagTime==1 ? "" : "s", gReason)
console_print(id, "#########################################")
console_print(id, "## Player %s Gagged", pName)
console_print(id, "# Duration: %d minutes%s", gagTime, gagTime==1 ? "" : "s")
console_print(id, "# Reason: %s", gReason)
console_print(id, "#########################################")
} else
console_print(id, "You can't gag %s", pName)
}
return PLUGIN_HANDLED
}
public TaskUnGag2(s) {
new sIp = s-TASK
new id = IsIidline(gagIp[sIp])
if (id != 0) {
new pName[32]
get_user_name(id, pName, 31)
gagPlayer[id]=false
}
RemoveIp(sIp)
}
public TaskUnGag(s) {
new sIp = s-TASK
new id = IsIidline(gagIp[sIp])
if (id != 0) {
new pName[32]
get_user_name(id, pName, 31)
gagPlayer[id]=false
xColor(id, "Player !g%s!n can talk now.", pName)
}
RemoveIp(sIp)
}
IsIidline(ip[]) {
new xP[32], xN, uIp[32]
get_players(xP, xN, "c")
for (new i=0; i < xN; i++) {
get_user_ip(xP[i], uIp, 31, 1)
if (equal(uIp, ip))
return xP[i]
}
return 0
}
ActGagJucator(id, id2, xTime, xDurate, xReason[]) {
new Ip[32], aNume[32]
if (id != 0)
get_user_name(id, aNume, 31)
else
format(aNume, 31, "%s",SERVERNAME)
get_user_ip(id2, Ip, 31, 1)
for (new i=1; i < sizeof(gagIp); i++)
if (equal(gagIp[i], "")) {
copy(gagIp[i], charsmax(gagIp[]), Ip)
format(gagDetails[i], charsmax(gagDetails[]), "^"%s^" ^"%d^" ^"%d^" ^"%s^"", aNume, xTime, xDurate, xReason)
gagPlayer[id2]=true
set_speak(id2, SPEAK_MUTED)
return i
}
return 0
}
RemoveIp(slot) {
format(gagIp[slot], charsmax(gagIp[]), "")
format(gagDetails[slot], charsmax(gagDetails[]), "")
}
fTransformSec(sec, xBack[]) {
xBack[0] = (sec / 60) % 60 // minuta
xBack[1] = sec % 60 // secunda
}
VerificaGagJucator(id) {
new Ip[32]
get_user_ip(id, Ip, 31, 1)
for (new i=1; i < sizeof(gagIp); i++)
if (equal(gagIp[i], Ip))
return i
return 0
}
VerifySayIP(sText[], nSay[], max) {
if (strlen(sText) > 10) {
new xC=50, xT1[126], xT2[125]
for (new i=0; i < xC; i++) {
if (i==0)
argbreak(sText, xT1, 31, xT2, 31)
else
argbreak(xT2, xT1, 31, xT2, 31)
if (IsIP(xT1)) {
copy(nSay, max, xT1)
return true
}
}
}
return false
}
stock xlogMsg(id, b, msg[]) {
if (!file_exists(LogMsg))
cFile()
new Data[64], fLog[256], xName[32]
get_user_name(id, xName, 31)
get_time("%H:%M:%S", Data, 63)
if (b != -1) {
write_file(LogMsg, "[ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ]", -1)
format(fLog, 255, "[%s] [%s] -> %s -> [%s]", Data, xName, msg, bChat[b])
write_file(LogMsg, fLog, -1)
write_file(LogMsg, "[ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ]", -1)
}
else {
format(fLog, 255, "[%s] [%s]: %s", Data, xName, msg)
write_file(LogMsg, fLog, -1)
}
}
stock xlogAdminMsg(id, b, msg[]) {
if (!file_exists(LogAdminMsg))
cFile()
new Data[64], fLog[256], xName[32]
get_user_name(id, xName, 31)
get_time("%d.%m.%Y %H:%M:%S", Data, 63)
format(fLog, 255, "[%s] [%s] -> %s -> [%s]", Data, xName, msg, bChat[b])
write_file(LogAdminMsg, fLog, -1)
}
stock xColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[320], msg2[320]
vformat(msg, 190, input, 3)
formatex(msg2, 190, "!g[%s]!n %s", TAG, msg)
replace_all(msg2, 190, "!g", "^4")
replace_all(msg2, 190, "!n", "^1")
replace_all(msg2, 190, "!t", "^3")
replace_all(msg2, 190, "!t2", "^0")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg2)
message_end()
}
}
}
}
-
Igivapto
Извън линия - Foreigner
- Мнения: 36
- Регистриран на: 08 Май 2020, 14:52
- Се отблагодари: 13 пъти
- Получена благодарност: 1 път
Request edit gag plugin
МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Последно промяна от thoughtz на 22 Авг 2020, 12:29, променено общо 1 път.
Причина: Read the forum rules!
Причина: Read the forum rules!
-
Igivapto
Извън линия - Foreigner
- Мнения: 36
- Регистриран на: 08 Май 2020, 14:52
- Се отблагодари: 13 пъти
- Получена благодарност: 1 път
Request edit gag plugin
МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Последно промяна от thoughtz на 22 Авг 2020, 12:29, променено общо 1 път.
Причина: Read the forum rules!
Причина: Read the forum rules!
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 2 Отговори
- 1125 Преглеждания
-
Последно мнение от premiumconfig
-
- 2 Отговори
- 1492 Преглеждания
-
Последно мнение от Cirovic
-
- 3 Отговори
- 1171 Преглеждания
-
Последно мнение от Igivapto
-
- 0 Отговори
- 1327 Преглеждания
-
Последно мнение от Taliban
-
- 2 Отговори
- 1864 Преглеждания
-
Последно мнение от OciXCrom
-
- 3 Отговори
- 2172 Преглеждания
-
Последно мнение от OciXCrom
-
- 2 Отговори
- 813 Преглеждания
-
Последно мнение от OciXCrom
Кой е на линия
Потребители разглеждащи този форум: 0 регистрирани и 30 госта