[inchis] Modificare plugin

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Locked
User avatar
Ramb00
Fost moderator
Fost moderator
Posts: 966
Joined: 12 Feb 2014, 17:37
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Nume anterior: Claudiu123
Location: Calarasi
Has thanked: 28 times
Been thanked: 19 times

05 Mar 2014, 18:37

Salut vreau si eu sa imi modificati acest plugin de gag sa fie fara sunete!!
| Afiseaza codul
/* 

	amx_autogag_time 3 // minutele pentru gag cand ia autogag
	amx_gag_minute_limit 300 // limita maxima pentru gag minute
	amx_gag_minute_in_seconds 60 // minute in secunde
	amx_gag_tagname 1 // pune taguri la gag
	amx_admingag 0 // poti da si la admini gag daca e egal cu 1, daca e 0 nu poti
	amx_maxwords 200 // lista maxima de cuvinte in gag_words.ini
	amx_gagtag * // tag-ul din chat
	
	amx_gag < nume > < timp in minute > - dai gag unui jucator pentru x minute
	amx_ungag < nume > ii scoti gag-ul unui jucator
	
	/gag < nume > < timp in minute > - dai gag unui jucator pentru x minute
	/ungag < nume > ii scoti gag-ul unui jucator

	Cand un jucator cu gag iese de pe server va fi salvat intr-un fisier
	Atunci cand se va conecta pe server va avea gag exact cate minute mai avea cand a iesit de pe server
	
	Autor: Cristi. C
*/	

#include < amxmodx >
#include < amxmisc >

#include < fakemeta >
#include < engine >
#include < nvault >
#include < CC_ColorChat >

#pragma semicolon 1

#define PLUGIN "Special Admin Gag"
#define VERSION "1.0"

#define COMMAND_ACCESS  	ADMIN_KICK // accesu adminilor pentru comanda
#define MAX_PLAYERS 		32 + 1

enum
{
	INFO_NAME,
	INFO_IP,
	INFO_AUTHID
};

new const bars[ ] = "/";

new command[ ] [ ] = 
{
        "/gag", 
        "/ungag"
};

new Caccess[ ] = 
{
	COMMAND_ACCESS,
	COMMAND_ACCESS
};

new const gGagTag[ ] = "Gag#";
new const gGagFileName[ ] = "gag_words.ini";
new const gLogFileName[ ] = "GagLog.log"; 

new const gGagThinkerClassname[ ] = "GagThinker_";
new const gGagVaultName[ ] = "GaggedPlayers";

new const gGaggedSound[ ] = "misc/gag_dat.wav";
new const gUnGaggedSound[ ] = "misc/gag_scos.wav";

new const gHalfLifeGaggedSounds[ ][ ] =
{
	"barney/youtalkmuch.wav",
	"scientist/stopasking.wav",
	"scientist/shutup.wav",
	"scientist/shutup2.wav",
	"hgrunt/silence!.wav"
};

new PlayerGagged[ MAX_PLAYERS ];
new PlayerGagTime[ MAX_PLAYERS ];
new JoinTime[ MAX_PLAYERS ];
new szName[ 33 ];

new g_Words[ 562 ] [ 32 ], g_Count;
new szOldName[ MAX_PLAYERS ] [ 40 ];

new gCvarSwearGagTime;
new gCvarGagMinuteLimit;
new gCvarGagMinuteInSeconds;
new gCvarAdminGag;
new gCvarTagName;
new gCvarWords;
new gCvarTag;

new gMaxPlayers;
new gVault;

public plugin_init( ) 
{
	register_plugin( PLUGIN, PLUGIN, "Cristi .C" );
	
	register_concmd( "amx_gag", "CommandGag" ); 
	register_concmd( "amx_ungag", "CommandUngag" );
	
	register_clcmd( "say", "CheckGag" );
	register_clcmd( "say_team", "CheckGag" );
	
	register_clcmd( "say", "command_chat" );
	
	GagThinker( );
	register_think( gGagThinkerClassname, "Forward_GagThinker" );

	gCvarSwearGagTime = register_cvar( "amx_autogag_time", "3" ); // minutele pentru gag cand ia autogag
	gCvarGagMinuteLimit = register_cvar( "amx_gag_minute_limit", "300" ); // limita maxima pentru gag minute
	gCvarGagMinuteInSeconds = register_cvar( "amx_gag_minute_in_seconds", "60" ); // minute in secunde
	gCvarTagName = register_cvar( "amx_gag_tagname", "1" ); // pune taguri la gag
	gCvarAdminGag = register_cvar( "amx_admingag", "0" ); // poti da si la admini gag daca e egal cu 1, daca e 0 nu poti
	gCvarWords = register_cvar( "amx_maxwords", "200" ); // lista maxima de cuvinte in gag_words.ini
	gCvarTag = register_cvar( "amx_gagtag", "*" ); // tag-ul din chat
	
	gMaxPlayers = get_maxplayers( );
}

public plugin_precache( )
{
	new i;
	for( i = 0; i < sizeof gHalfLifeGaggedSounds; i++ )
	{
		precache_sound( gHalfLifeGaggedSounds[ i ] );
	}

	precache_sound( gGaggedSound );
	precache_sound( gUnGaggedSound );
}

public plugin_cfg( ) 
{
	static szConfigDir[ 64 ], iFile[ 64 ];

	get_localinfo ( "amxx_configsdir", szConfigDir, 63 );
	formatex ( iFile , charsmax( iFile ) , "%s/%s" , szConfigDir, gGagFileName );
	
	if( !file_exists( iFile ) )
	{
		write_file( iFile, "# Pune aici cuvintele jignitoare sau reclamele", -1 );
		log_to_file( gLogFileName, "Fisierul <%s> nu exista! Creez unul nou acum...", iFile );
	}
		
	new szBuffer[ 128 ];
        new szFile = fopen( iFile, "rt" );

        while( !feof( szFile ) )
        {
        	fgets( szFile, szBuffer, charsmax( szBuffer ) );

           	if( szBuffer[ 0 ] == '#' )
           	{
                	continue;
            	}
		
		parse( szBuffer, g_Words[ g_Count ], sizeof g_Words[ ] - 1 );
		g_Count++;
		
		if( g_Count >= get_pcvar_num ( gCvarWords ) )
		{
			break;
		}
	}
	
	fclose( szFile );
}

public client_putinserver( id ) 
{ 
	if ( is_user_connected( id ) )
	{
		JoinTime[ id ] = get_systime( );
	}
}

public client_disconnect( id )
{
	if ( PlayerGagged[ id ] == 1 )
	{	
		ColorChat( 0, RED, "^4%s^1 Jucatorul cu gag^4 %s^1(^3%s^1|^3%s^1), s-a deconectat!", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
		log_to_file( gLogFileName, "[EXIT]Jucatorul cu gag <%s><%s><%s>, s-a deconectat!", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
	}

	JoinTime[ id ] = 0 ;
	SaveGag( id );
}

public client_connect( id )
{
	LoadGag( id );
}

public command_chat( index )
{
	static szArg[ 192 ], command2[ 192 ];

        read_args( szArg, charsmax ( szArg ) );
	
        if( ! szArg [ 0 ] )
        	return PLUGIN_CONTINUE;

        remove_quotes( szArg[0] );
	
        for( new x; x < sizeof command; x++ )
        {
        	if ( equal ( szArg, command [ x ], strlen ( command [ x ] ) ) )
           	{
              		if ( get_user_flags ( index ) & Caccess [ x ] )
              		{
                 		replace( szArg, charsmax ( szArg ), bars, "" );
                 		formatex( command2, charsmax(command2), "amx_%s", szArg );
                 		client_cmd( index, command2 );
              		}	

              		break;
           	}
        }
	
        return PLUGIN_CONTINUE;
}

public CheckGag( id ) 
{
	new szSaid[ 300 ];

	read_args( szSaid, charsmax( szSaid ) );
	remove_quotes( szSaid );
	
	if( !UTIL_IsValidMessage( szSaid ) )
	{
		return PLUGIN_HANDLED;
	}

	if ( PlayerGagged[ id ] == 1 ) 
	{
		PlayerGagged[ id ] = 1;
		
		ColorChat( id, RED, "^4%s^1 Ai primit Gag pentru limbaj vulgar, asteapta^4 %d^1 minute!", get_tag( ), PlayerGagTime[ id ] );
		client_cmd( id, "speak ^"%s^"", gHalfLifeGaggedSounds[ random_num( 0, charsmax( gHalfLifeGaggedSounds ) ) ] );	

		return PLUGIN_HANDLED;
	}

	else
	{
		new i;
		for( i = 0; i < get_pcvar_num ( gCvarWords ); i++ )
		{
			if( containi( szSaid, g_Words[ i ] ) != -1 )
			{
				if( get_pcvar_num( gCvarAdminGag ) == 0 )
				{
					if ( is_user_admin ( id ) )
					{	
						return 1;
					}
				}

				get_user_name( id, szName, sizeof ( szName ) -1 );
			
				if ( get_pcvar_num( gCvarTagName ) == 1 )
				{
					client_cmd( id, "name ^"%s %s^"", gGagTag, szName );
				}
			
				szOldName[ id ] = szName;

				PlayerGagged[ id ] = 1;
				PlayerGagTime[ id ] = get_pcvar_num ( gCvarSwearGagTime );
				set_speak( id, SPEAK_MUTED );
			
				ColorChat( 0, RED, "^3%s^4 %s^1 (^3%s^1)^1 a primit AutoGag pentru limbaj sau reclama!", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ) );
				ColorChat( id, RED, "^4%s^1 Ai primit AutoGag pentru injuratura sau reclama! Timpul expira in:^4 %d^1 minute!", get_tag( ), PlayerGagTime[ id ] );
				ColorChat( id, RED, "^4%s^1 Nu mai poti folosi urmatoarele comenzi:^4 say^1,^4 say_team^1,^4 voice speak", get_tag( ) );

				log_to_file( gLogFileName, "[AUTOGAG]<%s><%s><%s> a luat AutoGag pentru ca a injurat sau a facut reclama!", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
				client_cmd( id, "speak ^"%s^"", gGaggedSound );

				return PLUGIN_HANDLED;
			}
		}
	}
	
	return PLUGIN_CONTINUE;
}

public CommandGag( id )  
{  
	if( !(get_user_flags( id ) & COMMAND_ACCESS ) )
	{
		client_cmd( id, "echo %s Nu ai acces la aceasta comanda!", get_tag( ) );
		return 1;
	}

	new szArg[ 32 ], szMinutes[ 32 ];

	read_argv( 1, szArg, charsmax ( szArg ) );

	if( equal( szArg, "" ) )
	{
		client_cmd( id, "echo amx_gag < nume > < minute > < motiv >!" );
		return 1;
	}
	
	new iPlayer = cmd_target( id, szArg, CMDTARGET_ALLOW_SELF );
	
	if( !iPlayer )
	{
		client_cmd( id, "echo %s Jucatorul specificat nu a fost gasit!", get_tag( ) );
		return 1;
	}
	
	if ( get_pcvar_num( gCvarAdminGag ) == 0 )
	{
		if ( is_user_admin( iPlayer ) )
		{
			client_cmd( id, "echo %s Nu poti da gag la Admini!", get_tag( ) );
			return 1;
		}
	}
	
	read_argv( 2, szMinutes, charsmax ( szMinutes ) );
	
	new iMinutes = str_to_num( szMinutes );

	if ( iMinutes > get_pcvar_num ( gCvarGagMinuteLimit ) )
	{
		console_print( id, "%s Ai setat %d minute, iar limita maxima de minute este %d! Setare automata pe %d.", get_tag( ), iMinutes, get_pcvar_float ( gCvarGagMinuteLimit ), get_pcvar_float ( gCvarGagMinuteLimit ) );
		iMinutes = get_pcvar_num( gCvarGagMinuteLimit ) ;
	}

	get_user_name( iPlayer, szName, sizeof ( szName ) -1 );
	
	szOldName[ iPlayer ] = szName;
	
	if( PlayerGagged[ iPlayer ] == 1 ) 
	{
		client_cmd( id, "echo %s Jucatorul %s are deja Gag!", get_tag( ), GetInfo( iPlayer, INFO_NAME ) );
		return 1;
	} 
	
	if ( get_pcvar_num( gCvarTagName ) == 1 )
	{
		client_cmd( iPlayer, "name ^"%s %s^"", gGagTag, szName );
	}
	
	PlayerGagged[ iPlayer ] = 1;
	PlayerGagTime[ iPlayer ] = iMinutes;
	set_speak( iPlayer, SPEAK_MUTED );

	ColorChat( 0, RED, "^4%s^1 ADMIN^4 %s:^1 Gag^3 %s^1(^3%s^1) pentru^4 %d^1 minute", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), iMinutes ); 
	ColorChat( iPlayer, RED, "^4%s^1 Ai primit Gag pentru ca ai injurat sau ai facut reclama!", get_tag( ) ); 
	ColorChat( iPlayer, RED, "^4%s^1 Nu mai poti folosi urmatoarele comenzi:^4 say^1,^4 say_team^1,^4 voice speak", get_tag( ) );
	
	log_to_file( gLogFileName, "[GAG]%s i-a dat gag lui <%s><%s><%s> pentru <%d> minute", GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ), iMinutes );
	client_cmd( iPlayer, "speak ^"%s^"", gGaggedSound );

	return PLUGIN_HANDLED;
}

