| Napoleon_be |
09-13-2011 09:47 |
Re: [EDIT] CT Menu (Excerpt from the idea)
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.
|