PHP Code:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <fakemeta>
new g_iChosenOption[ 33 ];
new bool:g_bBuried[ 33 ];
new g_pFriendlyFire;
enum
{
FRIENDLY_FIRE = 1,
NEW_CT,
GIVE_C4,
BURY,
UNBURY
};
public plugin_init()
{
register_plugin( "CT Menu", "1.0", "H3avY Ra1n" );
register_clcmd( "say /ctmenu", "Cmd_CTMenu" );
register_clcmd( "say /ctm", "ctmenu");
g_pFriendlyFire = get_cvar_pointer( "mp_friendlyfire" );
}
public client_connect( id )
{
g_bBuried[ id ] = false;
g_iChosenOption[ id ] = 0;
}
public Cmd_CTMenu( id )
{
if( cs_get_user_team( id ) != CS_TEAM_CT )
{
client_print( id, print_chat, "You must be a guard to use this item." );
return PLUGIN_HANDLED;
}
new hMenu = menu_create( "CT Menu", "CTMenu_Handler" );
new szFormat[ 32 ];
formatex( szFormat, charsmax( szFormat ), "Turn %s Friendly Fire", get_pcvar_num( g_pFriendlyFire ) ? "Off" : "On" );
menu_additem( hMenu, szFormat, "1" );
menu_additem( hMenu, "Choose a new CT", "2" );
menu_additem( hMenu, "Give C4", "3" );
menu_additem( hMenu, "Bury Player", "4" );
menu_additem( hMenu, "Unbury Player", "5" );
menu_display( id, hMenu, 0 );
return PLUGIN_CONTINUE;
}
public CTMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT || cs_get_user_team( id ) != CS_TEAM_CT )
{
menu_destroy( hMenu );
return PLUGIN_HANDLED;
}
new szData[ 6 ];
new iAccess, hCallback;
menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), _, _, hCallback );
g_iChosenOption[ id ] = str_to_num( szData );
if( g_iChosenOption[ id ] == FRIENDLY_FIRE )
set_pcvar_num( g_pFriendlyFire, get_pcvar_num( g_pFriendlyFire ) ? 0 : 1 );
else ShowPlayerMenu( id );
menu_destroy( hMenu );
return PLUGIN_HANDLED;
}
public ShowPlayerMenu( id )
{
new hMenu = menu_create( "Choose a Player:", "PlayerMenu_Handler" );
new szName[ 32 ], szInfo[ 6 ];
new iPlayers[ 32 ], iNum;
get_players( iPlayers, iNum, "a" );
for( new i = 0, iPlayer; i < iNum; i++ )
{
iPlayer = iPlayers[ i ];
switch( g_iChosenOption[ id ] )
{
case NEW_CT: if( cs_get_user_team( iPlayer ) != CS_TEAM_T ) continue;
case BURY: if( g_bBuried[ iPlayer ] ) continue;
case UNBURY: if( !g_bBuried[ iPlayer ] ) continue;
}
get_user_name( iPlayer, szName, charsmax( szName ) );
num_to_str( iPlayer, szInfo, charsmax( szInfo ) );
menu_additem( hMenu, szName, szInfo );
}
menu_display( id, hMenu, 0 );
}
public PlayerMenu_Handler( id, hMenu, iItem )
{
if( iItem == MENU_EXIT || cs_get_user_team( id ) != CS_TEAM_CT )
{
menu_destroy( hMenu );
return PLUGIN_HANDLED;
}
new szData[ 6 ];
new iAccess, hCallback;
menu_item_getinfo( hMenu, iItem, iAccess, szData, charsmax( szData ), _, _, hCallback );
new iPlayer = str_to_num( szData );
if( !is_user_alive( iPlayer ) )
{
client_print( id, print_chat, "That player is no longer alive." );
menu_destroy( hMenu );
ShowPlayerMenu( id );
return PLUGIN_HANDLED;
}
switch( g_iChosenOption[ id ] )
{
case BURY: bury_player( id, iPlayer );
case UNBURY: unbury_player( id, iPlayer );
case GIVE_C4: give_item( iPlayer, "weapon_c4" );
case NEW_CT: cs_set_user_team( iPlayer, CS_TEAM_CT );
}
menu_destroy( hMenu );
return PLUGIN_HANDLED;
}
bury_player(id, victim)
{
new name[32], iwpns[32], nwpn[32], iwpn
get_user_name(victim,name,31)
get_user_weapons(victim,iwpns,iwpn)
for(new a=0;a<iwpn;++a) {
get_weaponname(iwpns[a],nwpn,31)
engclient_cmd(victim,"drop",nwpn)
}
engclient_cmd(victim,"weapon_knife")
new origin[3]
get_user_origin(victim, origin)
origin[2] -= 30
fm_set_user_origin(victim, origin)
client_print( id, print_chat, "You have successfully buried %s.", name );
g_bBuried[ victim ] = true;
Cmd_CTMenu( id );
}
unbury_player(id,victim)
{
new name[32], origin[3]
get_user_name(victim,name,31)
get_user_origin(victim, origin)
origin[2] += 35
fm_set_user_origin(victim, origin)
client_print( id, print_chat, "You have successfully unburied %s.", name );
g_bBuried[ victim ] = false;
Cmd_CTMenu( id );
}
stock fm_set_user_origin(index, /* const */ origin[3]) {
new Float:orig[3]
IVecFVec(origin, orig)
return fm_entity_set_origin(index, orig)
}
stock fm_entity_set_origin(index, const Float:origin[3]) {
new Float:mins[3], Float:maxs[3]
pev(index, pev_mins, mins)
pev(index, pev_maxs, maxs)
engfunc(EngFunc_SetSize, index, mins, maxs)
return engfunc(EngFunc_SetOrigin, index, origin)
}
public ctmenu(id)
{
if (is_user_alive(id) && get_user_team(id) == 2)
{
new menu = menu_create("\rCT \yMenu", "ctmenu_handler")
menu_additem(menu, "300 Spartan Mod", "1", id)
menu_additem(menu, "God Mode for CT", "2", id)
menu_display(id, menu, 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
}
}
public ctmenu_handler(id, menu, item)
{
new Client[33]
get_user_name(id, Client, 32)
if (is_user_alive(id) && get_user_team(id)==2)
{
switch(item)
{
case 0:
{
give_item(0, "weapon_shield")
give_item(0, "weapon_deagle")
give_item(0, "ammo_50ae")
give_item(0, "ammo_50ae")
give_item(0, "ammo_50ae")
give_item(0, "ammo_50ae")
give_item(0, "ammo_50ae")
give_item(0, "ammo_50ae")
give_item(0, "ammo_50ae")
}
case 1:
{
new menu = menu_create("God Mode for CT", "godmode_handler")
menu_additem(menu, "Enabled", "1", id)
menu_additem(menu, "Disabled", "2", id)
menu_display(id, menu, 0)
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
}
}
}
}
public godmode_handler(id, menu, item)
{
new Client [33]
get_user_name(id, Client, 32)
if (is_user_alive(id) && get_user_team(id)==2)
{
switch(item)
{
case 0:
{
set_user_godmode(id, 1)
}
case 1:
{
set_user_godmode(id, 0)
}
}
}
}
Type /ctm to open the menu that you requested. I couldn't test it because my cstrike module doesn't work atm.