public CommandUngag( id )  
{  
	if( !(get_user_flags( id ) & COMMAND_ACCESS ) )
	{
		client_cmd( id, "echo %s Nu ai acces la aceasta comanda!", get_tag( ) );
		return 1;
	}

	new szArg[ 32 ];
	
	read_argv( 1, szArg, charsmax( szArg ) );

	if( equal( szArg, "" ) )
	{
		client_cmd( id, "echo amx_ungag < nume > !" );
		return 1;
	}
	
	new iPlayer = cmd_target ( id, szArg, CMDTARGET_ALLOW_SELF );

	if( !iPlayer )
	{
		client_cmd(  id, "echo %s Jucatorul specificat nu a fost gasit!", get_tag( ) );
		return 1;
	}

	if( PlayerGagged[ iPlayer ] == 0 ) 
	{
		console_print( id, "%s Jucatorul %s nu are Gag!", get_tag( ), GetInfo( iPlayer, INFO_NAME ) );
		return 1;
	}
	
	if ( get_pcvar_num ( gCvarTagName ) == 1 )
	{
		client_cmd( iPlayer, "name ^"%s^"", szOldName[ iPlayer ] );
	}

	PlayerGagged[ iPlayer ] = 0;
	PlayerGagTime[ iPlayer ] = 0;
	set_speak( iPlayer, SPEAK_NORMAL );

	ColorChat( 0, RED, "^4%s^1 ADMIN^4 %s:^1 Ungag^3 %s^1(^3%s^1|^3%s^1)", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ) ); 
	ColorChat( iPlayer, RED, "^4%s^1 Ai primit Ungag de la adminul: ^4%s^1, ai grija la limbaj data viitoare!", get_tag( ), GetInfo( id, INFO_NAME ) );
	
	log_to_file( gLogFileName, "[UNGAG]<%s> i-a dat ungag lui <%s><%s><%s>", GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ) );
	client_cmd( iPlayer, "speak ^"%s^"", gUnGaggedSound );

	return PLUGIN_HANDLED;
}

public Forward_GagThinker( iEntity )
{
	if ( pev_valid( iEntity ) )
	{
		set_pev( iEntity, pev_nextthink, get_gametime( ) + 1.0 ) ;

		new id;
		for ( id = 1; id <= gMaxPlayers; id++ )
		{
			if ( is_user_connected ( id ) 	
			&& ! is_user_bot( id )
			&& PlayerGagged[ id ] == 1 
			&& PlayerGagTime[ id ] > 0
			&& ( ( get_systime( ) - JoinTime[ id ] ) >= get_pcvar_num ( gCvarGagMinuteInSeconds ) ) )
			{
				JoinTime[ id ] = get_systime( );
				PlayerGagTime[ id ] -= 1;

				if ( PlayerGagTime[ id ] <= 0 )
				{
					PlayerGagTime[ id ] = 0;
					PlayerGagged[ id ] = 0;
					set_speak( id, SPEAK_NORMAL );
					
					ColorChat( id, RED, "^4%s^3 Ai primit UnGag, ai grija la limbaj data viitoare!", get_tag( ) );
					log_to_file( gLogFileName, "[AUTOUNGAG]<%s> a primit AutoUnGag!", GetInfo( id, INFO_NAME ) );
						
					client_cmd( id, "speak ^"%s^"", gUnGaggedSound );
					client_cmd( id, "name ^"%s^"", szOldName[ id ] );
				}
			}
		}
	}
}

stock SaveGag( id )
{
	gVault = nvault_open( gGagVaultName );
	
	new szIp[ 40 ], szVaultKey[ 64 ], szVaultData[ 64 ];
	get_user_ip( id, szIp, charsmax( szIp ) );
	
	formatex( szVaultKey, charsmax( szVaultKey ), "%s-Gag", szIp );
	formatex( szVaultData, charsmax( szVaultData ), "%i#%i", PlayerGagged[ id ], PlayerGagTime[ id ] );
	
	nvault_set( gVault, szVaultKey, szVaultData );
	nvault_close( gVault );
}

stock LoadGag( id )
{
	gVault = nvault_open( gGagVaultName );
	
	new szIp[ 40 ], szVaultKey[ 64 ], szVaultData[ 64 ];
	get_user_ip( id, szIp, charsmax ( szIp ) );
	
	formatex( szVaultKey, charsmax( szVaultKey ), "%s-Gag", szIp );
	formatex( szVaultData, charsmax( szVaultData ), "%i#%i", PlayerGagged[ id ], PlayerGagTime[ id ] );
	nvault_get( gVault, szVaultKey, szVaultData, charsmax ( szVaultData ) );

	replace_all( szVaultData, charsmax( szVaultData ), "#", " " );

	new iGagOn[ 32 ], iGagTime [ 32 ];
	parse( szVaultData, iGagOn, charsmax ( iGagOn ), iGagTime, charsmax ( iGagTime ) );
	
	PlayerGagged[ id ] = str_to_num ( iGagOn );
	PlayerGagTime[ id ] = clamp ( str_to_num ( iGagTime ), 0, get_pcvar_num ( gCvarGagMinuteLimit ) );

	nvault_close( gVault );
}
							
stock GagThinker( )
{
	new iEntity = create_entity ( "info_target" );
	
	if( ! pev_valid ( iEntity ) )
	{
		return PLUGIN_HANDLED;
	}
	
	set_pev ( iEntity, pev_classname, gGagThinkerClassname );
	set_pev ( iEntity, pev_nextthink, get_gametime( ) + 1.0 );
	
	return PLUGIN_HANDLED;
}

stock get_tag( )
{
	new szTag [ 32 ];
	get_pcvar_string( gCvarTag, szTag, sizeof ( szTag ) -1 );

	return szTag;
}

stock GetInfo( id, const iInfo )
{
	new szInfoToReturn[ 64 ];
	
	switch( iInfo )
	{
		case INFO_NAME:
		{
			new szName[ 32 ];
			get_user_name( id, szName, sizeof ( szName ) -1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1, szName );
		}
		case INFO_IP:
		{
			new szIp[ 32 ];
			get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1, szIp );
		}
		case INFO_AUTHID:
		{
			new szAuthId[ 35 ];
			get_user_authid( id, szAuthId, sizeof ( szAuthId ) -1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1,  szAuthId );
		}
	}

	return szInfoToReturn;
}

stock bool:UTIL_IsValidMessage( const szSaid[ ] )
{
	new iLen = strlen( szSaid );

	if( !iLen )
	{
		return false;
	}
	
	for( new i = 0; i < iLen; i++ )
	{
		if( szSaid[ i ] != ' ' )
		{
			return true;
		}
	}
	
	return false;
}
Multumesc!! Repede daca se poate :)
Last edited by sUperstar on 13 Mar 2014, 19:06, edited 2 times in total.
Reason: 1.3. Titlul trebuie sa fie concis si sa reflecte, pe cat de mult posibil, continutul. Nu mai sunt acceptate titlurile de genul "Cerere modificare plugin".
Image
RoyalServer 2
User avatar
YONTU
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2466
Joined: 10 May 2013, 14:25
Detinator Steam: Nu
CS Status: Everyone is looking at ur shoes
Reputatie: Moderator ajutator
Fost scripter eXtreamCS
Location: Gura Humorului
Has thanked: 256 times
Been thanked: 288 times
Contact:

05 Mar 2014, 19:01

Mutat in sectiunea corespunzatoare !
„Peste douăzeci de ani vei fi dezamăgit din cauza lucrurilor pe care nu le-ai făcut, nu din cauza celor pe care le-ai făcut.” - Mark Twain
„Asa e si in viata, hotii castiga, prostii care invata pierd.” - Mihai Nemeș


