Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Reasons Ban Menu"
#define VERSION "1.0"
#define AUTHOR "raizo"
#pragma tabsize 0
#pragma compress 1
#define MAX_REASONS 32
enum reasons
{
Reason1 = 1,
Reason2,
Reason3,
Reason4,
Reason5
}
enum thetime
{
maxtime1 = 1,
maxtime2,
maxtime3,
maxtime4,
maxtime5
}
enum reasons_config
{
reasons:reason_menu,
thetime:time_menu
}
new all_reasons[MAX_REASONS+1][reasons_config]
new szResult[64], szTime[64]
new szTmp[192]
new szArg[ 21 ];
new his_reason[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /banmenu", "ban_menu_reasons");
register_clcmd("Type_your_reason","set_reason");
}
public set_reason( id )
{
read_argv(1, szArg, sizeof ( szArg ) -1 );
if ( !strlen( szArg ) || strlen( szArg ) < 5 )
{
client_cmd( id, "messagemode Type_your_reason" );
return PLUGIN_HANDLED;
}
else if( strlen( szArg ) > 50 )
{
client_cmd( id, "messagemode Type_your_reason" );
return PLUGIN_HANDLED;
}
Search_Player(id)
return PLUGIN_HANDLED;
}
public ban_menu_reasons(id)
{
new flags = get_user_flags(id)
if(!(flags & ADMIN_BAN))
{
client_print(id,print_chat,"You have no access to this command")
return PLUGIN_HANDLED
}
new menu = menu_create("\y[\r Ban Menu \y ]\w By raizo","menu_handled")
formatex(szTmp,charsmax(szTmp),"Choose Reason \r%s",reason_results(all_reasons[id][reason_menu]));
menu_additem(menu,szTmp,"1")
formatex(szTmp,charsmax(szTmp),"Type Reason");
menu_additem(menu,szTmp,"2")
formatex(szTmp,charsmax(szTmp),"Choose Time \r%s",times_results(all_reasons[id][time_menu]));
menu_additem(menu,szTmp,"3")
formatex(szTmp,charsmax(szTmp),"Choose Player");
menu_additem(menu,szTmp,"4")
menu_display(id,menu)
return PLUGIN_HANDLED;
}
public menu_handled(id,menu,item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new data[3], iName[64]
new access, callback;
menu_item_getinfo(menu, item, access, data,2, iName, 63, callback);
new key = str_to_num(data)
switch(key)
{
case 1:
{
all_reasons[id][reason_menu] = ( ++all_reasons[id][reason_menu] > (reasons:5) ) ? (reasons:1) :all_reasons[id][reason_menu]
his_reason[id] = 1
}
case 2:
{
set_reason(id)
his_reason[id] = 2
return PLUGIN_HANDLED;
}
case 3:
{
all_reasons[id][time_menu] = ( ++all_reasons[id][time_menu] > (thetime:5) ) ? (thetime:1) :all_reasons[id][time_menu]
}
case 4:
{
Search_Player(id)
return PLUGIN_HANDLED;
}
}
menu_destroy(menu);
ban_menu_reasons(id)
return PLUGIN_HANDLED;
}
public Search_Player( id )
{
new menu = menu_create( "\rChoose Your Player!:", "menu_player_handler" );
new players[32], pnum, tempid;
new szName[32], szUserId[32];
get_players( players, pnum, "a" );
for ( new i; i<pnum; i++ )
{
tempid = players[i];
get_user_name( tempid, szName, charsmax( szName ) );
formatex( szUserId, charsmax( szUserId ), "%d", get_user_userid( tempid ) );
menu_additem( menu, szName, szUserId, 0 );
}
menu_display( id, menu, 0 );
}
public menu_player_handler( id, menu, item )
{
if ( item == MENU_EXIT )
{
menu_destroy( menu );
return PLUGIN_HANDLED;
}
new szData[6], szName[64];
new _access, item_callback;
menu_item_getinfo( menu, item, _access, szData,charsmax( szData ), szName,charsmax( szName ), item_callback );
new userid = str_to_num( szData );
new player = find_player( "k", userid );
new idname[33], playername[33]
get_user_name(id,idname,charsmax(idname))
get_user_name(player,playername,charsmax(playername))
if ( player && is_user_connected( player ) )
{
new uIP[32]
get_user_name(player, uIP, 31)
if (his_reason[id] == 1)
{
server_cmd("amx_banip %s %s ^"%s^"", uIP,szTime,szResult)
}
else if (his_reason[id] == 2)
{
server_cmd("amx_banip %s %s ^"%s^"", uIP,szTime,szArg)
}
}
menu_destroy( menu );
return PLUGIN_HANDLED;
}
reason_results(reasons:part)
{
switch(part)
{
case Reason1: copy(szResult, charsmax(szResult), "Hacker Detected");
case Reason2: copy(szResult, charsmax(szResult), "To more ping");
case Reason3: copy(szResult, charsmax(szResult), "You speak only boolshit");
case Reason4: copy(szResult, charsmax(szResult), "You can change reasons from here");
case Reason5: copy(szResult, charsmax(szResult), "Bye Bye");
default: copy(szResult, charsmax(szResult), "No Reason");
}
return szResult;
}
times_results(thetime:part)
{
switch(part)
{
case maxtime1: copy(szTime, charsmax(szTime), "15");
case maxtime2: copy(szTime, charsmax(szTime), "30");
case maxtime3: copy(szTime, charsmax(szTime), "60");
case maxtime4: copy(szTime, charsmax(szTime), "120");
case maxtime5: copy(szTime, charsmax(szTime), "36000");
default: copy(szTime, charsmax(szTime), "0");
}
return szTime;
}