Descriere (adica ce face el mai exact): Salut!As dori un plugin ca cel de mai jos ,dar atunci cand sau gag si ungag sa se porneasca niste sunete ,si anume ,atunci cand dau gag sa se porneasca un sunet din sound/misc/gag_dat.wav/ ,iar cand dau ungag sa se porneasca un sunet din sound/misc/gag_scos.wav
Mai am un plugin de genul acesta dar cel gag-uit poate vorbi...eu vreau ca acest plugin sa nu aiba niciun bug si nu vreau prefix in fata celui gag-uit....o data ce am dat gag-ul,acel jucator cand intra a doua oara sa isi continue minutele ramase din gag! Subliniez fara buguri!
Ai cautat pluginul?(daca da, precizeaza cum): -
Serverul impune conditii strict HLDS/REHLDS?: -
Necesita mod special?: -
Versiune AMXX Server: -
Code: Select all
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#define ACCESS ADMIN_SLAY
#define WORDS 999
#define SWEAR_GAGMINUTES 3
#define SHOW
new const g_FileName[] = "automute-words.ini";
new
bool:g_Gaged[ 33 ], g_GagTime[ 33 ],
bool:g_SwearGag[ 33 ], bool:g_CmdGag[ 33 ],
bool:g_NameChanged[33];
new g_reason[ 32 ], g_admin[ 32 ], g_name[ 33 ][ 32 ];
new g_WordsFile[ 128 ];
new g_Words[ WORDS ][ 32 ], g_Count, g_Len;
new point
new g_vault
public plugin_init()
{
register_plugin("GAG-Manager", "1.0", "ExoTiQ")
register_concmd( "amx_gag", "gag_cmd", ACCESS,"- <nume> <minute> <motiv> [Plugin by ExoTiQ]" );
register_concmd( "amx_ungag", "ungag_cmd", ACCESS, "- <nume>" );
register_clcmd( "say", "check" );
register_clcmd( "say_team", "check" );
g_vault = nvault_open("ListaDisconnect");
point = get_cvar_pointer( "amx_show_activity" );
}
public plugin_cfg()
{
static dir[ 999 ];
get_localinfo( "amxx_configsdir", dir, 998 );
formatex( g_WordsFile , 127 , "%s/%s" , dir, g_FileName );
if( !file_exists( g_WordsFile ) )
write_file( g_WordsFile, "[Gag Words]", -1 );
new Len;
while( g_Count < WORDS && read_file( g_WordsFile, g_Count ,g_Words[ g_Count ][ 1 ], 30, Len ) )
{
g_Words[ g_Count ][ 0 ] = Len;
g_Count++;
}
}
public client_connect(id)
{
LoadMutedPlayers(id)
}
public gag_cmd( id, level, cid )
{
if( !cmd_access( id, level, cid, 4 ) )
return PLUGIN_HANDLED;
new arg[ 32 ], arg2[ 6 ], reason[ 32 ];
new name[ 32 ], namet[ 32 ];
new minutes;
read_argv(1, arg, 31)
new player = cmd_target(id, arg, 9)
if (!player)
return PLUGIN_HANDLED
read_argv( 1, arg, sizeof arg - 1 );
read_argv( 2, arg2, sizeof arg2 - 1 );
read_argv( 3, reason, sizeof reason - 1 );
get_user_name( id, name, 31 );
copy( g_admin, 31, name );
copy( g_reason, 31, reason );
remove_quotes( reason );
minutes = str_to_num( arg2 );
new target = cmd_target( id, arg, 10 );
if( !target)
return PLUGIN_HANDLED;
if( g_Gaged[ target ] )
{
console_print( id, "Jucatorul deja are gag!" );
return PLUGIN_HANDLED;
}
get_user_name( target, namet, 31 );
copy( g_name[ target ], 31, namet );
g_CmdGag[ target ] = true;
g_Gaged[target] = true;
g_GagTime[ target ] = minutes;
culoare_scris( 0, "!verde[GAG-Manager] !verde%s: !verde!team%s !team a primit gag pentru !verde %d minute. !teamMotiv: !verde%s",get_pcvar_num( point ) == 2 ? name : "", namet, minutes, reason );
set_task( 60.0, "count", target + 123, _, _, "b" );
return PLUGIN_HANDLED;
}
public ungag_cmd( id,level, cid )
{
if( !cmd_access( id, level, cid, 2 ) )
return PLUGIN_HANDLED;
new arg[ 32 ], reason[ 32 ], name[ 32 ];
read_argv( 1, arg, sizeof arg - 1 );
read_argv( 2, reason, sizeof reason - 1 );
get_user_name( id, name, sizeof name - 1 );
remove_quotes( reason );
new target = cmd_target( id, arg, 11 );
if( !target )
return PLUGIN_HANDLED;
new namet[ 32 ];
get_user_name( target, namet, sizeof namet - 1 );
if( !g_Gaged[ target ] )
{
console_print( id, "Jucatorul %s nu are gag.", namet );
return PLUGIN_HANDLED;
}
g_Gaged[ target ] = false;
g_SwearGag[ target ] = false;
if( g_NameChanged[ target ] )
client_cmd( target, "name ^"%s^"", g_name[ target ] );
g_NameChanged[ target ] = false;
remove_task( target + 123 );
culoare_scris( 0, "!verde[GAG-Manager] !team%s: !team A scos gag jucatorului !verde!team%s",get_pcvar_num( point ) == 2 ? name : "", namet );
return PLUGIN_HANDLED;
}
public count( task )
{
new index = task - 123;
if( !is_user_connected( index ) )
return 0;
g_GagTime[index] -= 1;
if( g_GagTime[ index ] <= 0 )
{
remove_task( index + 123 );
new name[ 32 ]
get_user_name( index, name, 31 );
culoare_scris( 0, "!verde[GAG-Manager] !team %s Nu mai are gag!",name );
g_Gaged[ index ] = false;
if( g_NameChanged[ index ] )
client_cmd( index, "name ^"%s^"", g_name[ index ] );
return 0;
}
return 1;
}
public check( id )
{
new said[ 192 ];
read_args( said, sizeof said - 1 );
if( !strlen( said ) )
return PLUGIN_CONTINUE;
if( g_Gaged[ id ] )
{
if( g_CmdGag[ id ] )
{
culoare_scris( id,"!team[!verdeGAG-Manager!team] !verde [ !team Ai luat gag de la !verde%s !verde] ", g_admin);
culoare_scris( id,"!team[!verdeGAG-Manager!team] !verde [ !team Timp ramas pentru ungag !verde%d minutes !verde] " , g_GagTime[ id ], g_GagTime[ id ] == 1 ? "" : "s" );
culoare_scris( id,"!team[!verdeGAG-Manager!team] !verde [ !team Motiv: !verde%s !verde] ", g_reason );
return PLUGIN_HANDLED;
} else if( g_SwearGag[ id ] ) {
culoare_scris( id, "!verde[GAG-Manager] !verde [ !team Ai primit interzicere pentru folosirea chatului! (Reclama,Swear) !verde] ")
culoare_scris( id,"!verde[GAG-Manager] !verde [ !team Timp ramas pentru ungag !verde%d !verdeminutes !verde] " , g_GagTime[ id ], g_GagTime[ id ] == 1 ? "" : "s" );
return PLUGIN_HANDLED;
}
} else {
new bool:g_Sweared, i, pos;
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++ ] = '*';
g_Sweared = true;
continue;
}
}
if( g_Sweared )
{
new cmd[ 32 ], name[ 32 ];
get_user_name( id, name, sizeof name - 1 );
read_argv( 0, cmd, sizeof cmd - 1 );
copy( g_name[ id ], 31, name );
engclient_cmd( id, cmd, said );
g_Gaged[ id ] = true;
g_CmdGag[ id ] = false;
g_SwearGag[ id ] = true;
g_GagTime[ id ] = SWEAR_GAGMINUTES;
culoare_scris( 0,"!team !verde [GAG-Filter] !normal muted !team%s !normal for !verde 3 !normal minutes",name );
set_task( 60.0, "count",id+123,_,_,"b");
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public client_disconnect(id)
{
if(g_Gaged[id])
{
new Nick[32],Authid[35],userip[32]
get_user_name(id,Nick,31)
get_user_ip(id,userip,31);
get_user_authid(id,Authid,34)
culoare_scris(0, "!team[!normalGAG-Manager!team] !normal Jucatorul cu gag !verde%s !team[!normalIP: !verde%s!team] !normalA iesit de pe server.",Nick,userip)
SaveMutedPlayers(id);
remove_task( id );
g_Gaged[id] = false;
}
}
public SaveMutedPlayers(id)
{
new name[32], userip[32];
get_user_name(id,name,31);
get_user_ip(id,userip,31);
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s[IP: %s]-Muted",name,userip)
format(vaultdata,255,"%i#%i#",g_Gaged[id],g_SwearGag[id])
nvault_set(g_vault,vaultkey,vaultdata)
return PLUGIN_CONTINUE
}
public LoadMutedPlayers(id)
{
new name[32], userip[32];
get_user_name(id,name,31);
get_user_ip(id,userip,31);
new vaultkey[64],vaultdata[256]
format(vaultkey,63,"%s[IP: %s]-Muted",name,userip)
format(vaultdata,255,"%i#%i#",g_Gaged[id],g_SwearGag[id])
nvault_get(g_vault,vaultkey,vaultdata,255)
replace_all(vaultdata, 255, "#", " ")
return PLUGIN_CONTINUE
}
stock culoare_scris(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!verde", "^4")
replace_all(msg, 190, "!normal", "^1")
replace_all(msg, 190, "!team", "^3")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}