Bio.LeagueCs.Ro - Biohazard v4.4 Xmas Edition
discord: IonutC#5114

Experinta in: Java/Spring boot/Angular/C/C++/C#/Javascript/Python/HTML/CSS/Pawn/SQL
Ai nevoie de ajutorul meu? Ma poti gasi doar la adresa de discord de mai sus.
User avatar
PapiLover
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 1697
Joined: 22 Aug 2013, 14:26
Detinator Steam: Nu
CS Status: n/a
Detinator server CS: n/a
SteamID: n/a
Reputatie: Restrictie moderator
Utilizator neserios (tepar)
Fost Membru Club eXtreamCS (doua luni)
Has thanked: 33 times
Been thanked: 28 times
Contact:

05 Mar 2014, 22:06

| Afiseaza codul
/* 

	amx_autogag_time 3 // minutele pentru gag cand ia autogag
	amx_gag_minute_limit 300 // limita maxima pentru gag minute
	amx_gag_minute_in_seconds 60 // minute in secunde
	amx_gag_tagname 1 // pune taguri la gag
	amx_admingag 0 // poti da si la admini gag daca e egal cu 1, daca e 0 nu poti
	amx_maxwords 200 // lista maxima de cuvinte in gag_words.ini
	amx_gagtag * // tag-ul din chat
	
	amx_gag < nume > < timp in minute > - dai gag unui jucator pentru x minute
	amx_ungag < nume > ii scoti gag-ul unui jucator
	
	/gag < nume > < timp in minute > - dai gag unui jucator pentru x minute
	/ungag < nume > ii scoti gag-ul unui jucator

	Cand un jucator cu gag iese de pe server va fi salvat intr-un fisier
	Atunci cand se va conecta pe server va avea gag exact cate minute mai avea cand a iesit de pe server
	
	Autor: Cristi. C
*/	

#include < amxmodx >
#include < amxmisc >

#include < fakemeta >
#include < engine >
#include < nvault >
#include < CC_ColorChat >

#pragma semicolon 1

#define PLUGIN "Special Admin Gag"
#define VERSION "1.0"

#define COMMAND_ACCESS  	ADMIN_KICK // accesu adminilor pentru comanda
#define MAX_PLAYERS 		32 + 1

enum
{
	INFO_NAME,
	INFO_IP,
	INFO_AUTHID
};

new const bars[ ] = "/";

new command[ ] [ ] = 
{
        "/gag", 
        "/ungag"
};

new Caccess[ ] = 
{
	COMMAND_ACCESS,
	COMMAND_ACCESS
};

new const gGagTag[ ] = "Gag#";
new const gGagFileName[ ] = "gag_words.ini";
new const gLogFileName[ ] = "GagLog.log"; 

new const gGagThinkerClassname[ ] = "GagThinker_";
new const gGagVaultName[ ] = "GaggedPlayers";

new const gGaggedSound[ ] = "misc/gag_dat.wav";
new const gUnGaggedSound[ ] = "misc/gag_scos.wav";

new const gHalfLifeGaggedSounds[ ][ ] =
{
	"barney/youtalkmuch.wav",
	"scientist/stopasking.wav",
	"scientist/shutup.wav",
	"scientist/shutup2.wav",
	"hgrunt/silence!.wav"
};

new PlayerGagged[ MAX_PLAYERS ];
new PlayerGagTime[ MAX_PLAYERS ];
new JoinTime[ MAX_PLAYERS ];
new szName[ 33 ];

new g_Words[ 562 ] [ 32 ], g_Count;
new szOldName[ MAX_PLAYERS ] [ 40 ];

new gCvarSwearGagTime;
new gCvarGagMinuteLimit;
new gCvarGagMinuteInSeconds;
new gCvarAdminGag;
new gCvarTagName;
new gCvarWords;
new gCvarTag;

new gMaxPlayers;
new gVault;

public plugin_init( ) 
{
	register_plugin( PLUGIN, PLUGIN, "Cristi .C" );
	
	register_concmd( "amx_gag", "CommandGag" ); 
	register_concmd( "amx_ungag", "CommandUngag" );
	
	register_clcmd( "say", "CheckGag" );
	register_clcmd( "say_team", "CheckGag" );
	
	register_clcmd( "say", "command_chat" );
	
	GagThinker( );
	register_think( gGagThinkerClassname, "Forward_GagThinker" );

	gCvarSwearGagTime = register_cvar( "amx_autogag_time", "3" ); // minutele pentru gag cand ia autogag
	gCvarGagMinuteLimit = register_cvar( "amx_gag_minute_limit", "300" ); // limita maxima pentru gag minute
	gCvarGagMinuteInSeconds = register_cvar( "amx_gag_minute_in_seconds", "60" ); // minute in secunde
	gCvarTagName = register_cvar( "amx_gag_tagname", "1" ); // pune taguri la gag
	gCvarAdminGag = register_cvar( "amx_admingag", "0" ); // poti da si la admini gag daca e egal cu 1, daca e 0 nu poti
	gCvarWords = register_cvar( "amx_maxwords", "200" ); // lista maxima de cuvinte in gag_words.ini
	gCvarTag = register_cvar( "amx_gagtag", "*" ); // tag-ul din chat
	
	gMaxPlayers = get_maxplayers( );
}

public plugin_precache( )
{
	new i;
	for( i = 0; i < sizeof gHalfLifeGaggedSounds; i++ )
	{
		//precache_sound( gHalfLifeGaggedSounds[ i ] );
	}

	//precache_sound( gGaggedSound );
	//precache_sound( gUnGaggedSound );
}

public plugin_cfg( ) 
{
	static szConfigDir[ 64 ], iFile[ 64 ];

	get_localinfo ( "amxx_configsdir", szConfigDir, 63 );
	formatex ( iFile , charsmax( iFile ) , "%s/%s" , szConfigDir, gGagFileName );
	
	if( !file_exists( iFile ) )
	{
		write_file( iFile, "# Pune aici cuvintele jignitoare sau reclamele", -1 );
		log_to_file( gLogFileName, "Fisierul <%s> nu exista! Creez unul nou acum...", iFile );
	}
		
	new szBuffer[ 128 ];
        new szFile = fopen( iFile, "rt" );

        while( !feof( szFile ) )
        {
        	fgets( szFile, szBuffer, charsmax( szBuffer ) );

           	if( szBuffer[ 0 ] == '#' )
           	{
                	continue;
            	}
		
		parse( szBuffer, g_Words[ g_Count ], sizeof g_Words[ ] - 1 );
		g_Count++;
		
		if( g_Count >= get_pcvar_num ( gCvarWords ) )
		{
			break;
		}
	}
	
	fclose( szFile );
}

public client_putinserver( id ) 
{ 
	if ( is_user_connected( id ) )
	{
		JoinTime[ id ] = get_systime( );
	}
}

public client_disconnect( id )
{
	if ( PlayerGagged[ id ] == 1 )
	{	
		ColorChat( 0, RED, "^4%s^1 Jucatorul cu gag^4 %s^1(^3%s^1|^3%s^1), s-a deconectat!", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
		log_to_file( gLogFileName, "[EXIT]Jucatorul cu gag <%s><%s><%s>, s-a deconectat!", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
	}

	JoinTime[ id ] = 0 ;
	SaveGag( id );
}

public client_connect( id )
{
	LoadGag( id );
}

public command_chat( index )
{
	static szArg[ 192 ], command2[ 192 ];

        read_args( szArg, charsmax ( szArg ) );
	
        if( ! szArg [ 0 ] )
        	return PLUGIN_CONTINUE;

        remove_quotes( szArg[0] );
	
        for( new x; x < sizeof command; x++ )
        {
        	if ( equal ( szArg, command [ x ], strlen ( command [ x ] ) ) )
           	{
              		if ( get_user_flags ( index ) & Caccess [ x ] )
              		{
                 		replace( szArg, charsmax ( szArg ), bars, "" );
                 		formatex( command2, charsmax(command2), "amx_%s", szArg );
                 		client_cmd( index, command2 );
              		}	

              		break;
           	}
        }
	
        return PLUGIN_CONTINUE;
}

public CheckGag( id ) 
{
	new szSaid[ 300 ];

	read_args( szSaid, charsmax( szSaid ) );
	remove_quotes( szSaid );
	
	if( !UTIL_IsValidMessage( szSaid ) )
	{
		return PLUGIN_HANDLED;
	}

	if ( PlayerGagged[ id ] == 1 ) 
	{
		PlayerGagged[ id ] = 1;
		
		ColorChat( id, RED, "^4%s^1 Ai primit Gag pentru limbaj vulgar, asteapta^4 %d^1 minute!", get_tag( ), PlayerGagTime[ id ] );
		//client_cmd( id, "speak ^"%s^"", gHalfLifeGaggedSounds[ random_num( 0, charsmax( gHalfLifeGaggedSounds ) ) ] );	

		return PLUGIN_HANDLED;
	}

	else
	{
		new i;
		for( i = 0; i < get_pcvar_num ( gCvarWords ); i++ )
		{
			if( containi( szSaid, g_Words[ i ] ) != -1 )
			{
				if( get_pcvar_num( gCvarAdminGag ) == 0 )
				{
					if ( is_user_admin ( id ) )
					{	
						return 1;
					}
				}

				get_user_name( id, szName, sizeof ( szName ) -1 );
			
				if ( get_pcvar_num( gCvarTagName ) == 1 )
				{
					client_cmd( id, "name ^"%s %s^"", gGagTag, szName );
				}
			
				szOldName[ id ] = szName;

				PlayerGagged[ id ] = 1;
				PlayerGagTime[ id ] = get_pcvar_num ( gCvarSwearGagTime );
				set_speak( id, SPEAK_MUTED );
			
				ColorChat( 0, RED, "^3%s^4 %s^1 (^3%s^1)^1 a primit AutoGag pentru limbaj sau reclama!", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ) );
				ColorChat( id, RED, "^4%s^1 Ai primit AutoGag pentru injuratura sau reclama! Timpul expira in:^4 %d^1 minute!", get_tag( ), PlayerGagTime[ id ] );
				ColorChat( id, RED, "^4%s^1 Nu mai poti folosi urmatoarele comenzi:^4 say^1,^4 say_team^1,^4 voice speak", get_tag( ) );

				log_to_file( gLogFileName, "[AUTOGAG]<%s><%s><%s> a luat AutoGag pentru ca a injurat sau a facut reclama!", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
				//client_cmd( id, "speak ^"%s^"", gGaggedSound );

				return PLUGIN_HANDLED;
			}
		}
	}
	
	return PLUGIN_CONTINUE;
}

public CommandGag( id )  
{  
	if( !(get_user_flags( id ) & COMMAND_ACCESS ) )
	{
		client_cmd( id, "echo %s Nu ai acces la aceasta comanda!", get_tag( ) );
		return 1;
	}

	new szArg[ 32 ], szMinutes[ 32 ];

	read_argv( 1, szArg, charsmax ( szArg ) );

	if( equal( szArg, "" ) )
	{
		client_cmd( id, "echo amx_gag < nume > < minute > < motiv >!" );
		return 1;
	}
	
	new iPlayer = cmd_target( id, szArg, CMDTARGET_ALLOW_SELF );
	
	if( !iPlayer )
	{
		client_cmd( id, "echo %s Jucatorul specificat nu a fost gasit!", get_tag( ) );
		return 1;
	}
	
	if ( get_pcvar_num( gCvarAdminGag ) == 0 )
	{
		if ( is_user_admin( iPlayer ) )
		{
			client_cmd( id, "echo %s Nu poti da gag la Admini!", get_tag( ) );
			return 1;
		}
	}
	
	read_argv( 2, szMinutes, charsmax ( szMinutes ) );
	
	new iMinutes = str_to_num( szMinutes );

	if ( iMinutes > get_pcvar_num ( gCvarGagMinuteLimit ) )
	{
		console_print( id, "%s Ai setat %d minute, iar limita maxima de minute este %d! Setare automata pe %d.", get_tag( ), iMinutes, get_pcvar_float ( gCvarGagMinuteLimit ), get_pcvar_float ( gCvarGagMinuteLimit ) );
		iMinutes = get_pcvar_num( gCvarGagMinuteLimit ) ;
	}

	get_user_name( iPlayer, szName, sizeof ( szName ) -1 );
	
	szOldName[ iPlayer ] = szName;
	
	if( PlayerGagged[ iPlayer ] == 1 ) 
	{
		client_cmd( id, "echo %s Jucatorul %s are deja Gag!", get_tag( ), GetInfo( iPlayer, INFO_NAME ) );
		return 1;
	} 
	
	if ( get_pcvar_num( gCvarTagName ) == 1 )
	{
		client_cmd( iPlayer, "name ^"%s %s^"", gGagTag, szName );
	}
	
	PlayerGagged[ iPlayer ] = 1;
	PlayerGagTime[ iPlayer ] = iMinutes;
	set_speak( iPlayer, SPEAK_MUTED );

	ColorChat( 0, RED, "^4%s^1 ADMIN^4 %s:^1 Gag^3 %s^1(^3%s^1) pentru^4 %d^1 minute", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), iMinutes ); 
	ColorChat( iPlayer, RED, "^4%s^1 Ai primit Gag pentru ca ai injurat sau ai facut reclama!", get_tag( ) ); 
	ColorChat( iPlayer, RED, "^4%s^1 Nu mai poti folosi urmatoarele comenzi:^4 say^1,^4 say_team^1,^4 voice speak", get_tag( ) );
	
	log_to_file( gLogFileName, "[GAG]%s i-a dat gag lui <%s><%s><%s> pentru. <%d> minute", GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ), iMinutes );
	//client_cmd( iPlayer, "speak ^"%s^"", gGaggedSound );

	return PLUGIN_HANDLED;
}

