Jump to content


Photo
- - - - -

Invazie de boti de spam


  • Please log in to reply
46 replies to this topic

#1 Alex Gabriel

Alex Gabriel

    Advanced Member

  • Members
  • PipPipPip
  • 36 posts

Posted 22 April 2015 - 01:06 PM

Salutare ,

 

Detin 3 servere krond fiecare cu 32 sloturi si de o saptamana suntem vizitati daca pot sa zic asa de zeci de boti de spam .

Sistemul nostru de gag e facut sa functioneze chiar si fara admini pe server asa ca nu ne-am putut da seama de problema decat atunci cand am gasit vreo 6-7 idleri care luau gag la interval regulat de timp.

 

Dupa ce am adaugat in pluginul de gag o functie de salvare a frazelor pe care se ia gag si am scos Krond-Functions a aparut asta ...

Acest log a fost curatat de reclamele comunitatilor devenite celebre prin prostia detinatorilor si am lasat doar acele servere care sunt inregistrate de krond/zeroping.

L 04/22/2015 - 12:01:01: Log file started (file "cstrike/addons/amxmodx/logs/gaglist.txt") (game "cstrike") (amx "1.8.3-dev+4685")
L 04/22/2015 - 12:25:53: bomj #1 : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 12:28:54: bomj #1 : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 12:31:56: bomj #1 : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 12:34:56: bomj #1 : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 12:37:58: bomj #1 : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 12:50:50: alliance_kirill::1988 : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 13:01:39: D>A>N>I>L>A : CO|NN|ECT C$DM.C$BLACKDEVIL.C0M | 89.39.13.121 GIVE ADMIN FEEE.  .
L 04/22/2015 - 13:05:01: MIAMI_TraBeL : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 13:06:40: MIAMI_TraBeL : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 13:09:42: MIAMI_TraBeL : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 13:29:11: *(The Best)* : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 13:31:52: TJ : "89.44.246.219 | S T A R .C S 1.R O |# C L A S IC"
L 04/22/2015 - 13:32:12: *(The Best)* : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )"
L 04/22/2015 - 13:34:53: TJ : "89.44.246.219 | S T A R .C S 1.R O |# C L A S IC"
L 04/22/2015 - 13:35:13: *(The Best)* : "93.119.26.140 - Primii 3 primesc V.I.P ( ADMINE GRATIS )" 

Ce e interesant este ca toti acesti boti au ping 0 stau pe loc si o data la 2 secunde mai misca ` tinta ` in pamant sau in diferite puncte ale texturii .  

Sunt `dresati` sa stea o anumita perioada pe server daca nu iau kick/ban si imediat ce serverul le scoate gag-ul il iau inapoi instant ceea ce ma face sa cred ca si pluginul de gag e `stresat` tinand cont ca serverul le raspunde cu : Mai ai ( numar minute ) din gag .

 

Toate astea adunate ( tinand cont ca intra cate 3-4-5 boti la cateva secunde distanta unul de altul ) duc la consumul marit de CPU , disconfortul jucatorilor ( am adaugat 8 si 9 ca si caractere banate pe server + altele ) pentru ca iau gag aproape din orice fraza si lucru mai mult pentru admini .

Problema aceasta apare chiar daca Krond-Functions este activ sau nu .

In disperare am facut si un plugin care da disable la say pentru cei care au ping 0 dar aici apare problema ca el verifica la fiecare fraza a fiecarui jucator pingul si cum acesti boti scriu aceiasi propozitie de 2-3 ori pe secunda apare din nou consumul CPU .

 

Am doua intrebari la care as dori un raspuns :

1 - Se poate face ceva pentru a preveni sau poate sa nu permitem accessul jucatorilor care au ping 0 pe server ?

2 - Se poate face ceva impotriva acelor detinatori de servere care in loc sa isi vada de serverul/comunitatea lor .. deranjeaza pe altii ?

Stiu ca e o problema veche treaba cu spamul pe servere dar totusi acum au cam depasit masura .

 

Respect


Edited by Alex Gabriel, 22 April 2015 - 01:06 PM.

  • 0

b_350_20_692108_381007_FFFFFF_000000.png


