| BigFoot CS 1.6 |
05-20-2020 16:52 |
Log Errors Gag Manager
Help me with this, please! :cry:
Log Errors
Code:
L 05/20/2020 - 17:02:30: [AMXX] Displaying debug trace (plugin "gag_manager.amxx", version "unknown")
L 05/20/2020 - 17:02:30: [AMXX] Run time error 10: native error (native "nvault_get")
L 05/20/2020 - 17:02:30: [AMXX] [0] phpPNO0dX.sma::LoadMutedPlayers (line 283)
L 05/20/2020 - 17:02:30: [AMXX] [1] phpPNO0dX.sma::client_connect (line 57)
L 05/20/2020 - 17:02:30: [nVault] Invalid vault id: 0
SMA Gag Manager
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");
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,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();
}
}
}
}
|