public CommandUngag( id )  
{  
	if( !(get_user_flags( id ) & COMMAND_ACCESS ) )
	{
		client_cmd( id, "echo %s Nu ai acces la aceasta comanda!", get_tag( ) );
		return 1;
	}

	new szArg[ 32 ];
	
	read_argv( 1, szArg, charsmax( szArg ) );

	if( equal( szArg, "" ) )
	{
		client_cmd( id, "echo amx_ungag < nume > !" );
		return 1;
	}
	
	new iPlayer = cmd_target ( id, szArg, CMDTARGET_ALLOW_SELF );

	if( !iPlayer )
	{
		client_cmd(  id, "echo %s Jucatorul specificat nu a fost gasit!", get_tag( ) );
		return 1;
	}

	if( PlayerGagged[ iPlayer ] == 0 ) 
	{
		console_print( id, "%s Jucatorul %s nu are Gag!", get_tag( ), GetInfo( iPlayer, INFO_NAME ) );
		return 1;
	}
	
	if ( get_pcvar_num ( gCvarTagName ) == 1 )
	{
		client_cmd( iPlayer, "name ^"%s^"", szOldName[ iPlayer ] );
	}

	PlayerGagged[ iPlayer ] = 0;
	PlayerGagTime[ iPlayer ] = 0;
	set_speak( iPlayer, SPEAK_NORMAL );

	ColorChat( 0, RED, "^4%s^1 ADMIN^4 %s:^1 Ungag^3 %s^1(^3%s^1|^3%s^1)", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ) ); 
	ColorChat( iPlayer, RED, "^4%s^1 Ai primit Ungag de la adminul: ^4%s^1, ai grija la limbaj data viitoare!", get_tag( ), GetInfo( id, INFO_NAME ) );
	
	log_to_file( gLogFileName, "[UNGAG]<%s> i-a dat ungag lui <%s><%s><%s>", GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ) );
	//client_cmd( iPlayer, "speak ^"%s^"", gUnGaggedSound );

	return PLUGIN_HANDLED;
}

public Forward_GagThinker( iEntity )
{
	if ( pev_valid( iEntity ) )
	{
		set_pev( iEntity, pev_nextthink, get_gametime( ) + 1.0 ) ;

		new id;
		for ( id = 1; id <= gMaxPlayers; id++ )
		{
			if ( is_user_connected ( id ) 	
			&& ! is_user_bot( id )
			&& PlayerGagged[ id ] == 1 
			&& PlayerGagTime[ id ] > 0
			&& ( ( get_systime( ) - JoinTime[ id ] ) >= get_pcvar_num ( gCvarGagMinuteInSeconds ) ) )
			{
				JoinTime[ id ] = get_systime( );
				PlayerGagTime[ id ] -= 1;

				if ( PlayerGagTime[ id ] <= 0 )
				{
					PlayerGagTime[ id ] = 0;
					PlayerGagged[ id ] = 0;
					set_speak( id, SPEAK_NORMAL );
					
					ColorChat( id, RED, "^4%s^3 Ai primit UnGag, ai grija la limbaj data viitoare!", get_tag( ) );
					log_to_file( gLogFileName, "[AUTOUNGAG]<%s> a primit AutoUnGag!", GetInfo( id, INFO_NAME ) );
						
					//client_cmd( id, "speak ^"%s^"", gUnGaggedSound );
					//client_cmd( id, "name ^"%s^"", szOldName[ id ] );
				}
			}
		}
	}
}

stock SaveGag( id )
{
	gVault = nvault_open( gGagVaultName );
	
	new szIp[ 40 ], szVaultKey[ 64 ], szVaultData[ 64 ];
	get_user_ip( id, szIp, charsmax( szIp ) );
	
	formatex( szVaultKey, charsmax( szVaultKey ), "%s-Gag", szIp );
	formatex( szVaultData, charsmax( szVaultData ), "%i#%i", PlayerGagged[ id ], PlayerGagTime[ id ] );
	
	nvault_set( gVault, szVaultKey, szVaultData );
	nvault_close( gVault );
}

stock LoadGag( id )
{
	gVault = nvault_open( gGagVaultName );
	
	new szIp[ 40 ], szVaultKey[ 64 ], szVaultData[ 64 ];
	get_user_ip( id, szIp, charsmax ( szIp ) );
	
	formatex( szVaultKey, charsmax( szVaultKey ), "%s-Gag", szIp );
	formatex( szVaultData, charsmax( szVaultData ), "%i#%i", PlayerGagged[ id ], PlayerGagTime[ id ] );
	nvault_get( gVault, szVaultKey, szVaultData, charsmax ( szVaultData ) );

	replace_all( szVaultData, charsmax( szVaultData ), "#", " " );

	new iGagOn[ 32 ], iGagTime [ 32 ];
	parse( szVaultData, iGagOn, charsmax ( iGagOn ), iGagTime, charsmax ( iGagTime ) );
	
	PlayerGagged[ id ] = str_to_num ( iGagOn );
	PlayerGagTime[ id ] = clamp ( str_to_num ( iGagTime ), 0, get_pcvar_num ( gCvarGagMinuteLimit ) );

	nvault_close( gVault );
}
							
stock GagThinker( )
{
	new iEntity = create_entity ( "info_target" );
	
	if( ! pev_valid ( iEntity ) )
	{
		return PLUGIN_HANDLED;
	}
	
	set_pev ( iEntity, pev_classname, gGagThinkerClassname );
	set_pev ( iEntity, pev_nextthink, get_gametime( ) + 1.0 );
	
	return PLUGIN_HANDLED;
}

stock get_tag( )
{
	new szTag [ 32 ];
	get_pcvar_string( gCvarTag, szTag, sizeof ( szTag ) -1 );

	return szTag;
}

stock GetInfo( id, const iInfo )
{
	new szInfoToReturn[ 64 ];
	
	switch( iInfo )
	{
		case INFO_NAME:
		{
			new szName[ 32 ];
			get_user_name( id, szName, sizeof ( szName ) -1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1, szName );
		}
		case INFO_IP:
		{
			new szIp[ 32 ];
			get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1, szIp );
		}
		case INFO_AUTHID:
		{
			new szAuthId[ 35 ];
			get_user_authid( id, szAuthId, sizeof ( szAuthId ) -1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1,  szAuthId );
		}
	}

	return szInfoToReturn;
}

stock bool:UTIL_IsValidMessage( const szSaid[ ] )
{
	new iLen = strlen( szSaid );

	if( !iLen )
	{
		return false;
	}
	
	for( new i = 0; i < iLen; i++ )
	{
		if( szSaid[ i ] != ' ' )
		{
			return true;
		}
	}
	
	return false;
}
User avatar
Ramb00
Fost moderator
Fost moderator
Posts: 966
Joined: 12 Feb 2014, 17:37
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Nume anterior: Claudiu123
Location: Calarasi
Has thanked: 28 times
Been thanked: 19 times

05 Mar 2014, 23:18