#2 Alex Gabriel

Alex Gabriel

    Advanced Member

  • Members
  • PipPipPip
  • 36 posts

Posted 23 April 2015 - 08:32 AM

Eu mi-am rezolvat problema cu acesti boti .

Nu mai facea fata gagul tinand cont ca ieri au trecut de la reclama la serverele lor de 2 roni si 25 de bani la injurii .

Problema s-a rezolvat punand o `parola` simpla pe chat ca in imaginea de mai jos.

2bNmPxB.png

 

Acum vad botii pe server dar nu mai au nici un efect .


  • 1

b_350_20_692108_381007_FFFFFF_000000.png


#3 by_on3

by_on3

    Newbie

  • Members
  • Pip
  • 4 posts

Posted 23 April 2015 - 06:05 PM

Salut , aceeasi problema o am si eu ca tine , deja a devenit foarte stresanta treaba .

Dupa o discutie cu :

Agent: Westfarm

Asistenta Krond - Nivel 1
Krond Solutions SRL

Care ma ajutat cu mai multe probleme la server . Mi-a raspuns --> " Mesajele de reclama nu pot fi blocate automat, sunt jucatori real cu exec in consola - este nevoie de interventia unui admin vigilent de fiecare data ... un program nu va putea face diferenta intre jucator real si acel jucator ce da spam in chat. "

Problema acestor reclame este alta , Sunt niste fake-uri trimise pe server care sa faca reclama , nici decum jucatorii :)) ... cine stie aceste lucruri nu le-ar face publice niciodata , dar cu 1 program si 1 comanda poti sa faci invazie pe serverele de cs din lume ca boti sa faca reclame :) .  


  • 0

#4 Alex Gabriel

Alex Gabriel

    Advanced Member

  • Members
  • PipPipPip
  • 36 posts

Posted 23 April 2015 - 09:52 PM

Un program nu poate detecta automat daca esti om sau nu dar poate sa te faca sa plangi pana scrii fraza ( parola ) corecta pentru a folosi chatul .

Mai jos ai pluginul folosit de mine , este creat de execution si isi cam face treaba . 

Are comanda amx_sysgag adaugata pentru a fi compatibil cu un plugin de votegag dar il poti folosi si asa fara probleme .

Schimba #define passwd "/chat" in ce fraza vrei sa ai ca si parola de access la chat . Iti garantez ca botii aia nu vor trece de el .

Apoi instruieste-ti adminii sa verifice din cand in cand ping-ul jucatorilor in consola folosind comanda : ping si sa dea afara pe cei cu ping 0 .

Sper ca te-am ajutat. Daca ai nevoie de ceva iti pot modifica pluginul sa rezolve problema :)

#include <amxmodx>
#include <amxmisc>

#define passwd "/chat"

//Bools
new bool:g_Gaged[33];
new bool:g_allowed[33];
new g_GagTime[33];
new SayText;
//Cvars
new cvar_gag_time,cvar_file;

//Words file
new const g_FileName[] = "gag_words.ini";
new g_Words[64][32], g_Count;

public plugin_init() {
	register_plugin("AMXX GAG BAN", "0.09.1", "Ex3cuTioN");
	
	//Comenzi admin
	register_concmd("amx_gag", "cmdGag", ADMIN_KICK,"- <target> <minutes>" );
	register_concmd("amx_sysgag", "cmdGagSys", ADMIN_MENU,"- <target> <minutes>" );
	register_concmd("amx_ungag", "cmdUngag", ADMIN_KICK, "- <target>");
	
	//Comanda de chat
	register_clcmd("say", "sayHandle");
	register_clcmd("say_team", "sayHandle");
	
	//Cvar-uri
	cvar_gag_time = register_cvar("amx_gag_time", "3");
	cvar_file = register_cvar("amx_gag_file", "1");
	SayText = get_user_msgid("SayText")

}

