Request edit gag plugin

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
Igivapto
Извън линия
Foreigner
Foreigner
Мнения: 36
Регистриран на: 08 Май 2020, 14:52
Се отблагодари: 13 пъти
Получена благодарност: 1 път

Request edit gag plugin

Мнение от Igivapto » 12 Авг 2020, 16:14

:/del
Последно промяна от Igivapto на 10 Сеп 2020, 20:27, променено общо 1 път.

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7206
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1295 пъти
Обратна връзка:

Request edit gag plugin

Мнение от OciXCrom » 12 Авг 2020, 21:05

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
Foreigner
Мнения: 36
Регистриран на: 08 Май 2020, 14:52
Се отблагодари: 13 пъти
Получена благодарност: 1 път

Request edit gag plugin

Мнение от Igivapto » 14 Авг 2020, 01:00

@OciXCrom Thanks, i appreciate your help

Аватар
Igivapto
Извън линия
Foreigner
Foreigner
Мнения: 36
Регистриран на: 08 Май 2020, 14:52
Се отблагодари: 13 пъти
Получена благодарност: 1 път

Request edit gag plugin

Мнение от Igivapto » 19 Авг 2020, 19:09

МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Последно промяна от thoughtz на 22 Авг 2020, 12:29, променено общо 1 път.
Причина: Read the forum rules!

Аватар
Igivapto
Извън линия
Foreigner
Foreigner
Мнения: 36
Регистриран на: 08 Май 2020, 14:52
Се отблагодари: 13 пъти
Получена благодарност: 1 път

Request edit gag plugin

Мнение от Igivapto » 22 Авг 2020, 01:03

МНЕНИЕТО Е СКРИТО ОТ СТРАНА НА МОДЕРАТОР! ЦЪКНИ ВЪРХУ ЛЕНТАТА ЗА ДА ГО ПРЕГЛЕДАШ.
Последно промяна от thoughtz на 22 Авг 2020, 12:29, променено общо 1 път.
Причина: Read the forum rules!

Аватар
Igivapto
Извън линия
Foreigner
Foreigner
Мнения: 36
Регистриран на: 08 Май 2020, 14:52
Се отблагодари: 13 пъти
Получена благодарност: 1 път

Request edit gag plugin

Мнение от Igivapto » 25 Авг 2020, 20:53

BUMP!!!!!

Аватар
Igivapto
Извън линия
Foreigner
Foreigner
Мнения: 36
Регистриран на: 08 Май 2020, 14:52
Се отблагодари: 13 пъти
Получена благодарност: 1 път

Request edit gag plugin

Мнение от Igivapto » 03 Сеп 2020, 18:43

Up!

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Google [Bot], Semrush [Bot] и 17 госта