PapiLover wrote:
| Afiseaza codul
/* 

	amx_autogag_time 3 // minutele pentru gag cand ia autogag
	amx_gag_minute_limit 300 // limita maxima pentru gag minute
	amx_gag_minute_in_seconds 60 // minute in secunde
	amx_gag_tagname 1 // pune taguri la gag
	amx_admingag 0 // poti da si la admini gag daca e egal cu 1, daca e 0 nu poti
	amx_maxwords 200 // lista maxima de cuvinte in gag_words.ini
	amx_gagtag * // tag-ul din chat
	
	amx_gag < nume > < timp in minute > - dai gag unui jucator pentru x minute
	amx_ungag < nume > ii scoti gag-ul unui jucator
	
	/gag < nume > < timp in minute > - dai gag unui jucator pentru x minute
	/ungag < nume > ii scoti gag-ul unui jucator

	Cand un jucator cu gag iese de pe server va fi salvat intr-un fisier
	Atunci cand se va conecta pe server va avea gag exact cate minute mai avea cand a iesit de pe server
	
	Autor: Cristi. C
*/	

#include < amxmodx >
#include < amxmisc >

#include < fakemeta >
#include < engine >
#include < nvault >
#include < CC_ColorChat >

#pragma semicolon 1

#define PLUGIN "Special Admin Gag"
#define VERSION "1.0"

#define COMMAND_ACCESS  	ADMIN_KICK // accesu adminilor pentru comanda
#define MAX_PLAYERS 		32 + 1

enum
{
	INFO_NAME,
	INFO_IP,
	INFO_AUTHID
};

new const bars[ ] = "/";

new command[ ] [ ] = 
{
        "/gag", 
        "/ungag"
};

new Caccess[ ] = 
{
	COMMAND_ACCESS,
	COMMAND_ACCESS
};

new const gGagTag[ ] = "Gag#";
new const gGagFileName[ ] = "gag_words.ini";
new const gLogFileName[ ] = "GagLog.log"; 

new const gGagThinkerClassname[ ] = "GagThinker_";
new const gGagVaultName[ ] = "GaggedPlayers";

new const gGaggedSound[ ] = "misc/gag_dat.wav";
new const gUnGaggedSound[ ] = "misc/gag_scos.wav";

new const gHalfLifeGaggedSounds[ ][ ] =
{
	"barney/youtalkmuch.wav",
	"scientist/stopasking.wav",
	"scientist/shutup.wav",
	"scientist/shutup2.wav",
	"hgrunt/silence!.wav"
};

new PlayerGagged[ MAX_PLAYERS ];
new PlayerGagTime[ MAX_PLAYERS ];
new JoinTime[ MAX_PLAYERS ];
new szName[ 33 ];

new g_Words[ 562 ] [ 32 ], g_Count;
new szOldName[ MAX_PLAYERS ] [ 40 ];

new gCvarSwearGagTime;
new gCvarGagMinuteLimit;
new gCvarGagMinuteInSeconds;
new gCvarAdminGag;
new gCvarTagName;
new gCvarWords;
new gCvarTag;

new gMaxPlayers;
new gVault;

public plugin_init( ) 
{
	register_plugin( PLUGIN, PLUGIN, "Cristi .C" );
	
	register_concmd( "amx_gag", "CommandGag" ); 
	register_concmd( "amx_ungag", "CommandUngag" );
	
	register_clcmd( "say", "CheckGag" );
	register_clcmd( "say_team", "CheckGag" );
	
	register_clcmd( "say", "command_chat" );
	
	GagThinker( );
	register_think( gGagThinkerClassname, "Forward_GagThinker" );

	gCvarSwearGagTime = register_cvar( "amx_autogag_time", "3" ); // minutele pentru gag cand ia autogag
	gCvarGagMinuteLimit = register_cvar( "amx_gag_minute_limit", "300" ); // limita maxima pentru gag minute
	gCvarGagMinuteInSeconds = register_cvar( "amx_gag_minute_in_seconds", "60" ); // minute in secunde
	gCvarTagName = register_cvar( "amx_gag_tagname", "1" ); // pune taguri la gag
	gCvarAdminGag = register_cvar( "amx_admingag", "0" ); // poti da si la admini gag daca e egal cu 1, daca e 0 nu poti
	gCvarWords = register_cvar( "amx_maxwords", "200" ); // lista maxima de cuvinte in gag_words.ini
	gCvarTag = register_cvar( "amx_gagtag", "*" ); // tag-ul din chat
	
	gMaxPlayers = get_maxplayers( );
}

public plugin_precache( )
{
	new i;
	for( i = 0; i < sizeof gHalfLifeGaggedSounds; i++ )
	{
		//precache_sound( gHalfLifeGaggedSounds[ i ] );
	}

	//precache_sound( gGaggedSound );
	//precache_sound( gUnGaggedSound );
}

public plugin_cfg( ) 
{
	static szConfigDir[ 64 ], iFile[ 64 ];

	get_localinfo ( "amxx_configsdir", szConfigDir, 63 );
	formatex ( iFile , charsmax( iFile ) , "%s/%s" , szConfigDir, gGagFileName );
	
	if( !file_exists( iFile ) )
	{
		write_file( iFile, "# Pune aici cuvintele jignitoare sau reclamele", -1 );
		log_to_file( gLogFileName, "Fisierul <%s> nu exista! Creez unul nou acum...", iFile );
	}
		
	new szBuffer[ 128 ];
        new szFile = fopen( iFile, "rt" );

        while( !feof( szFile ) )
        {
        	fgets( szFile, szBuffer, charsmax( szBuffer ) );

           	if( szBuffer[ 0 ] == '#' )
           	{
                	continue;
            	}
		
		parse( szBuffer, g_Words[ g_Count ], sizeof g_Words[ ] - 1 );
		g_Count++;
		
		if( g_Count >= get_pcvar_num ( gCvarWords ) )
		{
			break;
		}
	}
	
	fclose( szFile );
}

public client_putinserver( id ) 
{ 
	if ( is_user_connected( id ) )
	{
		JoinTime[ id ] = get_systime( );
	}
}

public client_disconnect( id )
{
	if ( PlayerGagged[ id ] == 1 )
	{	
		ColorChat( 0, RED, "^4%s^1 Jucatorul cu gag^4 %s^1(^3%s^1|^3%s^1), s-a deconectat!", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
		log_to_file( gLogFileName, "[EXIT]Jucatorul cu gag <%s><%s><%s>, s-a deconectat!", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
	}

	JoinTime[ id ] = 0 ;
	SaveGag( id );
}

public client_connect( id )
{
	LoadGag( id );
}

public command_chat( index )
{
	static szArg[ 192 ], command2[ 192 ];

        read_args( szArg, charsmax ( szArg ) );
	
        if( ! szArg [ 0 ] )
        	return PLUGIN_CONTINUE;

        remove_quotes( szArg[0] );
	
        for( new x; x < sizeof command; x++ )
        {
        	if ( equal ( szArg, command [ x ], strlen ( command [ x ] ) ) )
           	{
              		if ( get_user_flags ( index ) & Caccess [ x ] )
              		{
                 		replace( szArg, charsmax ( szArg ), bars, "" );
                 		formatex( command2, charsmax(command2), "amx_%s", szArg );
                 		client_cmd( index, command2 );
              		}	

              		break;
           	}
        }
	
        return PLUGIN_CONTINUE;
}

public CheckGag( id ) 
{
	new szSaid[ 300 ];

	read_args( szSaid, charsmax( szSaid ) );
	remove_quotes( szSaid );
	
	if( !UTIL_IsValidMessage( szSaid ) )
	{
		return PLUGIN_HANDLED;
	}

	if ( PlayerGagged[ id ] == 1 ) 
	{
		PlayerGagged[ id ] = 1;
		
		ColorChat( id, RED, "^4%s^1 Ai primit Gag pentru limbaj vulgar, asteapta^4 %d^1 minute!", get_tag( ), PlayerGagTime[ id ] );
		//client_cmd( id, "speak ^"%s^"", gHalfLifeGaggedSounds[ random_num( 0, charsmax( gHalfLifeGaggedSounds ) ) ] );	

		return PLUGIN_HANDLED;
	}

	else
	{
		new i;
		for( i = 0; i < get_pcvar_num ( gCvarWords ); i++ )
		{
			if( containi( szSaid, g_Words[ i ] ) != -1 )
			{
				if( get_pcvar_num( gCvarAdminGag ) == 0 )
				{
					if ( is_user_admin ( id ) )
					{	
						return 1;
					}
				}

				get_user_name( id, szName, sizeof ( szName ) -1 );
			
				if ( get_pcvar_num( gCvarTagName ) == 1 )
				{
					client_cmd( id, "name ^"%s %s^"", gGagTag, szName );
				}
			
				szOldName[ id ] = szName;

				PlayerGagged[ id ] = 1;
				PlayerGagTime[ id ] = get_pcvar_num ( gCvarSwearGagTime );
				set_speak( id, SPEAK_MUTED );
			
				ColorChat( 0, RED, "^3%s^4 %s^1 (^3%s^1)^1 a primit AutoGag pentru limbaj sau reclama!", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ) );
				ColorChat( id, RED, "^4%s^1 Ai primit AutoGag pentru injuratura sau reclama! Timpul expira in:^4 %d^1 minute!", get_tag( ), PlayerGagTime[ id ] );
				ColorChat( id, RED, "^4%s^1 Nu mai poti folosi urmatoarele comenzi:^4 say^1,^4 say_team^1,^4 voice speak", get_tag( ) );

				log_to_file( gLogFileName, "[AUTOGAG]<%s><%s><%s> a luat AutoGag pentru ca a injurat sau a facut reclama!", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
				//client_cmd( id, "speak ^"%s^"", gGaggedSound );

				return PLUGIN_HANDLED;
			}
		}
	}
	
	return PLUGIN_CONTINUE;
}

public CommandGag( id )  
{  
	if( !(get_user_flags( id ) & COMMAND_ACCESS ) )
	{
		client_cmd( id, "echo %s Nu ai acces la aceasta comanda!", get_tag( ) );
		return 1;
	}

	new szArg[ 32 ], szMinutes[ 32 ];

	read_argv( 1, szArg, charsmax ( szArg ) );

	if( equal( szArg, "" ) )
	{
		client_cmd( id, "echo amx_gag < nume > < minute > < motiv >!" );
		return 1;
	}
	
	new iPlayer = cmd_target( id, szArg, CMDTARGET_ALLOW_SELF );
	
	if( !iPlayer )
	{
		client_cmd( id, "echo %s Jucatorul specificat nu a fost gasit!", get_tag( ) );
		return 1;
	}
	
	if ( get_pcvar_num( gCvarAdminGag ) == 0 )
	{
		if ( is_user_admin( iPlayer ) )
		{
			client_cmd( id, "echo %s Nu poti da gag la Admini!", get_tag( ) );
			return 1;
		}
	}
	
	read_argv( 2, szMinutes, charsmax ( szMinutes ) );
	
	new iMinutes = str_to_num( szMinutes );

	if ( iMinutes > get_pcvar_num ( gCvarGagMinuteLimit ) )
	{
		console_print( id, "%s Ai setat %d minute, iar limita maxima de minute este %d! Setare automata pe %d.", get_tag( ), iMinutes, get_pcvar_float ( gCvarGagMinuteLimit ), get_pcvar_float ( gCvarGagMinuteLimit ) );
		iMinutes = get_pcvar_num( gCvarGagMinuteLimit ) ;
	}

	get_user_name( iPlayer, szName, sizeof ( szName ) -1 );
	
	szOldName[ iPlayer ] = szName;
	
	if( PlayerGagged[ iPlayer ] == 1 ) 
	{
		client_cmd( id, "echo %s Jucatorul %s are deja Gag!", get_tag( ), GetInfo( iPlayer, INFO_NAME ) );
		return 1;
	} 
	
	if ( get_pcvar_num( gCvarTagName ) == 1 )
	{
		client_cmd( iPlayer, "name ^"%s %s^"", gGagTag, szName );
	}
	
	PlayerGagged[ iPlayer ] = 1;
	PlayerGagTime[ iPlayer ] = iMinutes;
	set_speak( iPlayer, SPEAK_MUTED );

	ColorChat( 0, RED, "^4%s^1 ADMIN^4 %s:^1 Gag^3 %s^1(^3%s^1) pentru^4 %d^1 minute", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), iMinutes ); 
	ColorChat( iPlayer, RED, "^4%s^1 Ai primit Gag pentru ca ai injurat sau ai facut reclama!", get_tag( ) ); 
	ColorChat( iPlayer, RED, "^4%s^1 Nu mai poti folosi urmatoarele comenzi:^4 say^1,^4 say_team^1,^4 voice speak", get_tag( ) );
	
	log_to_file( gLogFileName, "[GAG]%s i-a dat gag lui <%s><%s><%s> pentru. <%d> minute", GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ), iMinutes );
	//client_cmd( iPlayer, "speak ^"%s^"", gGaggedSound );

	return PLUGIN_HANDLED;
}

public CommandUngag( id )  
{  
	if( !(get_user_flags( id ) & COMMAND_ACCESS ) )
	{
		client_cmd( id, "echo %s Nu ai acces la aceasta comanda!", get_tag( ) );
		return 1;
	}

	new szArg[ 32 ];
	
	read_argv( 1, szArg, charsmax( szArg ) );

	if( equal( szArg, "" ) )
	{
		client_cmd( id, "echo amx_ungag < nume > !" );
		return 1;
	}
	
	new iPlayer = cmd_target ( id, szArg, CMDTARGET_ALLOW_SELF );

	if( !iPlayer )
	{
		client_cmd(  id, "echo %s Jucatorul specificat nu a fost gasit!", get_tag( ) );
		return 1;
	}

	if( PlayerGagged[ iPlayer ] == 0 ) 
	{
		console_print( id, "%s Jucatorul %s nu are Gag!", get_tag( ), GetInfo( iPlayer, INFO_NAME ) );
		return 1;
	}
	
	if ( get_pcvar_num ( gCvarTagName ) == 1 )
	{
		client_cmd( iPlayer, "name ^"%s^"", szOldName[ iPlayer ] );
	}

	PlayerGagged[ iPlayer ] = 0;
	PlayerGagTime[ iPlayer ] = 0;
	set_speak( iPlayer, SPEAK_NORMAL );

	ColorChat( 0, RED, "^4%s^1 ADMIN^4 %s:^1 Ungag^3 %s^1(^3%s^1|^3%s^1)", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ) ); 
	ColorChat( iPlayer, RED, "^4%s^1 Ai primit Ungag de la adminul: ^4%s^1, ai grija la limbaj data viitoare!", get_tag( ), GetInfo( id, INFO_NAME ) );
	
	log_to_file( gLogFileName, "[UNGAG]<%s> i-a dat ungag lui <%s><%s><%s>", GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ) );
	//client_cmd( iPlayer, "speak ^"%s^"", gUnGaggedSound );

	return PLUGIN_HANDLED;
}

public Forward_GagThinker( iEntity )
{
	if ( pev_valid( iEntity ) )
	{
		set_pev( iEntity, pev_nextthink, get_gametime( ) + 1.0 ) ;

		new id;
		for ( id = 1; id <= gMaxPlayers; id++ )
		{
			if ( is_user_connected ( id ) 	
			&& ! is_user_bot( id )
			&& PlayerGagged[ id ] == 1 
			&& PlayerGagTime[ id ] > 0
			&& ( ( get_systime( ) - JoinTime[ id ] ) >= get_pcvar_num ( gCvarGagMinuteInSeconds ) ) )
			{
				JoinTime[ id ] = get_systime( );
				PlayerGagTime[ id ] -= 1;

				if ( PlayerGagTime[ id ] <= 0 )
				{
					PlayerGagTime[ id ] = 0;
					PlayerGagged[ id ] = 0;
					set_speak( id, SPEAK_NORMAL );
					
					ColorChat( id, RED, "^4%s^3 Ai primit UnGag, ai grija la limbaj data viitoare!", get_tag( ) );
					log_to_file( gLogFileName, "[AUTOUNGAG]<%s> a primit AutoUnGag!", GetInfo( id, INFO_NAME ) );
						
					//client_cmd( id, "speak ^"%s^"", gUnGaggedSound );
					//client_cmd( id, "name ^"%s^"", szOldName[ id ] );
				}
			}
		}
	}
}

stock SaveGag( id )
{
	gVault = nvault_open( gGagVaultName );
	
	new szIp[ 40 ], szVaultKey[ 64 ], szVaultData[ 64 ];
	get_user_ip( id, szIp, charsmax( szIp ) );
	
	formatex( szVaultKey, charsmax( szVaultKey ), "%s-Gag", szIp );
	formatex( szVaultData, charsmax( szVaultData ), "%i#%i", PlayerGagged[ id ], PlayerGagTime[ id ] );
	
	nvault_set( gVault, szVaultKey, szVaultData );
	nvault_close( gVault );
}

stock LoadGag( id )
{
	gVault = nvault_open( gGagVaultName );
	
	new szIp[ 40 ], szVaultKey[ 64 ], szVaultData[ 64 ];
	get_user_ip( id, szIp, charsmax ( szIp ) );
	
	formatex( szVaultKey, charsmax( szVaultKey ), "%s-Gag", szIp );
	formatex( szVaultData, charsmax( szVaultData ), "%i#%i", PlayerGagged[ id ], PlayerGagTime[ id ] );
	nvault_get( gVault, szVaultKey, szVaultData, charsmax ( szVaultData ) );

	replace_all( szVaultData, charsmax( szVaultData ), "#", " " );

	new iGagOn[ 32 ], iGagTime [ 32 ];
	parse( szVaultData, iGagOn, charsmax ( iGagOn ), iGagTime, charsmax ( iGagTime ) );
	
	PlayerGagged[ id ] = str_to_num ( iGagOn );
	PlayerGagTime[ id ] = clamp ( str_to_num ( iGagTime ), 0, get_pcvar_num ( gCvarGagMinuteLimit ) );

	nvault_close( gVault );
}
							
stock GagThinker( )
{
	new iEntity = create_entity ( "info_target" );
	
	if( ! pev_valid ( iEntity ) )
	{
		return PLUGIN_HANDLED;
	}
	
	set_pev ( iEntity, pev_classname, gGagThinkerClassname );
	set_pev ( iEntity, pev_nextthink, get_gametime( ) + 1.0 );
	
	return PLUGIN_HANDLED;
}

stock get_tag( )
{
	new szTag [ 32 ];
	get_pcvar_string( gCvarTag, szTag, sizeof ( szTag ) -1 );

	return szTag;
}

stock GetInfo( id, const iInfo )
{
	new szInfoToReturn[ 64 ];
	
	switch( iInfo )
	{
		case INFO_NAME:
		{
			new szName[ 32 ];
			get_user_name( id, szName, sizeof ( szName ) -1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1, szName );
		}
		case INFO_IP:
		{
			new szIp[ 32 ];
			get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1, szIp );
		}
		case INFO_AUTHID:
		{
			new szAuthId[ 35 ];
			get_user_authid( id, szAuthId, sizeof ( szAuthId ) -1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1,  szAuthId );
		}
	}

	return szInfoToReturn;
}

stock bool:UTIL_IsValidMessage( const szSaid[ ] )
{
	new iLen = strlen( szSaid );

	if( !iLen )
	{
		return false;
	}
	
	for( new i = 0; i < iLen; i++ )
	{
		if( szSaid[ i ] != ' ' )
		{
			return true;
		}
	}
	
	return false;
}
Mersi pentru sunete,dar este o problema cu pluginu dau gag(merge) dar inca pot scrie
Si inca ceva daca poti sa scoti chestia aia sa nu mai schimbe nick la player ex: claudiu123 inainte,dupa Gag*claudiu123
Multumesc!
Image
User avatar
Ramb00
Fost moderator
Fost moderator
Posts: 966
Joined: 12 Feb 2014, 17:37
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Nume anterior: Claudiu123
Location: Calarasi
Has thanked: 28 times
Been thanked: 19 times

06 Mar 2014, 14:38

Up...? Nu stie nimeni?
Image
User avatar
PapiLover
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 1697
Joined: 22 Aug 2013, 14:26
Detinator Steam: Nu
CS Status: n/a
Detinator server CS: n/a
SteamID: n/a
Reputatie: Restrictie moderator
Utilizator neserios (tepar)
Fost Membru Club eXtreamCS (doua luni)
Has thanked: 33 times
Been thanked: 28 times
Contact:

07 Mar 2014, 17:19

