Raised This Month: $ Target: $400
 0% 

Log Errors Gag Manager


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
TERMINATORU
New Member
Join Date: Jul 2018
Old 05-20-2020 , 16:58   Re: Log Errors Gag Manager
Reply With Quote #2

Try this:

Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault> 

#define ACCESS    ADMIN_KICK
#define WORDS   999
#define SWEAR_GAGMINUTES 5
#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.8.2", "Counter-Strike 1.6")
    
    register_concmd( "amx_gag", "gag_cmd", ACCESS,"<name> <minutes> <reason>" );
    register_concmd( "amx_ungag", "ungag_cmd", ACCESS, "<name>" );
    register_clcmd( "say", "check" );
    register_clcmd( "say_team", "check" );
    g_vault = nvault_open("ListaDisconnect");
    if ( g_vault == INVALID_HANDLE )
    set_fail_state( "Error opening nVault" );
    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, "[GAG System] This player already has a 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, "!team[!verdeGAG System!team]!normal Player!team %s %s!normal received gag %d minute(s) for the following reason:!team %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, "[GAG System] Player '%s' has no 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, "!team[!verdeGAG System!team]!normal Admin!team %s!normal canceled the gag of the player!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, "!team[!verdeGAG System!team]!normal Player!team %s!normal has expired his 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 System!team]!normal You got gag from the admin!team %s", g_admin);
            culoare_scris( id,"!team[!verdeGAG System!team]!normal Time:!team %d minute(s)" , g_GagTime[ id ], g_GagTime[ id ] == 1 ? "" : "s" );
            culoare_scris( id,"!team[!verdeGAG System!team]!normal Reason:!team %s", g_reason );
            
            return PLUGIN_HANDLED;
            
            } else if( g_SwearGag[ id ] ) {
            culoare_scris( id, "!team[!verdeGAG System!team]!normal You cannot use chat because you have used inappropriate language!")
            culoare_scris( id, "!team[!verdeGAG System!team]!normal Time:!team %d minute(s)" , 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[!verdeGAG System!team]!normal Player!team %s!normal received gag 5 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[!verdeGAG System!team]!normal Player!team %s !verde[!normalIP:!team %s!verde]!normal with gag left the 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,charsmax(vaultdata)) 
    replace_all(vaultdata, charsmax(vaultdata), "#", " ") 
    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();
            }
        }
    }  
}

public plugin_end() 
{    
nvault_close(g_vault)
}
TERMINATORU is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 16:53.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode