111 unique views
8 months ago

[PLUGIN] COFYYE ANTI REKLAMA v1.0

DESCRIPTION

COFYYE_ANTI_REKLAMA

v1.0


Pre nego sto zapocnem uopste o pluginu, zeleo bih da se zahvalim @Милан koji mi je pomogao da savladam pawn, pomagao oko plugina i mnogih drugih stvari. Pre ovog plugina, radili smo sitne plugine gde mi objasnjavao kako funkcionise pawn, sintaksa itd. Zahvaljujuci njemu, uspeo sam da napravim svoj prvi plugin koji ce da ima svrhu neku na serveru. Zeleo bih takodje da mu se zahvalim sto je izdvajao vreme da mi objasnjava nejasnoce u vezi cs 1.6 plugina. Sve pohvale za njega, korektna osoba, posten covek i ovim putem zelim da kazem da ako je nekom potreban cs 1.6 plugin ili bilo sta oko cs 1.6 moze njemu da se javi. 


A, sada, da opisem plugin kako funkcionise.

Ovo je plugin pomocu kojeg mozete blokirati reklamiranje IP adresa drugih servera na Vasem. Ovaj plugin takodje sadrzi i blokiranje izmene imena igraca, sto dodatno omogucava zastitu od odredjenih citera koji cesto menjaju imena svakih X sekundi. Plugin blokira reklamiranje IP adresa u nicku pri konekciji, blokira poruke u chatu (say i say_team) i ukoliko je dozvoljena izmena nicka na serveru, blokira svaku promenu koja sadrzi IP adresu i menja nick u 'COFYYE ANTI REKLAMA' ili drugu vrednost koja se podesi putem cvara. Ovaj plugin je testiran na amxmodx verziji 1.9 i radi sve kako treba. Mozete sami testirati odredjene verzije i prijaviti bug ukoliko postoji. 


Instalacija 👇


Instalacija plugina je veoma jednostavna. Sve sto treba da uradite, jeste da udjete u Vas GamePanel (WebFTP) ili FTP (FileZilla). Zatim udjete u plugins folder koji se nalazi ovde : cstrike/addons/amxmodx/plugins
U ovaj folder ubacite plugin
cofyye_anti_reklama.amxx
Nakon toga, idite korak nazad i udjete u
configs folder, puna lokacija : cstrike/addons/amxmodx/configs i udjete u fajl plugins.ini, unutar ovog fajla, na dnu ukucate sledece : cofyye_anti_reklama.amxx
Kada to uradite, sacuvajte fajl, a zatim udjite u fajl
amxx.cfg koji se nalazi u istom folderu.
Na dnu ovog fajla kucate sledece :


cofyye_antireklama_blockchangename 1
cofyye_antireklama_blockinchat 1
cofyye_antireklama_blockonconnect 1
cofyye_antireklama_changenick 1
cofyye_antireklama_logger 1
cofyye_antireklama_prefix "COFYYE_ANTIREKLAMA"
cofyye_antireklama_nickname "COFYYE ANTI REKLAMA"'

Kada ste ovo dodali, potrebno je sacuvati amxx.cfg i nakon toga restartujete server ili promenite mapu da bi Vam plugin radio!
Idemo sada korak po korak za objasnjenje svakog od ovih cvarova.


  • COFYYE_ANTIREKLAMA_BLOCKCHANGENAME


Ovaj cvar sluzi da blokira promenu imena dok je igrac na serveru. Vrednost 0 znaci da je iskljucena ova opcija, a vrednost 1 znaci da je ukljucena.


  • COFYYE_ANTIREKLAMA_BLOCKINCHAT


Ovaj cvar sluzi da blokira poruku igracu u chatu ukoliko igrac napise neku IP adresu. Vrednost 0 znaci da je iskljucena ova opcija, odnosno da korisnik moze da napise IP u chatu, a vrednost 1 znaci da je ukljucena ova opcija.


  • COFYYE_ANTIREKLAMA_BLOCKONCONNECT

Ovaj cvar sluzi da kikuje igraca prilikom ulaska na serveru ukoliko se u njegovom nicku nalazi IP adresa. Vrednost 0 znaci da je ova opcija iskljucena, a vrednost 1 znaci da je ukljucena.


  • COFYYE_ANTIREKLAMA_CHANGENICK

Ovaj cvar sluzi da, ukoliko je cvar cofyye_antireklama_blockchangename na 0, tada igrac moze da promeni njegov nick dok je na serveru. Prilikom menjanja nicka, ukoliko je ovaj cvar ukljucen, to znaci da ukoliko je igrac detektovan da se IP adresa nalazi u njegovom nicku, njegov nick ce biti zamenjen sa nickom iz cvara cofyye_antireklama_nickname, vrednost 0 znaci da je iskljucena ova opcija, a vrednost 1 da je ukljucena.


  • COFYYE_ANTIREKLAMA_NICKNAME