public plugin_cfg() {
	if(get_pcvar_num(cvar_file)) {
		static dir[64], g_File[128];
		
		get_localinfo( "amxx_configsdir", dir, 63 );
		formatex(g_File, 127 , "%s/%s" , dir, g_FileName);
		
		if(!file_exists(g_File))
			write_file(g_File, "[lista de cuvinte vulgare]", -1);
			
		new Len;
		while(g_Count < 64 && read_file(g_File, g_Count ,g_Words[g_Count][ 1 ], 30, Len)) {
			g_Words[g_Count][0] = Len;
			g_Count++;
		}
	}
}

public client_connect(id) {
	g_Gaged[id] = false;
	g_GagTime[id] = 0; 
	g_allowed[id] = false;
}

public client_disconnect(id) {
	if(g_Gaged[id]) {
		client_printcolor(0, "!g[CSTRIKE] !yJucatorul cu gag %s s-a deconectat.",get_name(id))
	}
	g_Gaged[id] = false
	g_GagTime[id] = 0;
	g_allowed[id] = false;
}

public sayHandle(id) {
	new said[192];
	new save[192];
	read_args(said, 191);
	read_args(save, 191);
	//if(containi(said, passwd) && !g_allowed[id])
	if (contain(said, passwd) != -1 && !g_allowed[id])
	{
		g_allowed[id] = true;
		client_printcolor(id, "!g[!yCHAT MANAGER!g] !yAi primit permisiunea de a folosi chatul")
		return PLUGIN_HANDLED;
	}
	if(!g_allowed[id])
	{
		client_printcolor(id, "!g[!yCHAT MANAGER!g] !yScrie !t/chat !ypentru a putea folosi chatul.")
		return PLUGIN_HANDLED;
	}
	
	if(!strlen(said))
		return PLUGIN_CONTINUE;
		
	if(g_Gaged[id]) {
		
		client_printcolor(id, "!g[CSTRIKE] !yMai ai de asteptat %i minute din gag.", g_GagTime[id])
		
		return PLUGIN_HANDLED;
	}
	else if(get_pcvar_num(cvar_file)) {
		new bool:Injura, i, pos;
		
		new g_Len;
		
		for(i = 0; i<g_Count; ++i) {
			if((pos = containi(said, g_Words[i][1])) != -1) {
				g_Len = g_Words[i][0];
				
				while(g_Len--)
					said[pos++] = '*';
					
				Injura = true;
				continue;
			}
		}
		
		if(Injura) {
			new timp = get_pcvar_num(cvar_gag_time);
			g_Gaged[id] = true;
			g_GagTime[id] = timp;
	
			client_printcolor(0, "!g[CSTRIKE] !yJucatorul %s a primit gag automat datorita limbajului pentru %i minute",get_name(id),timp)
			client_printcolor(id, "!g[CSTRIKE] !yAi primit gag pentru %i minute",timp)
			client_printcolor(id, "!g[CSTRIKE] !yRetry la gag se pedepseste cu ban 120 minute")
			set_task(60.0, "count", id+123, _, _, "b");
			log_to_file("gaglist.txt", "%s : %s",get_name(id),save);  
			
			return PLUGIN_HANDLED;
		}
	}
	
	return PLUGIN_CONTINUE;
}