Claudiu123 wrote:
PapiLover wrote:
| Afiseaza codul
/* 

	amx_autogag_time 3 // minutele pentru gag cand ia autogag
	amx_gag_minute_limit 300 // limita maxima pentru gag minute
	amx_gag_minute_in_seconds 60 // minute in secunde
	amx_gag_tagname 1 // pune taguri la gag
	amx_admingag 0 // poti da si la admini gag daca e egal cu 1, daca e 0 nu poti
	amx_maxwords 200 // lista maxima de cuvinte in gag_words.ini
	amx_gagtag * // tag-ul din chat
	
	amx_gag < nume > < timp in minute > - dai gag unui jucator pentru x minute
	amx_ungag < nume > ii scoti gag-ul unui jucator
	
	/gag < nume > < timp in minute > - dai gag unui jucator pentru x minute
	/ungag < nume > ii scoti gag-ul unui jucator

	Cand un jucator cu gag iese de pe server va fi salvat intr-un fisier
	Atunci cand se va conecta pe server va avea gag exact cate minute mai avea cand a iesit de pe server
	
	Autor: Cristi. C
*/	

#include < amxmodx >
#include < amxmisc >

#include < fakemeta >
#include < engine >
#include < nvault >
#include < CC_ColorChat >

#pragma semicolon 1

#define PLUGIN "Special Admin Gag"
#define VERSION "1.0"

#define COMMAND_ACCESS  	ADMIN_KICK // accesu adminilor pentru comanda
#define MAX_PLAYERS 		32 + 1

enum
{
	INFO_NAME,
	INFO_IP,
	INFO_AUTHID
};

new const bars[ ] = "/";

new command[ ] [ ] = 
{
        "/gag", 
        "/ungag"
};

new Caccess[ ] = 
{
	COMMAND_ACCESS,
	COMMAND_ACCESS
};

new const gGagTag[ ] = "Gag#";
new const gGagFileName[ ] = "gag_words.ini";
new const gLogFileName[ ] = "GagLog.log"; 

new const gGagThinkerClassname[ ] = "GagThinker_";
new const gGagVaultName[ ] = "GaggedPlayers";

new const gGaggedSound[ ] = "misc/gag_dat.wav";
new const gUnGaggedSound[ ] = "misc/gag_scos.wav";

new const gHalfLifeGaggedSounds[ ][ ] =
{
	"barney/youtalkmuch.wav",
	"scientist/stopasking.wav",
	"scientist/shutup.wav",
	"scientist/shutup2.wav",
	"hgrunt/silence!.wav"
};

new PlayerGagged[ MAX_PLAYERS ];
new PlayerGagTime[ MAX_PLAYERS ];
new JoinTime[ MAX_PLAYERS ];
new szName[ 33 ];

new g_Words[ 562 ] [ 32 ], g_Count;
new szOldName[ MAX_PLAYERS ] [ 40 ];

new gCvarSwearGagTime;
new gCvarGagMinuteLimit;
new gCvarGagMinuteInSeconds;
new gCvarAdminGag;
new gCvarTagName;
new gCvarWords;
new gCvarTag;

new gMaxPlayers;
new gVault;

public plugin_init( ) 
{
	register_plugin( PLUGIN, PLUGIN, "Cristi .C" );
	
	register_concmd( "amx_gag", "CommandGag" ); 
	register_concmd( "amx_ungag", "CommandUngag" );
	
	register_clcmd( "say", "CheckGag" );
	register_clcmd( "say_team", "CheckGag" );
	
	register_clcmd( "say", "command_chat" );
	
	GagThinker( );
	register_think( gGagThinkerClassname, "Forward_GagThinker" );

	gCvarSwearGagTime = register_cvar( "amx_autogag_time", "3" ); // minutele pentru gag cand ia autogag
	gCvarGagMinuteLimit = register_cvar( "amx_gag_minute_limit", "300" ); // limita maxima pentru gag minute
	gCvarGagMinuteInSeconds = register_cvar( "amx_gag_minute_in_seconds", "60" ); // minute in secunde
	gCvarTagName = register_cvar( "amx_gag_tagname", "1" ); // pune taguri la gag
	gCvarAdminGag = register_cvar( "amx_admingag", "0" ); // poti da si la admini gag daca e egal cu 1, daca e 0 nu poti
	gCvarWords = register_cvar( "amx_maxwords", "200" ); // lista maxima de cuvinte in gag_words.ini
	gCvarTag = register_cvar( "amx_gagtag", "*" ); // tag-ul din chat
	
	gMaxPlayers = get_maxplayers( );
}

public plugin_precache( )
{
	new i;
	for( i = 0; i < sizeof gHalfLifeGaggedSounds; i++ )
	{
		//precache_sound( gHalfLifeGaggedSounds[ i ] );
	}

	//precache_sound( gGaggedSound );
	//precache_sound( gUnGaggedSound );
}

public plugin_cfg( ) 
{
	static szConfigDir[ 64 ], iFile[ 64 ];

	get_localinfo ( "amxx_configsdir", szConfigDir, 63 );
	formatex ( iFile , charsmax( iFile ) , "%s/%s" , szConfigDir, gGagFileName );
	
	if( !file_exists( iFile ) )
	{
		write_file( iFile, "# Pune aici cuvintele jignitoare sau reclamele", -1 );
		log_to_file( gLogFileName, "Fisierul <%s> nu exista! Creez unul nou acum...", iFile );
	}
		
	new szBuffer[ 128 ];
        new szFile = fopen( iFile, "rt" );

        while( !feof( szFile ) )
        {
        	fgets( szFile, szBuffer, charsmax( szBuffer ) );

           	if( szBuffer[ 0 ] == '#' )
           	{
                	continue;
            	}
		
		parse( szBuffer, g_Words[ g_Count ], sizeof g_Words[ ] - 1 );
		g_Count++;
		
		if( g_Count >= get_pcvar_num ( gCvarWords ) )
		{
			break;
		}
	}
	
	fclose( szFile );
}

public client_putinserver( id ) 
{ 
	if ( is_user_connected( id ) )
	{
		JoinTime[ id ] = get_systime( );
	}
}

public client_disconnect( id )
{
	if ( PlayerGagged[ id ] == 1 )
	{	
		ColorChat( 0, RED, "^4%s^1 Jucatorul cu gag^4 %s^1(^3%s^1|^3%s^1), s-a deconectat!", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
		log_to_file( gLogFileName, "[EXIT]Jucatorul cu gag <%s><%s><%s>, s-a deconectat!", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
	}

	JoinTime[ id ] = 0 ;
	SaveGag( id );
}

public client_connect( id )
{
	LoadGag( id );
}

public command_chat( index )
{
	static szArg[ 192 ], command2[ 192 ];

        read_args( szArg, charsmax ( szArg ) );
	
        if( ! szArg [ 0 ] )
        	return PLUGIN_CONTINUE;

        remove_quotes( szArg[0] );
	
        for( new x; x < sizeof command; x++ )
        {
        	if ( equal ( szArg, command [ x ], strlen ( command [ x ] ) ) )
           	{
              		if ( get_user_flags ( index ) & Caccess [ x ] )
              		{
                 		replace( szArg, charsmax ( szArg ), bars, "" );
                 		formatex( command2, charsmax(command2), "amx_%s", szArg );
                 		client_cmd( index, command2 );
              		}	

              		break;
           	}
        }
	
        return PLUGIN_CONTINUE;
}

public CheckGag( id ) 
{
	new szSaid[ 300 ];

	read_args( szSaid, charsmax( szSaid ) );
	remove_quotes( szSaid );
	
	if( !UTIL_IsValidMessage( szSaid ) )
	{
		return PLUGIN_HANDLED;
	}

	if ( PlayerGagged[ id ] == 1 ) 
	{
		PlayerGagged[ id ] = 1;
		
		ColorChat( id, RED, "^4%s^1 Ai primit Gag pentru limbaj vulgar, asteapta^4 %d^1 minute!", get_tag( ), PlayerGagTime[ id ] );
		//client_cmd( id, "speak ^"%s^"", gHalfLifeGaggedSounds[ random_num( 0, charsmax( gHalfLifeGaggedSounds ) ) ] );	

		return PLUGIN_HANDLED;
	}

	else
	{
		new i;
		for( i = 0; i < get_pcvar_num ( gCvarWords ); i++ )
		{
			if( containi( szSaid, g_Words[ i ] ) != -1 )
			{
				if( get_pcvar_num( gCvarAdminGag ) == 0 )
				{
					if ( is_user_admin ( id ) )
					{	
						return 1;
					}
				}

				get_user_name( id, szName, sizeof ( szName ) -1 );
			
				if ( get_pcvar_num( gCvarTagName ) == 1 )
				{
					client_cmd( id, "name ^"%s %s^"", gGagTag, szName );
				}
			
				szOldName[ id ] = szName;

				PlayerGagged[ id ] = 1;
				PlayerGagTime[ id ] = get_pcvar_num ( gCvarSwearGagTime );
				set_speak( id, SPEAK_MUTED );
			
				ColorChat( 0, RED, "^3%s^4 %s^1 (^3%s^1)^1 a primit AutoGag pentru limbaj sau reclama!", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ) );
				ColorChat( id, RED, "^4%s^1 Ai primit AutoGag pentru injuratura sau reclama! Timpul expira in:^4 %d^1 minute!", get_tag( ), PlayerGagTime[ id ] );
				ColorChat( id, RED, "^4%s^1 Nu mai poti folosi urmatoarele comenzi:^4 say^1,^4 say_team^1,^4 voice speak", get_tag( ) );

				log_to_file( gLogFileName, "[AUTOGAG]<%s><%s><%s> a luat AutoGag pentru ca a injurat sau a facut reclama!", GetInfo( id, INFO_NAME ), GetInfo( id, INFO_IP ), GetInfo( id, INFO_AUTHID ) );
				//client_cmd( id, "speak ^"%s^"", gGaggedSound );

				return PLUGIN_HANDLED;
			}
		}
	}
	
	return PLUGIN_CONTINUE;
}

public CommandGag( id )  
{  
	if( !(get_user_flags( id ) & COMMAND_ACCESS ) )
	{
		client_cmd( id, "echo %s Nu ai acces la aceasta comanda!", get_tag( ) );
		return 1;
	}

	new szArg[ 32 ], szMinutes[ 32 ];

	read_argv( 1, szArg, charsmax ( szArg ) );

	if( equal( szArg, "" ) )
	{
		client_cmd( id, "echo amx_gag < nume > < minute > < motiv >!" );
		return 1;
	}
	
	new iPlayer = cmd_target( id, szArg, CMDTARGET_ALLOW_SELF );
	
	if( !iPlayer )
	{
		client_cmd( id, "echo %s Jucatorul specificat nu a fost gasit!", get_tag( ) );
		return 1;
	}
	
	if ( get_pcvar_num( gCvarAdminGag ) == 0 )
	{
		if ( is_user_admin( iPlayer ) )
		{
			client_cmd( id, "echo %s Nu poti da gag la Admini!", get_tag( ) );
			return 1;
		}
	}
	
	read_argv( 2, szMinutes, charsmax ( szMinutes ) );
	
	new iMinutes = str_to_num( szMinutes );

	if ( iMinutes > get_pcvar_num ( gCvarGagMinuteLimit ) )
	{
		console_print( id, "%s Ai setat %d minute, iar limita maxima de minute este %d! Setare automata pe %d.", get_tag( ), iMinutes, get_pcvar_float ( gCvarGagMinuteLimit ), get_pcvar_float ( gCvarGagMinuteLimit ) );
		iMinutes = get_pcvar_num( gCvarGagMinuteLimit ) ;
	}

	get_user_name( iPlayer, szName, sizeof ( szName ) -1 );
	
	szOldName[ iPlayer ] = szName;
	
	if( PlayerGagged[ iPlayer ] == 1 ) 
	{
		client_cmd( id, "echo %s Jucatorul %s are deja Gag!", get_tag( ), GetInfo( iPlayer, INFO_NAME ) );
		return 1;
	} 
	
	if ( get_pcvar_num( gCvarTagName ) == 1 )
	{
		client_cmd( iPlayer, "name ^"%s %s^"", gGagTag, szName );
	}
	
	PlayerGagged[ iPlayer ] = 1;
	PlayerGagTime[ iPlayer ] = iMinutes;
	set_speak( iPlayer, SPEAK_MUTED );

	ColorChat( 0, RED, "^4%s^1 ADMIN^4 %s:^1 Gag^3 %s^1(^3%s^1) pentru^4 %d^1 minute", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), iMinutes ); 
	ColorChat( iPlayer, RED, "^4%s^1 Ai primit Gag pentru ca ai injurat sau ai facut reclama!", get_tag( ) ); 
	ColorChat( iPlayer, RED, "^4%s^1 Nu mai poti folosi urmatoarele comenzi:^4 say^1,^4 say_team^1,^4 voice speak", get_tag( ) );
	
	log_to_file( gLogFileName, "[GAG]%s i-a dat gag lui <%s><%s><%s> pentru. <%d> minute", GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ), iMinutes );
	//client_cmd( iPlayer, "speak ^"%s^"", gGaggedSound );

	return PLUGIN_HANDLED;
}