Iz prethodnog cvara, ukoliko je cvar cofyye_antireklama_changenick ukljucen, igracev nick ce biti zamenjen nickom koji se nalazi kao vrednost u ovom cvaru.


  • COFYYE_ANTIREKLAMA_PREFIX

Ovaj cvar sluzi da se izmeni text prefixa kada se prikazuje poruka korisniku.
[PREFIX] Ovo je poruka koja se prikazuje korisniku.


  • COFYYE_ANTIREKLAMA_LOGGER

Ovaj cvar sluzi da se loguju informacije kada god neki igrac bude blokiran za IP adresu. Vrednost 0 znaci da je iskljucena ova opcija, a vrednost 1 znaci da je ukljucena.



Slike sa servera 👇


Kikovanje igraca ukoliko sadrzi IP adresu u nicku

https://github.com/cofyye/cs1.6-amxmodx/raw/assets/CAR_BlockOnConnect.png?raw=true


Poruka kada je zabranjena promena imena na serveru

https://github.com/cofyye/cs1.6-amxmodx/raw/assets/CAR_BlockChangeName.bmp?raw=true


Blokiranje poruke u chatu, part1 slika poruke koju sam napisao

https://github.com/cofyye/cs1.6-amxmodx/raw/assets/CAR_BlockInChat_1.png?raw=true


Blokiranje poruke u chatu, part2 slika kada plugin blokira poruku

https://github.com/cofyye/cs1.6-amxmodx/raw/assets/CAR_BlockInChat_2.png?raw=true


Slika kada se promeni nick koji sadrzi IP adresu

https://github.com/cofyye/cs1.6-amxmodx/raw/assets/CAR_ChangeNick4IP.bmp?raw=true


Slika logova kada plugin detektuje IP adresu

https://github.com/cofyye/cs1.6-amxmodx/raw/assets/CAR_Logger.png?raw=true



SMA & DOWNLOAD 👇


SMA

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <regex>
#include <colorchat>
#include <fakemeta>

#define PLUGIN "COFYYE Anti Reklama"
#define VERSION "1.0"
#define AUTHOR "cofyye"

#pragma semicolon 1

new pCvar_BlockChangeName;
new pCvar_Prefix[32]; 
new pCvar_BlockInChat;
new pCvar_BlockOnConnect;
new pCvar_ChangeNick;
new pCvar_NickName[128];
new pCvar_Logger;

//new const szPattern[] = "\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b"; // pattern za normalan IP : 192.168.0.1
new const szPattern[] = "\b(?:\d\s*\d{0,2}|[1-9]\d{0,1}|1\d{0,2}|2[0-4]\d|25[0-5])\s*\.(?:\s*\d\s*\d\s*\d{0,2}|[1-9]\d{0,1}|1\d{0,2}|2[0-4]\d|25[0-5])\s*\.(?:\s*\d\s*\d{0,2}|[1-9]\d{0,1}|1\d{0,2}|2[0-4]\d|25[0-5])\s*\.(?:\s*\d\s*\d{0,2}|[1-9]\d{0,1}|1\d{0,2}|2[0-4]\d|25[0-5])\b"; // pattern za ip sa whitespace : 192  . 168.  0. 1
		

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	register_clcmd("say", "OnClientSay");
	register_clcmd("say_team", "OnClientSay");
	
	register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged");
	
	pCvar_BlockChangeName = register_cvar("cofyye_antireklama_blockchangename", "0", ADMIN_RCON);
	pCvar_BlockInChat = register_cvar("cofyye_antireklama_blockinchat", "1", ADMIN_RCON);
	pCvar_BlockOnConnect = register_cvar("cofyye_antireklama_blockonconnect", "1", ADMIN_RCON);
	pCvar_ChangeNick = register_cvar("cofyye_antireklama_changenick", "1", ADMIN_RCON);
	pCvar_Logger = register_cvar("cofyye_antireklama_logger", "1", ADMIN_RCON);
	
	register_cvar("cofyye_antireklama_prefix", "COFYYE_ANTIREKLAMA", ADMIN_RCON);
	register_cvar("cofyye_antireklama_nickname", "COFYYE ANTI REKLAMA", ADMIN_RCON);
}

public client_putinserver(id) {
	if(!is_user_bot(id) && get_pcvar_num(pCvar_BlockOnConnect) == 1) {
		new szName[128];
		new szSteamId[33];
		get_user_name(id, szName, charsmax(szName));
		get_user_authid(id, szSteamId, charsmax(szSteamId));
		
		new szErrCode;
		new szError[128];
		
		new szResponse = regex_match_simple(szName, szPattern, PCRE_MULTILINE, szError, charsmax(szError), szErrCode);
		
		if(szResponse > 0) {
			if(get_pcvar_num(pCvar_Logger) == 1) {
				Log("User %s is blocked on connect for IP address in their nick.", szName);
			}
			
			server_cmd("kick #%s %s", szSteamId, "You cannot have a IP address in nick");
		} else {
			return PLUGIN_CONTINUE;
		}
		
		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_CONTINUE;
}


public ClientUserInfoChanged(id) {
	new szOldName[32], szNewName[32];
	pev(id, pev_netname, szOldName, charsmax(szOldName));
	
	if(!is_user_connected(id) || is_user_bot(id)) {
		return FMRES_IGNORED; 
	}
	
	if(szOldName[0]) {
		get_user_info(id, "name", szNewName, charsmax(szNewName));
	}
        
	if(!equal(szOldName, szNewName) && get_pcvar_num(pCvar_BlockChangeName) == 1) {
		set_user_info(id, "name", szOldName);
		
		get_cvar_string("cofyye_antireklama_prefix", pCvar_Prefix, charsmax(pCvar_Prefix));
		
		ColorChat(id, TEAM_COLOR, "^4[%s] ^1You cannot change nickname on server.", pCvar_Prefix);
		
		return FMRES_HANDLED;
	} else if(!equal(szOldName, szNewName)) {
		new szErrCode;
		new szError[128];
		
		new szResponse = regex_match_simple(szNewName, szPattern, PCRE_MULTILINE, szError, charsmax(szError), szErrCode);
		
		if(szResponse > 0 && get_pcvar_num(pCvar_ChangeNick) == 1) {
			get_cvar_string("cofyye_antireklama_nickname", pCvar_NickName, charsmax(pCvar_NickName));
			
			if(get_pcvar_num(pCvar_Logger) == 1) {
				Log("User %s have IP address in their nick so changed to %s", szOldName, pCvar_NickName);
			}
			
			set_user_info(id, "name", pCvar_NickName);
		} else if(szResponse > 0 && get_pcvar_num(pCvar_ChangeNick) == 0) {
			return FMRES_IGNORED;
		} else {
			return FMRES_HANDLED;
		}
	}
	
	return FMRES_IGNORED;
}

public OnClientSay(id) {
	if(get_pcvar_num(pCvar_BlockInChat) == 1) {
		new szMessage[256];
		
		read_args(szMessage, charsmax(szMessage));
		
		new szErrCode;
		new szError[128];
			
		new szResponse = regex_match_simple(szMessage, szPattern, PCRE_MULTILINE, szError, charsmax(szError), szErrCode);
		
		get_cvar_string("cofyye_antireklama_prefix", pCvar_Prefix, charsmax(pCvar_Prefix));
		
		if(szResponse > 0) {
			if(get_pcvar_num(pCvar_Logger) == 1) {
				new szName[128];
				get_user_name(id, szName, charsmax(szName));
				Log("User %s is blocked in chat because is wrote a IP address.", szName);
			}
			
			ColorChat(id, TEAM_COLOR, "^4[%s] ^1You cannot write IP address in chat.", pCvar_Prefix);
			
			return PLUGIN_HANDLED;
		} else {
			return PLUGIN_CONTINUE;
		}
	}
	
	return PLUGIN_CONTINUE;
}

public Log(const  msg[], any:...)
{
	static szMessage[256];
	vformat(szMessage, charsmax(szMessage), msg, 2);
	
	static iFilename[96];
	static iDir[64];
	if( !iDir[0] )
	{
		get_basedir(iDir, charsmax(iDir));
		add(iDir, charsmax(iDir), "/logs");
	}
	
	format(iFilename, charsmax(iFilename), "%s/cofyye_antireklama.log", iDir);
	
	log_to_file(iFilename, "%s", szMessage);
}

Download from GitHub: https://github.com/cofyye/cs1.6-amxmodx/tree/main/plugins/cofyye_anti_reklama

Direct Download SMA: https://github.com/cofyye/cs1.6-amxmodx/raw/main/plugins/cofyye_anti_reklama/cofyye_anti_reklama.sma

Direct Download AMXX: https://github.com/cofyye/cs1.6-amxmodx/raw/main/plugins/cofyye_anti_reklama/cofyye_anti_reklama.amxx


Licenca 👇


Plugin je free-to-use gde mozete menjati sma i ostale stvari ali ne i menjanje autora plugina. Takodje ne smete prodavati ovaj plugin drugim ljudima.



Conclusion 👇


Ukoliko imate neku zamerku na plugin, pronadjete neki bug ili slicno, obavezno mi javite da sto pre ispravim. Takodje, ako imate ideju za nadogradnju ovog plugina ili ideju za neki novi plugin, obavezno mi pisite na discordu : cofyye ili cofyye#1328

icon3
Replies
Last replied 8 months ago