public cmdGag(id, level, cid) {
	if(!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED;
		
	new arg[32], arg2[6];
	
	read_argv(1, arg, 31);
	read_argv(2, arg2, 5);
	
	new player = cmd_target(id, arg, 8);
	
	if(!player)
		return PLUGIN_HANDLED;
	
	if(g_Gaged[player]) {
		console_print(id,"Jucatorul %s are deja gag.",get_name(player));
		return PLUGIN_HANDLED;
	}
	
	if(equal(arg2,""))
		g_GagTime[player] = get_pcvar_num(cvar_gag_time);
	else
		g_GagTime[player] = str_to_num(arg2);
	
	g_Gaged[player] = true;

	client_printcolor(0, "!g[CSTRIKE] !yJucatorul %s a primit gag de la adminul %s pentru %i minute",get_name(player),get_name(id),g_GagTime[player])
	client_printcolor(player, "!g[CSTRIKE] !yAi primit gag pentru %i minute",g_GagTime[player])
	client_printcolor(player, "!g[CSTRIKE] !yRetry la gag se pedepseste cu ban 120 minute")
	set_task(60.0, "count", player+123, _, _, "b");
	
	
	return PLUGIN_HANDLED;
}

public cmdGagSys(id, level, cid) {
	if(!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED;
		
	new arg[32], arg2[6];
	
	read_argv(1, arg, 31);
	read_argv(2, arg2, 5);
	
	new player = cmd_target(id, arg, 8);
	
	if(!player)
		return PLUGIN_HANDLED;
	
	if(g_Gaged[player]) {
		client_printcolor(0, "!g[SYSTEM] !yJucatorul %s are deja gag",get_name(player));
		return PLUGIN_HANDLED;
	}
	
	if(equal(arg2,""))
		g_GagTime[player] = get_pcvar_num(cvar_gag_time);
	else
		g_GagTime[player] = str_to_num(arg2);
	
	g_Gaged[player] = true;

	client_printcolor(0, "!g[CSTRIKE] !yJucatorul %s a primit gag in urma votului jucatorilor pentru %i minute",get_name(player), g_GagTime[player])
	client_printcolor(player, "!g[CSTRIKE] !yAi primit gag pentru %i minute.",g_GagTime[player])
	client_printcolor(player, "!g[CSTRIKE] !yRetry la gag se pedepseste cu ban 120 minute")
	set_task(60.0, "count", player+123, _, _, "b");
	
	
	return PLUGIN_HANDLED;
}

public cmdUngag(id,level, cid) {
	if(!cmd_access(id, level, cid, 2))
		return PLUGIN_HANDLED;
		
	new arg[32];
	read_argv(1, arg, 31);
	
	new player = cmd_target(id, arg, 8);
	
	if(!player)
		return PLUGIN_HANDLED;
		
	if(!g_Gaged[player]) {
		console_print( id, "Jucatorul %s nu are gag.",get_name(player));
		return PLUGIN_HANDLED;
	}
	
	g_Gaged[player] = false;
	
	remove_task(player + 123);
	
	client_printcolor(player, "!g[CSTRIKE] !yAi primit ungag")
	
	return PLUGIN_HANDLED;
}
	
public count(task) {
	new player = task - 123;
	
	if(!is_user_connected(player))
		return PLUGIN_HANDLED;
		
	g_GagTime[player] -= 1;
	
	if(g_GagTime[player] <= 0) {
		remove_task(player + 123);
		
		client_printcolor(player, "!g[CSTRIKE] !yAi primit ungag")
		g_Gaged[player] = false;

		return PLUGIN_HANDLED;
	}
	
	return PLUGIN_CONTINUE;
}

stock get_name(id) {
	new name[32];
	
	get_user_name(id,name,31);
	
	return name;
}

stock get_steamid(id) {
	static steamid[32];
	
	get_user_authid(id,steamid,31);
	
	return steamid;
}

stock get_ip(id) {
	static ip[32];
	
	get_user_ip(id,ip,31);
	
	return ip;
}

stock client_printcolor(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, "!g", "^4") // Green Color
	replace_all(msg, 190, "!y", "^1") // Default Color
	replace_all(msg, 190, "!t", "^3") // Team Color
	
	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, SayText, _, players[i])
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
} 

  • 1

b_350_20_692108_381007_FFFFFF_000000.png


#5 Salmus

Salmus

    Administrator Dep. Hosting

  • Administrators
  • 715 posts
  • LocationBucuresti

Posted 24 April 2015 - 12:15 AM

Bine facut  :) mai rar ... felicitari creatorului si multumiri!

O solutie "eleganta" ... insa cu siguranta vor apare plangeri ca jucatorii nu stiu sa dea /chat ca sa scrie ceva  :vava:

 

 


Apoi instruieste-ti adminii sa verifice din cand in cand ping-ul jucatorilor in consola folosind comanda : ping si sa dea afara pe cei cu ping 0 .

 

Ar fi fost misto sa aiba toti ping 0 (dar nu au) s-ar fi identificat mai rapid ... insa nici valoarea aia nu se actualizeaza imediat dupa "putinserver" (nici chiar la clienti legitimi) asadar de retinut ar fi sa nu dea kick la cei cu timp de joc > 5 secunde ca s-ar putea sa fie jucatori normali. 

 

