Junior Member
|
04-18-2014
, 07:54
Re: [REQ] I need to modifie my plugin
|
#3
|
Quote:
Originally Posted by Flick3rR
Yes, but noone wil help you untill you post the true author of the plugin.. It's just hillarious to reuest someone to remove something from YOUR plugin (but it's obviously not yours). So, this is wrong and you have to post the true author...
|
OK thank you
ORigine plugin
Code:
#include <amxmisc>
#include <engine>
#define PLUGIN "Menu Plugini"
#define VERSION "1.4"
#define AUTHOR "NiCoMeDiA"
#define SITE "***********"
#define DEFAULT_TIME 600.0 // In Seconds
enum ( <<= 1 ) {
GAG_CHAT = 1,
GAG_TEAMSAY,
GAG_VOICE
};
enum _:GagData {
GAG_AUTHID[ 20 ],
GAG_TIME,
GAG_START,
GAG_FLAGS
};
new g_szAuthid[ 33 ][ 20 ];
new g_iThinker, g_iGagged;
new bool:g_bColoredMenus, Trie:g_tArrayPos, Array:g_aGagData, Array:g_aGagTimes;
new g_iMenuOption[ 33 ], g_iMenuPosition[ 33 ], g_iMenuPlayers[ 33 ][ 32 ];
new g_menuPosition[33]
new g_menuSelect[33][64]
new g_menuUnBanType[33]
new g_menuUnBanLine[33][2]
new g_menuUnBanText[33][8][32]
new g_bannedCfgFile[2][] = {"banned.cfg","listip.cfg"}
new g_coloredMenus
new menucvar
public plugin_init()
{
menucvar = register_cvar("menu_aktif","1")
register_clcmd("amx_unbanmenu","cmdUnBanMenu", ADMIN_BAN, "- displays unban menu")
register_menucmd(register_menuid("UnBan STEAMID or IP?"),(1<<0|1<<1|1<<9),"actionUnBanMenuType")
register_menucmd(register_menuid("UnBan Menu"),1023,"actionUnBanMenu")
g_coloredMenus = colored_menus()
register_clcmd("say /menu","adminmenu");
register_clcmd("say !menu","adminmenu");
register_clcmd("say .menu","adminmenu");
register_clcmd("say menu","adminmenu");
set_task(300.0,"nicomediaa",0,"",0,"b",0)
register_clcmd( "say", "CmdSay" );
register_clcmd( "say_team", "CmdTeamSay" );
register_concmd( "amx_gag", "CmdGagPlayer", ADMIN_KICK, "<nick or #userid> <time> <a|b|c>" );
register_concmd( "amx_ungag", "CmdUnGagPlayer", ADMIN_KICK, "<nick or #userid>" );
register_concmd( "amx_gagmenu", "CmdGagMenu", ADMIN_KICK, "- displays gag menu" );
register_srvcmd( "amx_gag_times", "CmdSetBanTimes" );
register_menucmd( register_menuid( "Gag Menu" ), 1023, "ActionGagMenu" );
register_message( get_user_msgid( "SayText" ), "MessageSayText" );
g_tArrayPos = TrieCreate( );
g_aGagData = ArrayCreate( GagData );
g_aGagTimes = ArrayCreate( );
g_bColoredMenus = bool:colored_menus( );
// Gag times for the gag menu (amx_gagmenu)
// Default values: 60 300 600 1800 3600 7200 86400
// Load up standart times
ArrayPushCell( g_aGagTimes, 60 );
ArrayPushCell( g_aGagTimes, 300 );
ArrayPushCell( g_aGagTimes, 600 );
ArrayPushCell( g_aGagTimes, 1800 );
ArrayPushCell( g_aGagTimes, 3600 );
ArrayPushCell( g_aGagTimes, 7200 );
ArrayPushCell( g_aGagTimes, 86400 );
// Set up entity-thinker
new const szClassname[ ] = "gag_thinker";
g_iThinker = create_entity( "info_target" );
entity_set_string( g_iThinker, EV_SZ_classname, szClassname );
register_think( szClassname, "FwdThink" );
}
public adminmenu(id)
{
if(get_pcvar_num(menucvar) == 1)
{
new menu = menu_create("\rwww.CSPLAGUE.com^n\w[ ~ Admin Menu ~ ]", "adminmenudevam")
menu_additem(menu, "\w=> \yBan Menu \w<= \r( \dOyundan Atma \r)", "1",ADMIN_BAN)
menu_additem(menu, "\w=> \yKick Menu \w<= \r( \dOyundan Atma \r)", "2",ADMIN_BAN)
menu_additem(menu, "\w=> \yUnban Menu \w<= \r( \dOyundan Atilanlarin Cezalarini Kaldirma \r)", "3",ADMIN_BAN)
menu_additem(menu, "\w=> \ySlap Menu \w<= \r( \dTokatlama / Oldurme Menusu \r)", "4",ADMIN_BAN)
menu_additem(menu, "\w=> \yTeam Menu \w<= \r( \dTakim Degistirme Menusu \r)", "5",ADMIN_BAN)
menu_additem(menu, "\w=> \yGag Menu \w<= \r( \dSusturma Menusu \r)", "6",ADMIN_BAN)
menu_additem(menu, "\w=> \yRestart Game \w<= \r( \dOyunu Yeniden Baslat \r)", "7",ADMIN_BAN)
menu_setprop(menu, MPROP_NEXTNAME, "Ileri");
menu_setprop(menu, MPROP_BACKNAME, "Geri");
menu_setprop(menu, MPROP_EXITNAME, "Menuyu Kapat");
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
new admin_name[32]
get_user_name(id , admin_name , 31 )
chat_color(0,"!t[ %s ] !y%s !g/menu !yYazarak Ozel !tAdmin Menusune !yGirdi.",SITE,admin_name)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
menu_display(id, menu, 0);
}
}
public adminmenudevam(id, menu, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new key = str_to_num(data);
switch(key)
{
case 1: {
console_cmd(id,"amx_banmenu");
}
case 2: {
console_cmd(id,"amx_kickmenu");
}
case 3: {
console_cmd(id,"amx_unbanmenu");
}
case 4: {
console_cmd(id,"amx_slapmenu");
}
case 5: {
console_cmd(id,"amx_teammenu");
}
case 6: {
console_cmd(id,"amx_gagmenu");
}
case 7: {
console_cmd(id,"amx_cvar sv_restart 3");
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public nicomediaa()
{
chat_color(0,"!y[ !t%s !y] !gCounter Strike Plugin Paylasim Platformu !t%s",SITE,SITE)
}
//===============================UNBANMENU================================//
public actionUnBanMenu(id,key) {
switch(key) {
case 8: {
displayUnBanMenu(id, ++g_menuPosition[id])
}
case 9: {
g_menuUnBanLine[id][0] = g_menuUnBanLine[id][0] - (8 + g_menuUnBanLine[id][1])
if(g_menuUnBanLine[id][0] < 0) g_menuUnBanLine[id][0] = 0
displayUnBanMenu(id, --g_menuPosition[id])
}
default: {
new name[32], authid[32], ipaddress[24]
get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
get_user_ip(id, ipaddress, 23, 1)
log_amx("UnBan: ^"%s<%d><%s><%s>^" unban ^"%s^"", name,get_user_userid(id),authid,ipaddress,g_menuUnBanText[id][key])
switch (get_cvar_num("amx_show_activity"))
{
case 2: client_print(0, print_chat, "ADMIN %s: unban %s", name, g_menuUnBanText[id][key])
case 1: client_print(0, print_chat, "ADMIN: unban %s", g_menuUnBanText[id][key])
}
if(g_menuUnBanType[id] == 1) {
server_cmd("removeip ^"%s^"; writeip", g_menuUnBanText[id][key])
server_exec()
console_print(id, "IP ^"%s^" removed from ban list", g_menuUnBanText[id][key])
}
else {
server_cmd("removeid %s; writeid", g_menuUnBanText[id][key])
console_print(id, "Authid ^"%s^" removed from ban list", g_menuUnBanText[id][key])
}
g_menuUnBanLine[id][0] = g_menuUnBanLine[id][1] = 0
displayUnBanMenu(id, g_menuPosition[id] = 0)
}
}
return PLUGIN_HANDLED
}
checkSTEAMID(steamid[]) {
new len = strlen(steamid)
if(len > 10 && equali(steamid, "STEAM_", 6) && steamid[7] == ':' && steamid[9] == ':' && str_to_num(steamid[10])) {
return 1
}
return 0
}
checkIP(ip[]) {
new len = strlen(ip)
new dots = 0, i = 0
while(isdigit(ip[i]) || ip[i]=='.')
if(ip[i++] == '.')
++dots
if(i == len && dots == 3) {
return 1
}
return 0
}
displayUnBanMenu(id,pos) {
if(pos < 0)
return
new menuBody[512]
new b = 0
new len = format(menuBody, 511, g_coloredMenus ? "\yBan Kaldir\R%d^n\w^n" : "UnBan Menu %d^n^n", id, "UNBAN_MENU", pos + 1)
new keys = (1<<9)
new textlen, line
new type = g_menuUnBanType[id]
new temp[32], banTime[32], disable
if(file_exists(g_bannedCfgFile[type])) {
line = g_menuUnBanLine[id][0]
while((line = read_file(g_bannedCfgFile[type], line, g_menuSelect[id], 63, textlen))) {
temp[0] = '^0'
banTime[0] = '^0'
g_menuUnBanText[id][b][0] = '^0'
disable = 0
if(textlen < 9)
disable = 1
else if(parse(g_menuSelect[id], temp, 31, banTime, 31, g_menuUnBanText[id][b], 31) != 3)
disable = 1
else if((type == 1 && !checkIP(g_menuUnBanText[id][b])) || (type == 0 && !checkSTEAMID(g_menuUnBanText[id][b])))
disable = 1
if(disable == 0) {
keys |= (1<<b)
if(g_coloredMenus)
len += format(menuBody[len], 511-len, "%d. %s\R\r%s^n\w", b, g_menuUnBanText[id][b++], banTime)
else
len += format(menuBody[len], 511-len, "%d. %s ( %s )^n", b, g_menuUnBanText[id][b++], banTime)
}
else {
if(g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, g_menuUnBanText[id][b++])
else
len += format(menuBody[len], 511-len, "#. %s^n", b, g_menuUnBanText[id][b++])
}
if(b == 8) break
}
if(b == 8 && read_file(g_bannedCfgFile[type], line, g_menuSelect[id], 63, textlen) > 0) {
format(menuBody[len], 511-len, "^n9. More...^n0. %s",id, pos ? "Back" : "Exit",id)
keys |= (1<<8)
}
else
format(menuBody[len], 511-len, "^n0. %s", pos ? "Back" : "Exit",id)
g_menuUnBanLine[id][1] = line - g_menuUnBanLine[id][0]
g_menuUnBanLine[id][0] = line
show_menu(id, keys, menuBody, -1, "UnBan Menu")
}
return
}
public actionUnBanMenuType(id,key) {
switch(key) {
case 9: return PLUGIN_HANDLED
default: {
g_menuUnBanType[id] = key // 0 = STEAMID, 1 = IP
g_menuUnBanLine[id][0] = g_menuUnBanLine[id][1] = 0
displayUnBanMenu(id, g_menuPosition[id] = 0)
}
}
return PLUGIN_HANDLED
}
displayUnBanMenuType(id) {
new menuBody[512]
new len = format(menuBody, 511, g_coloredMenus ? "\rBanned \yKaldirma Turu?^n\w^n" :"UnBan STEAMID or IP?^n^n",id)
new keys = (1<<0)|(1<<1)|(1<<9)
len += format(menuBody[len], 511-len, "1. \rSinirsiz \yBanlari Kaldir^n",id)
len += format(menuBody[len], 511-len, "\w2. \rNormal \yBanlari Kaldir^n",id)
format(menuBody[len], 511-len, "^n\w0. \rExit",id)
show_menu(id, keys, menuBody, -1, "UnBan STEAMID or IP?")
}
public cmdUnBanMenu(id,level,cid) {
if(!cmd_access(id,level,cid,1))
return PLUGIN_HANDLED
g_menuUnBanType[id] = -1
displayUnBanMenuType(id)
return PLUGIN_HANDLED
}
stock chat_color(const id, const input[], any:...) {
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
replace_all(msg, 190, "!team2", "^0")
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();
}
}
}
}
//======================================GAGMENU=====================================//
public CmdSetBanTimes( ) {
new iArgs = read_argc( );
if( iArgs <= 1 ) {
server_print( "Usage: amx_gag_times <time1> [time2] [time3] ..." );
return;
}
ArrayClear( g_aGagTimes );
new szBuffer[ 32 ], iTime;
for( new i = 1; i < iArgs; i++ ) {
read_argv( i, szBuffer, 31 );
iTime = str_to_num( szBuffer );
if( iTime > 86400 ) {
server_print( "[AMXX GAG] Time more then 86400 is not allowed!" );
continue;
}
ArrayPushCell( g_aGagTimes, iTime );
}
}
public plugin_end( ) {
TrieDestroy( g_tArrayPos );
ArrayDestroy( g_aGagData );
ArrayDestroy( g_aGagTimes );
}
public client_putinserver( id )
if( CheckGagFlag( id, GAG_VOICE ) )
set_speak( id, SPEAK_MUTED );
public client_authorized( id )
get_user_authid( id, g_szAuthid[ id ], 19 );
public client_disconnect( id ) {
if( TrieKeyExists( g_tArrayPos, g_szAuthid[ id ] ) ) {
new szName[ 32 ];
get_user_name( id, szName, 31 );
new iPlayers[ 32 ], iNum, iPlayer;
get_players( iPlayers, iNum, "ch" );
for( new i; i < iNum; i++ ) {
iPlayer = iPlayers[ i ];
if( get_user_flags( iPlayer ) & ADMIN_KICK )
client_print( iPlayer, print_chat, "[AMXX] Gagged player ^"%s<%s>^" has disconnected!", szName, g_szAuthid[ id ] );
}
}
g_szAuthid[ id ][ 0 ] = '^0';
}
public client_infochanged( id ) {
if( !CheckGagFlag( id, ( GAG_CHAT | GAG_TEAMSAY ) ) )
return;
static const name[ ] = "name";
static szNewName[ 32 ], szOldName[ 32 ];
get_user_info( id, name, szNewName, 31 );
get_user_name( id, szOldName, 31 );
if( !equal( szNewName, szOldName ) ) {
client_print( id, print_chat, "[AMXX] Gagged players cannot change their names!" );
set_user_info( id, name, szOldName );
}
}
public MessageSayText( ) {
static const Cstrike_Name_Change[ ] = "#Cstrike_Name_Change";
new szMessage[ sizeof( Cstrike_Name_Change ) + 1 ];
get_msg_arg_string( 2, szMessage, sizeof( szMessage ) - 1 );
if( equal( szMessage, Cstrike_Name_Change ) ) {
new szName[ 32 ], id;
for( new i = 3; i <= 4; i++ ) {
get_msg_arg_string( i, szName, 31 );
id = get_user_index( szName );
if( is_user_connected( id ) ) {
if( CheckGagFlag( id, ( GAG_CHAT | GAG_TEAMSAY ) ) )
return PLUGIN_HANDLED;
break;
}
}
}
return PLUGIN_CONTINUE;
}
public FwdThink( const iEntity ) {
if( !g_iGagged )
return;
new Float:fGametime;
fGametime = get_gametime( );
new data[ GagData ], id, szName[ 32 ];
for( new i = 0; i < g_iGagged; i++ ) {
ArrayGetArray( g_aGagData, i, data );
if( ( Float:data[ GAG_START ] + Float:data[ GAG_TIME ] - 0.5 ) <= fGametime ) {
id = find_player( "c", data[ GAG_AUTHID ] );
if( is_user_connected( id ) ) {
get_user_name( id, szName, 31 );
client_print( 0, print_chat, "[AMXX] Player ^"%s^" is no longer gagged.", szName );
}
DeleteGag( i );
i--;
}
}
if( !g_iGagged )
return;
new Float:flNextTime = 999999.9;
for( new i = 0; i < g_iGagged; i++ ) {
ArrayGetArray( g_aGagData, i, data );
flNextTime = floatmin( flNextTime, Float:data[ GAG_START ] + Float:data[ GAG_TIME ] );
}
entity_set_float( iEntity, EV_FL_nextthink, flNextTime );
}
public CmdSay( const id )
return CheckSay( id, 0 );
public CmdTeamSay( const id )
return CheckSay( id, 1 );
CheckSay( const id, const bTeam ) {
new iArrayPos;
if( TrieGetCell( g_tArrayPos, g_szAuthid[ id ], iArrayPos ) ) {
new data[ GagData ];
ArrayGetArray( g_aGagData, iArrayPos, data );
new const iFlags[ ] = { GAG_CHAT, GAG_TEAMSAY };
if( data[ GAG_FLAGS ] & iFlags[ bTeam ] ) {
new szInfo[ 32 ], iLen, iTime = floatround( ( Float:data[ GAG_START ] + Float:data[ GAG_TIME ] ) - get_gametime( ) ), iMinutes = iTime / 60, iSeconds = iTime % 60;
if( iMinutes > 0 )
iLen = formatex( szInfo, 31, "%i minute%s", iMinutes, iMinutes == 1 ? "" : "s" );
if( iSeconds > 0 )
formatex( szInfo[ iLen ], 31 - iLen, "%s%i second%s", iLen ? " and " : "", iSeconds, iSeconds == 1 ? "" : "s" );
client_print( id, print_chat, "[AMXX] %s left before your ungag!", szInfo );
client_print( id, print_center, "** You are gagged from%s chat! **", bTeam ? " team" : "" );
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}
public CmdGagPlayer( const id, const iLevel, const iCid ) {
if( !cmd_access( id, iLevel, iCid, 2 ) ) {
console_print( id, "Flags: a - Chat | b - Team Chat | c - Voice communications" );
return PLUGIN_HANDLED;
}
new szArg[ 32 ];
read_argv( 1, szArg, 31 );
new iPlayer = cmd_target( id, szArg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS );
if( !iPlayer )
return PLUGIN_HANDLED;
new szName[ 20 ];
get_user_name( iPlayer, szName, 19 );
if( TrieKeyExists( g_tArrayPos, g_szAuthid[ iPlayer ] ) ) {
console_print( id, "User ^"%s^" is already gagged!", szName );
return PLUGIN_HANDLED;
}
new szFlags[ 4 ], Float:flGagTime;
read_argv( 2, szArg, 31 );
if( !szArg[ 0 ] ) { // No time entered
flGagTime = DEFAULT_TIME;
formatex( szFlags, 3, "abc" );
} else {
if( is_str_num( szArg ) ) { // Seconds entered
flGagTime = floatstr( szArg );
if( flGagTime > 86400.0 )
flGagTime = 86400.0;
} else {
console_print( id, "The value must be in seconds!" );
return PLUGIN_HANDLED;
}
read_argv( 3, szArg, 31 );
if( !szArg[ 0 ] ) // No flag entered
formatex( szFlags, 3, "abc" );
else
formatex( szFlags, 3, szArg );
}
new iFlags = read_flags( szFlags );
new data[ GagData ];
data[ GAG_START ] = _:get_gametime( );
data[ GAG_TIME ] = _:flGagTime;
data[ GAG_FLAGS ] = iFlags;
copy( data[ GAG_AUTHID ], 19, g_szAuthid[ iPlayer ] );
TrieSetCell( g_tArrayPos, g_szAuthid[ iPlayer ], g_iGagged );
ArrayPushArray( g_aGagData, data );
new szFrom[ 64 ];
if( iFlags & GAG_CHAT )
formatex( szFrom, 63, "say" );
if( iFlags & GAG_TEAMSAY ) {
if( !szFrom[ 0 ] )
formatex( szFrom, 63, "say_team" );
else
format( szFrom, 63, "%s / say_team", szFrom );
}
if( iFlags & GAG_VOICE ) {
set_speak( iPlayer, SPEAK_MUTED );
if( !szFrom[ 0 ] )
formatex( szFrom, 63, "voicecomm" );
else
format( szFrom, 63, "%s / voicecomm", szFrom );
}
g_iGagged++;
new Float:flGametime = get_gametime( ), Float:flNextThink;
flNextThink = entity_get_float( g_iThinker, EV_FL_nextthink );
if( !flNextThink || flNextThink > ( flGametime + flGagTime ) )
entity_set_float( g_iThinker, EV_FL_nextthink, flGametime + flGagTime );
new szInfo[ 32 ], szAdmin[ 20 ], iTime = floatround( flGagTime ), iMinutes = iTime / 60, iSeconds = iTime % 60;
get_user_name( id, szAdmin, 19 );
if( !iMinutes )
formatex( szInfo, 31, "%i second%s", iSeconds, iSeconds == 1 ? "" : "s" );
else
formatex( szInfo, 31, "%i minute%s", iMinutes, iMinutes == 1 ? "" : "s" );
show_activity( id, szAdmin, "Has gagged %s from speaking for %s! (%s)", szName, szInfo, szFrom );
console_print( id, "You have gagged ^"%s^" (%s) !", szName, szFrom );
log_amx( "Gag: ^"%s<%s>^" has gagged ^"%s<%s>^" for %i minutes. (%s)", szAdmin, g_szAuthid[ id ], szName, g_szAuthid[ iPlayer ], floatround( flGagTime / 60 ), szFrom );
return PLUGIN_HANDLED;
}
public CmdUnGagPlayer( const id, const iLevel, const iCid ) {
if( !cmd_access( id, iLevel, iCid, 2 ) )
return PLUGIN_HANDLED;
new szArg[ 32 ];
read_argv( 1, szArg, 31 );
if( equali( szArg, "@all" ) ) {
if( !g_iGagged ) {
console_print( id, "No gagged players!" );
return PLUGIN_HANDLED;
}
while( g_iGagged ) DeleteGag( 0 ); // Excellent by Exolent
if( entity_get_float( g_iThinker, EV_FL_nextthink ) > 0.0 )
entity_set_float( g_iThinker, EV_FL_nextthink, 0.0 );
console_print( id, "You have ungagged all players!" );
new szAdmin[ 32 ];
get_user_name( id, szAdmin, 31 );
show_activity( id, szAdmin, "Has ungagged all players." );
log_amx( "UnGag: ^"%s<%s>^" has ungagged all players.", szAdmin, g_szAuthid[ id ] );
return PLUGIN_HANDLED;
}
new iPlayer = cmd_target( id, szArg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS );
if( !iPlayer )
return PLUGIN_HANDLED;
new szName[ 32 ];
get_user_name( iPlayer, szName, 31 );
new iArrayPos;
if( !TrieGetCell( g_tArrayPos, g_szAuthid[ iPlayer ], iArrayPos ) ) {
console_print( id, "User ^"%s^" is not gagged!", szName );
return PLUGIN_HANDLED;
}
DeleteGag( iArrayPos );
new szAdmin[ 32 ];
get_user_name( id, szAdmin, 31 );
show_activity( id, szAdmin, "Has ungagged %s.", szName );
console_print( id, "You have ungagged ^"%s^" !", szName );
log_amx( "UnGag: ^"%s<%s>^" has ungagged ^"%s<%s>^"", szAdmin, g_szAuthid[ id ], szName, g_szAuthid[ iPlayer ] );
return PLUGIN_HANDLED;
}
public CmdGagMenu( const id, const iLevel, const iCid ) {
if( !cmd_access( id, iLevel, iCid, 1 ) )
return PLUGIN_HANDLED;
g_iMenuOption[ id ] = 0;
arrayset( g_iMenuPlayers[ id ], 0, 32 );
DisplayGagMenu( id, g_iMenuPosition[ id ] = 0 );
return PLUGIN_HANDLED;
}
public ActionGagMenu( const id, const iKey ) {
switch( iKey ) {
case 7: {
++g_iMenuOption[ id ];
g_iMenuOption[ id ] %= ArraySize( g_aGagTimes );
DisplayGagMenu( id, g_iMenuPosition[ id ] );
}
case 8: DisplayGagMenu( id, ++g_iMenuPosition[ id ] );
case 9: DisplayGagMenu( id, --g_iMenuPosition[ id ] );
default: {
new iPlayer = g_iMenuPlayers[ id ][ g_iMenuPosition[ id ] * 7 + iKey ];
if( TrieKeyExists( g_tArrayPos, g_szAuthid[ iPlayer ] ) )
client_cmd( id, "amx_ungag #%i", get_user_userid( iPlayer ) );
else
client_cmd( id, "amx_gag #%i %i", get_user_userid( iPlayer ), ArrayGetCell( g_aGagTimes, g_iMenuOption[ id ] ) );
DisplayGagMenu( id, g_iMenuPosition[ id ] );
}
}
}
// I just copied this from AMXX Ban menu, so don't blame me :D
DisplayGagMenu( const id, iPosition ) {
if( iPosition < 0 ) {
arrayset( g_iMenuPlayers[ id ], 0, 32 );
return;
}
new iPlayers[ 32 ], iNum, iCount, szMenu[ 512 ], iPlayer, iFlags, szName[ 32 ];
get_players( iPlayers, iNum, "ch" ); // Ignore bots and hltv
new iStart = iPosition * 7;
if( iStart >= iNum )
iStart = iPosition = g_iMenuPosition[ id ] = 0;
new iEnd = iStart + 7, iKeys = MENU_KEY_0 | MENU_KEY_8;
new iLen = formatex( szMenu, 511, g_bColoredMenus ? "\rGag Menu\R%i/%i\w^n^n" : "Gag Menu %i %i^n^n", iPosition + 1, ( iNum / 7 + ( ( iNum % 7 ) ? 1 : 0 ) ) );
if( iEnd > iNum ) iEnd = iNum;
for( new i = iStart; i < iEnd; ++i ) {
iPlayer = iPlayers[ i ];
iFlags = get_user_flags( iPlayer );
get_user_name( iPlayer, szName, 31 );
if( iPlayer != id && iFlags & ADMIN_IMMUNITY ) {
++iCount;
if( g_bColoredMenus )
iLen += formatex( szMenu[ iLen ], 511 - iLen, "\d%i. %s^n", iCount, szName );
else
iLen += formatex( szMenu[ iLen ], 511 - iLen, "#. %s^n", szName );
} else {
iKeys |= ( 1 << iCount );
++iCount;
iLen += formatex( szMenu[ iLen ], 511 - iLen, g_bColoredMenus ? "\r%i.\w %s\y%s\r%s^n" : "%i. %s%s%s^n", iCount, szName, TrieKeyExists( g_tArrayPos, g_szAuthid[ iPlayer ] ) ? " GAGGED" : "", ( ~iFlags & ADMIN_USER ? " *" : "" ) );
}
}
g_iMenuPlayers[ id ] = iPlayers;
new iSeconds = ArrayGetCell( g_aGagTimes, g_iMenuOption[ id ] );
new iTime = iSeconds / 60;
iLen += formatex( szMenu[ iLen ], 511 - iLen, g_bColoredMenus ? "^n\r8.\w Gag for\y %i\w %s^n" : "^n8. Gag for %i %s^n", ( iSeconds > 60 ? iTime : iSeconds ), ( iSeconds > 60 ? "minutes" : "seconds" ) );
if( iEnd != iNum ) {
formatex( szMenu[ iLen ], 511 - iLen, g_bColoredMenus ? "^n\r9.\w More...^n\r0.\w %s" : "^n9. More...^n0. %s", iPosition ? "Back" : "Exit" );
iKeys |= MENU_KEY_9;
} else
formatex( szMenu[ iLen ], 511 - iLen, g_bColoredMenus ? "^n\r0.\w %s" : "^n0. %s", iPosition ? "Back" : "Exit" );
show_menu( id, iKeys, szMenu, -1, "Gag Menu" );
}
CheckGagFlag( const id, const iFlag ) {
new iArrayPos;
if( TrieGetCell( g_tArrayPos, g_szAuthid[ id ], iArrayPos ) ) {
new data[ GagData ];
ArrayGetArray( g_aGagData, iArrayPos, data );
return ( data[ GAG_FLAGS ] & iFlag );
}
return 0;
}
DeleteGag( const iArrayPos ) {
new data[ GagData ];
ArrayGetArray( g_aGagData, iArrayPos, data );
if( data[ GAG_FLAGS ] & GAG_VOICE ) {
new iPlayer = find_player( "c", data[ GAG_AUTHID ] );
if( is_user_connected( iPlayer ) )
set_speak( iPlayer, SPEAK_NORMAL );
}
TrieDeleteKey( g_tArrayPos, data[ GAG_AUTHID ] );
ArrayDeleteItem( g_aGagData, iArrayPos );
g_iGagged--;
for( new i = iArrayPos; i < g_iGagged; i++ ) {
ArrayGetArray( g_aGagData, i, data );
TrieSetCell( g_tArrayPos, data[ GAG_AUTHID ], i );
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1055\\ f0\\ fs16 \n\\ par }
*/
|
|