public CommandUngag( id )  
{  
	if( !(get_user_flags( id ) & COMMAND_ACCESS ) )
	{
		client_cmd( id, "echo %s Nu ai acces la aceasta comanda!", get_tag( ) );
		return 1;
	}

	new szArg[ 32 ];
	
	read_argv( 1, szArg, charsmax( szArg ) );

	if( equal( szArg, "" ) )
	{
		client_cmd( id, "echo amx_ungag < nume > !" );
		return 1;
	}
	
	new iPlayer = cmd_target ( id, szArg, CMDTARGET_ALLOW_SELF );

	if( !iPlayer )
	{
		client_cmd(  id, "echo %s Jucatorul specificat nu a fost gasit!", get_tag( ) );
		return 1;
	}

	if( PlayerGagged[ iPlayer ] == 0 ) 
	{
		console_print( id, "%s Jucatorul %s nu are Gag!", get_tag( ), GetInfo( iPlayer, INFO_NAME ) );
		return 1;
	}
	
	if ( get_pcvar_num ( gCvarTagName ) == 1 )
	{
		client_cmd( iPlayer, "name ^"%s^"", szOldName[ iPlayer ] );
	}

	PlayerGagged[ iPlayer ] = 0;
	PlayerGagTime[ iPlayer ] = 0;
	set_speak( iPlayer, SPEAK_NORMAL );

	ColorChat( 0, RED, "^4%s^1 ADMIN^4 %s:^1 Ungag^3 %s^1(^3%s^1|^3%s^1)", get_tag( ), GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ) ); 
	ColorChat( iPlayer, RED, "^4%s^1 Ai primit Ungag de la adminul: ^4%s^1, ai grija la limbaj data viitoare!", get_tag( ), GetInfo( id, INFO_NAME ) );
	
	log_to_file( gLogFileName, "[UNGAG]<%s> i-a dat ungag lui <%s><%s><%s>", GetInfo( id, INFO_NAME ), GetInfo( iPlayer, INFO_NAME ), GetInfo( iPlayer, INFO_IP ), GetInfo( iPlayer, INFO_AUTHID ) );
	//client_cmd( iPlayer, "speak ^"%s^"", gUnGaggedSound );

	return PLUGIN_HANDLED;
}

public Forward_GagThinker( iEntity )
{
	if ( pev_valid( iEntity ) )
	{
		set_pev( iEntity, pev_nextthink, get_gametime( ) + 1.0 ) ;

		new id;
		for ( id = 1; id <= gMaxPlayers; id++ )
		{
			if ( is_user_connected ( id ) 	
			&& ! is_user_bot( id )
			&& PlayerGagged[ id ] == 1 
			&& PlayerGagTime[ id ] > 0
			&& ( ( get_systime( ) - JoinTime[ id ] ) >= get_pcvar_num ( gCvarGagMinuteInSeconds ) ) )
			{
				JoinTime[ id ] = get_systime( );
				PlayerGagTime[ id ] -= 1;

				if ( PlayerGagTime[ id ] <= 0 )
				{
					PlayerGagTime[ id ] = 0;
					PlayerGagged[ id ] = 0;
					set_speak( id, SPEAK_NORMAL );
					
					ColorChat( id, RED, "^4%s^3 Ai primit UnGag, ai grija la limbaj data viitoare!", get_tag( ) );
					log_to_file( gLogFileName, "[AUTOUNGAG]<%s> a primit AutoUnGag!", GetInfo( id, INFO_NAME ) );
						
					//client_cmd( id, "speak ^"%s^"", gUnGaggedSound );
					//client_cmd( id, "name ^"%s^"", szOldName[ id ] );
				}
			}
		}
	}
}

stock SaveGag( id )
{
	gVault = nvault_open( gGagVaultName );
	
	new szIp[ 40 ], szVaultKey[ 64 ], szVaultData[ 64 ];
	get_user_ip( id, szIp, charsmax( szIp ) );
	
	formatex( szVaultKey, charsmax( szVaultKey ), "%s-Gag", szIp );
	formatex( szVaultData, charsmax( szVaultData ), "%i#%i", PlayerGagged[ id ], PlayerGagTime[ id ] );
	
	nvault_set( gVault, szVaultKey, szVaultData );
	nvault_close( gVault );
}

stock LoadGag( id )
{
	gVault = nvault_open( gGagVaultName );
	
	new szIp[ 40 ], szVaultKey[ 64 ], szVaultData[ 64 ];
	get_user_ip( id, szIp, charsmax ( szIp ) );
	
	formatex( szVaultKey, charsmax( szVaultKey ), "%s-Gag", szIp );
	formatex( szVaultData, charsmax( szVaultData ), "%i#%i", PlayerGagged[ id ], PlayerGagTime[ id ] );
	nvault_get( gVault, szVaultKey, szVaultData, charsmax ( szVaultData ) );

	replace_all( szVaultData, charsmax( szVaultData ), "#", " " );

	new iGagOn[ 32 ], iGagTime [ 32 ];
	parse( szVaultData, iGagOn, charsmax ( iGagOn ), iGagTime, charsmax ( iGagTime ) );
	
	PlayerGagged[ id ] = str_to_num ( iGagOn );
	PlayerGagTime[ id ] = clamp ( str_to_num ( iGagTime ), 0, get_pcvar_num ( gCvarGagMinuteLimit ) );

	nvault_close( gVault );
}
							
stock GagThinker( )
{
	new iEntity = create_entity ( "info_target" );
	
	if( ! pev_valid ( iEntity ) )
	{
		return PLUGIN_HANDLED;
	}
	
	set_pev ( iEntity, pev_classname, gGagThinkerClassname );
	set_pev ( iEntity, pev_nextthink, get_gametime( ) + 1.0 );
	
	return PLUGIN_HANDLED;
}

stock get_tag( )
{
	new szTag [ 32 ];
	get_pcvar_string( gCvarTag, szTag, sizeof ( szTag ) -1 );

	return szTag;
}

stock GetInfo( id, const iInfo )
{
	new szInfoToReturn[ 64 ];
	
	switch( iInfo )
	{
		case INFO_NAME:
		{
			new szName[ 32 ];
			get_user_name( id, szName, sizeof ( szName ) -1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1, szName );
		}
		case INFO_IP:
		{
			new szIp[ 32 ];
			get_user_ip( id, szIp, sizeof ( szIp ) -1, 1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1, szIp );
		}
		case INFO_AUTHID:
		{
			new szAuthId[ 35 ];
			get_user_authid( id, szAuthId, sizeof ( szAuthId ) -1 );
			
			copy( szInfoToReturn, sizeof ( szInfoToReturn ) -1,  szAuthId );
		}
	}

	return szInfoToReturn;
}

stock bool:UTIL_IsValidMessage( const szSaid[ ] )
{
	new iLen = strlen( szSaid );

	if( !iLen )
	{
		return false;
	}
	
	for( new i = 0; i < iLen; i++ )
	{
		if( szSaid[ i ] != ' ' )
		{
			return true;
		}
	}
	
	return false;
}
Mersi pentru sunete,dar este o problema cu pluginu dau gag(merge) dar inca pot scrie
Si inca ceva daca poti sa scoti chestia aia sa nu mai schimbe nick la player ex: claudiu123 inainte,dupa Gag*claudiu123
Multumesc!
Inainte facea la fel ? Adica, inainte sa ti-l modific, dadeai gag si ramanea gagu ?
#Vali
Fost moderator
Fost moderator
Posts: 2611
Joined: 24 Jan 2012, 11:00
Detinator Steam: Da
SteamID: id/spryt3
Reputatie: Fost Moderator
Fost Scripter eXtreamCS.com
1.2 / 3
Location: root
Has thanked: 81 times
Been thanked: 144 times
Contact:

07 Mar 2014, 22:18

amx_gag_tagname 1
---------->

amx_gag_tagname 0
User avatar
Ramb00
Fost moderator
Fost moderator
Posts: 966
Joined: 12 Feb 2014, 17:37
Detinator Steam: Da
Reputatie: Fost moderator ajutator
Nume anterior: Claudiu123
Location: Calarasi
Has thanked: 28 times
Been thanked: 19 times

08 Mar 2014, 22:34

Rezolvat! Trebuia sa adaug amx_gag.amxx in varful listei.
T/C
Image
Locked

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 3 guests