LE: Se lucreaza la KF 1.6.3-rev11, ideea e bazata cam pe acelasi lucru insa ... fara comanda de activare, false-positives la greu daca tin cont de ping 0 ... mai testam 



#6 Alex Gabriel

Alex Gabriel

    Advanced Member

  • Members
  • PipPipPip
  • 36 posts

Posted 24 April 2015 - 09:12 AM

Am incercat si eu sa ii detectez dupa ping 0 in felul urmator :

Jucator -> say/say_team -> check_ping -> if 0 -> PLUGIN_HANDLED

Am pus si un client_print pentru debug si imi detecta botii corect dar si alti jucatori . Problema poate fi de la numarul mare de say-uri dat de acei boti care ingreuneaza putin pluginul care se ocupa de chat , in cazul meu gag-ul.

SI pana la urma ... daca nu ai nimic de spus .. nu scrii /chat :)


  • 0

b_350_20_692108_381007_FFFFFF_000000.png


#7 by_on3

by_on3

    Newbie

  • Members
  • Pip
  • 4 posts

Posted 24 April 2015 - 09:56 AM

Salmus , un server fara ultima versiune la Krond-Function si ma refer la partea asta din functie :

 

 

// -> amx_krondfunctions_ipfake
// Scop: Urmareste conectarea jucatorilor multipli (falsi) ce pot declansa un comportament nedorit serverului.
// Impact: In functie de bug, se poate ajunge la blocarea serverului, crash ori chiar freeze care nu se poate repara decat cu hard-restart
// ATENTIE: Solutia nu este perfecta, in mod cert va aduce probleme indeosebi pe servere de war unde mai multi jucatori au aceiasi adresa de IP - insa alta solutie nu exista pentru serverele nonsteam publice. 
// Valoarea 0: functia este dezactivata complet, NU se va incerca stoparea efectului
// Valoarea 1: setata in mod implicit (default), nu va permite mai mult de 3 conexiuni de pe aceiasi adresa de IP.
amx_krondfunctions_ipfake 1

Botii cu reclama ar face ravagii pe un server , am avut server de la 0ping(sper sa nu fac reclama) , cand intrau boti pe server aveau ping0 si ii identificam foarte usor .

Daca vrei salmus sa iti arat cum se face reclama pe server in disperare , mie mi sa explicat , iti pot arata cu mare drag , deja mi sa acrit de aceasta treaba si as vrea sa se stopeze odata ....


  • 0

#8 by_on3

by_on3

    Newbie

  • Members
  • Pip
  • 4 posts

Posted 24 April 2015 - 10:31 AM

Scuze de dublu-post ....

Am adaugat pluginul tau alex la mine pe server , dar reclamele tot nu inceteaza sa apara ..... ele apar in continuare , chiar daca pluginul ruleaza corect .


Edited by by_on3, 24 April 2015 - 10:32 AM.

  • 0

#9 Alex Gabriel

Alex Gabriel

    Advanced Member

  • Members
  • PipPipPip
  • 36 posts

Posted 24 April 2015 - 11:37 AM

Cand incerci sa scrii ceva in chat iti apare [CHAT MANAGER] Scrie /chat pentru a putea folosi chatul. ?

Daca nu iti apare inseamna ca ai alt plugin care le permite sa scrie pana sa fie filtrat de acest plugin.

new const g_FileName[] = "gag_words.ini";

Daca nu ai acest fisier in configs/ , creeaza-l si adauga fraze banate in el dar atentie ca pentru plugin cuvantul *bot* va da gag celui care scrie *robot* si tot asa .

Da-mi un PM cu serverul tau sa vedem care e problema.


  • 0

b_350_20_692108_381007_FFFFFF_000000.png


#10 by_on3

by_on3

    Newbie

  • Members
  • Pip
  • 4 posts

Posted 24 April 2015 - 03:32 PM

Dupa ce ma ajutat alex gabriel in privat , pot spune ca pluginul lui functioneaza foarte bine la mine pe server :D , il recomand :)


  • 0

#11 cyby

cyby

    Newbie

  • Members
  • Pip
  • 2 posts
  • LocationBacău

Posted 24 April 2015 - 10:58 PM

In urma unor teste amanuntite ale mele am ajuns la concluzia ca botii lucreaza astfel.

Atunci cand se conecteaza, ei ruleaza [la serverele fara autojointeam] jointeam apoi comanda specmode [specmode e folosita de jucatorii normali], asa ca am ajuns la concluzia ca sa scanez prima comanda trimisa de jucator si daca ea este jointeam sa ia kick.

#include <amxmodx>

new bool:g_firstcommand[33];

public plugin_init()
    register_plugin("Anti-Bots [No AutoJoin]", "1.0", "cyby");
    
public client_command(id)
{
    if(!is_user_connected(id))
        return;
    
    if(!g_firstcommand[id])
    {
        static comanda[64];
        read_argv(0, comanda, charsmax(comanda));
        if(containi(comanda, "jointeam") != -1)
            server_cmd("kick #%d ^"Nu acceptam boti de spam pe server.^"", get_user_userid(id));
        g_firstcommand[id] = true;
    }
}

public client_disconnect(id)
    g_firstcommand[id] = false;

public client_putinserver(id)
    g_firstcommand[id] = false;

 

Video


  • 0

#12 Luna24

Luna24

    Newbie

  • Members
  • Pip
  • 5 posts

Posted 25 April 2015 - 12:53 AM

La mine nu functioneaza pluginu lu alex  boti spammeaza bine mersi.. iar eu sunt nevoit sa tastez tasta /chat pentru al folosi


  • 0
Posted Image

#13 cyby

cyby

    Newbie

  • Members
  • Pip
  • 2 posts
  • LocationBacău

Posted 25 April 2015 - 03:05 AM

La mine nu functioneaza pluginu lu alex  boti spammeaza bine mersi.. iar eu sunt nevoit sa tastez tasta /chat pentru al folosi

 

 Daca doresti sa utilizezi pluginul lui trebuie pus in lista de pluginuri inainte de orice plugin de chat [ghostchat/allchat sau ce mai e] sa functioneze normal.


  • 0

#14 Salmus

Salmus

    Administrator Dep. Hosting

  • Administrators
  • 715 posts
  • LocationBucuresti

Posted 25 April 2015 - 06:45 AM

Puneti-l dupa Krond-Functions.amxx, ar trebui sa fie pe al doilea rand. 



#15 Alex Gabriel

Alex Gabriel

    Advanced Member

  • Members
  • PipPipPip
  • 36 posts

Posted 25 April 2015 - 10:05 PM

Poate are active acele notificari de la krond-functions care afiseaza in chat mesajele BLOCKCMD . Pluginul nu poate bloca alt plugin pentru ca el doar filtreaza say/say_team .


  • 1

b_350_20_692108_381007_FFFFFF_000000.png


#16 Alex Gabriel

Alex Gabriel

    Advanced Member

  • Members
  • PipPipPip
  • 36 posts

Posted 29 April 2015 - 08:27 AM

Am primit ceva mesaje legate de plugin si de unde poate fi luat ...

 

SMA -> https://www.cstrike....wnloads/gag.sma

gag_words.ini -> https://www.cstrike....s/gag_words.ini

 

Compilati local si puneti-l deasupra pluginelor care au legatura cu chatul cum a zis cyby sau chiar cum a zis Salmus .. sub Krond-Functions.amxx

Pentru a scapa si de mesajele BLOCKCMD setati pluginul Krond-Functions nu mai dea mesaje pe server cand blocheaza o comanda pentru ca se intampla uneori ca pana sa blocheze pluginul de gag chatul ... sa il blocheze Krond-Functions si atunci veti vedea acel mesaj.


  • 0

b_350_20_692108_381007_FFFFFF_000000.png


#17 dan

dan

    Newbie

  • Members
  • Pip
  • 4 posts

Posted 29 April 2015 - 01:49 PM

Eu am incercat cu chat manager si a mers perfect mersi alex :)


  • 0

#18 deviss

deviss

    Newbie

  • Members
  • Pip
  • 2 posts

Posted 30 April 2015 - 08:43 AM

