Raised This Month: $ Target: $400
 0% 

[HELP] Edit GAG plugin


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
black_heart
Senior Member
Join Date: May 2015
Old 07-16-2015 , 07:01   [HELP] Edit GAG plugin
Reply With Quote #1

Here is the code .. i want to make dhud messages to > hud messages .. and when write amx_gagmenu (reason) i want to add it ...

Code:
#include <amxmodx>
#include <amxmisc>
#include <fvault> 
#include <dhudmessage>
#include <engine>
#include <colorchat>

#define ACCESS    ADMIN_SLAY //флаг за достъп до amx_gag/amx_ungag
#define WORDS   999 //колко думи да побира automute-words.ini
#define SWEAR_GAGMINUTES 1 //за колко минути да гагва при swear (при хваната дума от automute-words.ini)

new const g_FileName[] = "automute-words.ini"; //amxmodx/configs/ папката
new Array:g_bantimes;
new g_menuOption[33]
new g_menuSettings[33]
new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new g_coloredMenus

new 
bool:g_Gaged[ 33 ],
bool:g_SwearGag[ 33 ], bool:g_CmdGag[ 33 ],
bool:g_NameChanged[33];

new g_GagTime[ 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 gEnt;
new const g_vault[] = "amx_gag";

public plugin_init() 
{
    register_plugin("GAG-Manager", "1.4", "ExoTiQ")
    
    register_concmd( "amx_gag", "gag_cmd", ACCESS,"- <name> <minutes> <reason> [Plugin by ExoTiQ]" );
    register_concmd( "amx_ungag", "ungag_cmd", ACCESS, "- <name>" );
    register_clcmd( "say", "check" );
    register_clcmd( "say_team", "check" );
    point = get_cvar_pointer( "amx_show_activity" );

    fvault_load(g_vault);

    register_clcmd("amx_gagmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
    register_menucmd(register_menuid("GAG Menu"), 1023, "actionBanMenu")

    g_bantimes = ArrayCreate();

    ArrayPushCell(g_bantimes, 0);
    ArrayPushCell(g_bantimes, 5);
    ArrayPushCell(g_bantimes, 10);
    ArrayPushCell(g_bantimes, 15);
    ArrayPushCell(g_bantimes, 30);
    ArrayPushCell(g_bantimes, 45);
    ArrayPushCell(g_bantimes, 60);
    g_coloredMenus = colored_menus()


    gEnt = create_entity( "info_target" );
		
    entity_set_string( gEnt , EV_SZ_classname, "Presmqtaniq" );
    entity_set_float( gEnt , EV_FL_nextthink, get_gametime() + 7.0); // Auto Call when plugin start.
	
    register_think( "Presmqtaniq" , "GAGThink");
	

}

public GAGThink( entityID ) {
new iPlayersList[32], iPlayersNum, id, i,name[32]
get_players(iPlayersList, iPlayersNum, "c")  // add flag "a" so we retrieve only alive players ( h is useless then )
for(i=0; i<iPlayersNum; i++)
{
id = iPlayersList[i]
if(is_user_connected(id)) {
g_GagTime[id] -= 1
if(g_GagTime[id] <= 0 && g_Gaged[id] == true && g_CmdGag[ id ]==true) {
g_Gaged[id] = false;
g_CmdGag[ id ] = false
g_GagTime[id] = 0
get_user_name(id,name,31)
ColorChat( 0, GREY,  "^4[^3BlackGaming^4] ^1The gag has expired for ^4%s",name);
SaveMutedPlayers(id) 
}
}
}

entity_set_float( gEnt, EV_FL_nextthink, get_gametime( ) + 60.0 );
}

public cmdBanMenu(id, level, cid)
{
	if (!cmd_access(id, level, cid, 1))
		return PLUGIN_HANDLED

	g_menuOption[id] = 0
	
	if (ArraySize(g_bantimes) > 0)
	{
		g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);
	}
	else
	{
		// should never happen, but failsafe
		g_menuSettings[id] = 0
	}
	displayBanMenu(id, g_menuPosition[id] = 0)

	return PLUGIN_HANDLED
}

public actionBanMenu(id, key)
{
	switch (key)
	{
		case 7:
		{
			++g_menuOption[id]
			g_menuOption[id] %= ArraySize(g_bantimes);

			g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);

			displayBanMenu(id, g_menuPosition[id])
		}
		case 8: displayBanMenu(id, ++g_menuPosition[id])
		case 9: displayBanMenu(id, --g_menuPosition[id])
		default:
		{
			new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
			new name[32], name2[32], authid[32], authid2[32]
		
			get_user_name(player, name2, 31)
			get_user_authid(id, authid, 31)
			get_user_authid(player, authid2, 31)
			get_user_name(id, name, 31)
			
			//new userid2 = get_user_name(player)


			if (g_menuSettings[id]==0) 
			{
				new maxpl = get_maxplayers();
				for (new i = 1; i <= maxpl; i++)
				{



				}
			}
			else
			{
				new tempTime[32];
				formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);
				new maxpl = get_maxplayers();
				for (new i = 1; i <= maxpl; i++)
				{
					
				}
			}
			
			
		
			server_cmd("amx_gag %s %d gagged", name2,g_menuSettings[id])
			server_exec()
			

			displayBanMenu(id, g_menuPosition[id])
		}
	}
	
	return PLUGIN_HANDLED
}