Se poate folosi doar chat manager, fara tot pluginul de gag? Cum ar arata pluginul in acest caz?


  • 0

#19 Alex Gabriel

Alex Gabriel

    Advanced Member

  • Members
  • PipPipPip
  • 36 posts

Posted 30 April 2015 - 09:02 AM

Salut ,

 

L-am facut rapid si nu e testat .

/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "No bot chat"
#define VERSION "0.1"
#define AUTHOR "rider"
//parola pentru chat
#define passwd "/chat"

new bool:g_allowed[33]
new SayText

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)	
	register_clcmd("say", "sayHandle")
	register_clcmd("say_team", "sayHandle")
}

public client_connect(id) {
	g_allowed[id] = false
}

public client_disconnect(id) {
	g_allowed[id] = false
}

public sayHandle(id) {
	new said[192]
	read_args(said, 191)
	if (contain(said, passwd) != -1 && !g_allowed[id])
	{
		g_allowed[id] = true;
		client_printcolor(id, "!g[!yCHAT MANAGER!g] !yAi primit permisiunea de a folosi chatul")
		return PLUGIN_HANDLED;
	}
	if(!g_allowed[id])
	{
		client_printcolor(id, "!g[!yCHAT MANAGER!g] !yScrie !t/chat !ypentru a putea folosi chatul.")
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}
//chat color
stock client_printcolor(const id, const input[], any:...)
{
	new count = 1, players[32]
	static msg[191]
	vformat(msg, 190, input, 3)
	
	replace_all(msg, 190, "!g", "^4") // Green Color
	replace_all(msg, 190, "!y", "^1") // Default Color
	replace_all(msg, 190, "!t", "^3") // Team Color
	
	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, SayText, _, players[i])
				write_byte(players[i]);
				write_string(msg);
				message_end();
			}
		}
	}
} 
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/

SMA -> https://www.cstrike..../chatpasswd.sma

 

Tot asa trebuie pus deasupra altor plugine de chat.


  • 0

b_350_20_692108_381007_FFFFFF_000000.png


#20 Alex Gabriel

Alex Gabriel

    Advanced Member

  • Members
  • PipPipPip
  • 36 posts

Posted 30 April 2015 - 12:06 PM

Am modificat pluginul de mai sus tinand cont ca nu toate serverele au doar jucatori romani pe ele . 

S-au adaugat urmatoarele :

1 - ML Support

2 - Avertismente

3 - Kick daca jucatorul spameaza mai mult de cat ii permite pluginul din cvar

#define passwd "/chat" //parola necesara pentru activarea chatului
#define serverTag "CHAT MANAGER" // Textul care apare in mesajele date pe server
cvar_maxwarns = register_cvar( "amx_maxwarns", "3" ); //numarul de avertismente pe care il primeste jucatorul pana sa ia kick

Output :

Fail si kick 

BUILD 6153 SERVER (0 CRC)
Server # 31
rider connected
[CHAT MANAGER] Scrie /chat pentru a folosi chatul! Avertisment 1/3
[CHAT MANAGER] Scrie /chat pentru a folosi chatul! Avertisment 2/3
[CHAT MANAGER] Scrie /chat pentru a folosi chatul! Avertisment 3/3
[CHAT MANAGER] Vei primi kick in 5 secunde daca nu introduci parola chatului
Kicked by Console
Kicked

Daca jucatorul introduce parola in cele 5 secunde pana sa ia kick ...

BUILD 6153 SERVER (0 CRC)
Server # 33
rider connected
[CHAT MANAGER] Scrie /chat pentru a folosi chatul! Avertisment 1/3
[CHAT MANAGER] Scrie /chat pentru a folosi chatul! Avertisment 2/3
[CHAT MANAGER] Scrie /chat pentru a folosi chatul! Avertisment 3/3
[CHAT MANAGER] Vei primi kick in 5 secunde daca nu introduci parola chatului
[CHAT MANAGER] Ai primit permisiunea de a folosi chatul

Fisiere :

chatpasswd2.sma
nbc.txt

nbc.txt trebuie pus in amxmodx/data/lang/

 

 

Attached Files


  • 2

b_350_20_692108_381007_FFFFFF_000000.png





0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users