displayBanMenu(id, pos)
{
	if (pos < 0)
		return

	get_players(g_menuPlayers[id], g_menuPlayersNum[id])

	new menuBody[512]
	new b = 0
	new i
	new name[32]
	new start = pos * 7

	if (start >= g_menuPlayersNum[id])
		start = pos = g_menuPosition[id] = 0

	new len = format(menuBody, 511, g_coloredMenus ? "\dGAG menu\R%d/%d^n\w^n" : "GAG menu %d/%d^n^n",  pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
	new end = start + 7
	new keys = MENU_KEY_0|MENU_KEY_8

	if (end > g_menuPlayersNum[id])
		end = g_menuPlayersNum[id]

	for (new a = start; a < end; ++a)
	{
		i = g_menuPlayers[id][a]
		get_user_name(i, name, 31)

		if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))
		{
			++b
			
			if (g_coloredMenus)
				len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
			else
				len += format(menuBody[len], 511-len, "#. %s^n", name)
		} else {
			keys |= (1<<b)
				
			if (is_user_admin(i))
				len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
			else
				len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
		}
	}



	if (g_menuSettings[id])
		len += format(menuBody[len], 511-len, "^n8. Ban for %d minutes^n", g_menuSettings[id])
	else
		len += format(menuBody[len], 511-len, "^n8. Ban permanently^n")

	if (end != g_menuPlayersNum[id])
	{
		format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
		keys |= MENU_KEY_9
	}
	else
		format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")

	show_menu(id, keys, menuBody, -1, "GAG Menu")
}

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, "Player is already gagged!" );
        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;
    
    ColorChat( 0, GREY, "^4[^3Black Gaming^4] ^3%s: ^4%s ^1has gagged for ^4 %d ^1minutes. ^4Reason: ^3%s",get_pcvar_num( point ) == 2 ? name : "", namet, minutes, reason );

    set_dhudmessage(random_num(0,255), random_num(0,255), random_num(0,255), -1.0, 0.20, 0, 0.2, 12.0)
    show_dhudmessage(0, "Adnub %s: %s has gagged for %d minutes. Reason: %s." , get_pcvar_num( point ) == 2 ? name : "", namet, minutes, reason );

    
    
  
    
    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, "Player %s has ungagged.", 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;
    
    ColorChat( 0, GREY,  "^4[^3Black Gaming^4] ^4%s: ^1 has ungagged ^3%s",get_pcvar_num( point ) == 2 ? name : "", namet );
    
    return PLUGIN_HANDLED;
}



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 ] )
        {
            ColorChat( id, GREY, "^4[^3Black Gaming^4]  ^4[^3You have gagged by ^4%s ^4] ", g_admin);
            ColorChat( id, GREY, "^4[^3Black Gaming^4] ^4[ ^1Time before ungag ^3%d minutes ^4] " , g_GagTime[ id ], g_GagTime[ id ] == 1 ? "" : "s" );
            ColorChat( id, GREY, "^4[^3Black Gaming^4] ^4[^1Reason: ^3%s ^4] ", g_reason );
            
            return PLUGIN_HANDLED;
            
            } else if( g_SwearGag[ id ] ) {
            ColorChat( id, GREY,  "^4[^3Black Gaming^4] ^4[^1You have blocked for chat! (^4Reason: ^3Reklama,Obida) ^4] ")
            ColorChat( id, GREY, "^4[^3Black Gaming^4] ^4[^3Timeleft for ungag ^4%d ^1minutes ^4] " , 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;
            
            ColorChat( 0, GREY, "^4[^3Black Gaming^4] ^1muted ^4%s ^1for ^3 1  ^1minutes",name );
            
            
            
            return PLUGIN_HANDLED;
        }
    }
    
    return PLUGIN_CONTINUE;
}

public client_disconnect(id) 
{ 
    if(g_Gaged[id]) 
    {
        new Nick[32],userip[32]
        get_user_name(id,Nick,31)
        get_user_ip(id,userip,31,1);
        ColorChat(0, GREY,  "^4[^3Black Gaming^4] ^1Gagged Player ^3%s ^4[^3IP: ^3%s^4] ^4has left the server.",Nick,userip)        
        SaveMutedPlayers(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,1);
    new vaultkey[64],vaultdata[256]  
    format(vaultkey,63,"%s[IP: %s]-Muted",name,userip) 
    format(vaultdata,255,"%i#%i#",g_Gaged[id],g_GagTime[ id ]) 
    fvault_set_data(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,1);
    new vaultkey[64],vaultdata[256] 
    format(vaultkey,63,"%s[IP: %s]-Muted",name,userip) 
    format(vaultdata,255,"%i#%i#",g_Gaged[id], g_GagTime[ id ])
    fvault_get_data(g_vault,vaultkey,vaultdata,255) 
    replace_all(vaultdata, 255, "#", " ") 

    new isgagged[32];
    new bool:gagtime[32];
    parse(vaultdata, isgagged, 31, gagtime, 31);

    if(str_to_num(isgagged) == 1) {
    g_Gaged[id] = true
    g_CmdGag[ id ] = true
    } else {
    g_Gaged[id] = false;
    g_CmdGag[ id ] = false
    }
    g_GagTime[id] = str_to_num(gagtime);

    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();
            }
        }
    }  
}
black_heart is offline
Send a message via Skype™ to black_heart
Decak
Senior Member
Join Date: Sep 2012
Old 07-16-2015 , 08:42   Re: [HELP] Edit GAG plugin
Reply With Quote #2

Code:
...dhudmessage...
-->
Code:
...hudmessage...
Decak is offline
Reply



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 20:48.


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