AMX Mod X Plugin Approver
Join Date: Sep 2013
Location: Romania
|
06-25-2014
, 04:42
Re: Question Menu [Ask Menu]
|
#3
|
Then, you should post here for others peoples that need this too. Anyway, I'll leave here how it should be done ( as I think ).
PHP Code:
#include < amxmodx >
new bool: g_Points [ 33 ] [ 2 ]
new g_szName [ 33 ]
public plugin_init ( ) { register_plugin ( "Menu" , "0.1" , "HamletEagle" ) register_clcmd ( "say /menu" , "ClCmdMenu" ) }
public ClCmdMenu ( id ) { new menu = menu_create("Sell Points", "Handler_SellPoints"); menu_additem(menu, "Sell 5 Points", "", 0) menu_additem(menu, "Sell 10 Points", "", 0) menu_setprop(menu, MPROP_EXIT, MEXIT_ALL) menu_setprop(menu, MPROP_NOCOLORS, 1) menu_display(id, menu, 0) return PLUGIN_HANDLED; }
public Handler_SellPoints(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(id) return PLUGIN_HANDLED } new command[6], name[64], access, callback; menu_item_getinfo(menu, item, access, command, sizeof ( command ) - 1, name, sizeof ( name ) - 1, callback); switch ( item ) { case 0: { g_Points [ id ] [ 0 ] = true ChoosePlayer ( id ) } case 1: { g_Points [ id ] [ 1 ] = true ChoosePlayer ( id ) } } get_user_name ( id , g_szName , sizeof ( g_szName ) -1 ) menu_destroy(menu); return PLUGIN_HANDLED; }
public ChoosePlayer ( id ) { new menu2 = menu_create( "Choose a player to transfer points:", "Handler_PlayersMenu" ); static iPlayers[ 32 ] , iPlayersNum, index, i new szName[32], szUserId[32] get_players( iPlayers,iPlayersNum, "c" ) if( !iPlayersNum ) return for( i = 0; i < iPlayersNum; i++ ) { index = iPlayers[ i ] get_user_name( index, szName, sizeof( szName ) -1 ) formatex( szUserId, sizeof ( szUserId ) -1 , "%d", get_user_userid( id ) ) menu_additem( menu2, szName, szUserId, 0 ) } menu_display( id, menu2, 0 ); }
public Handler_PlayersMenu ( id, menu2, item ) { if ( item == MENU_EXIT ) { menu_destroy( menu2 ); return PLUGIN_HANDLED; } new szData [ 6 ] , szName [ 64 ],item_access, item_callback; menu_item_getinfo( menu2 , item , item_access , szData , sizeof( szData ) - 1, szName , sizeof ( szName ) -1 , item_callback ); new UserId = str_to_num( szData ) new Target = find_player( "k", UserId ) if ( Target ) { DisplayAcceptMenu ( Target ) } menu_destroy( menu2 ); return PLUGIN_HANDLED; }
public DisplayAcceptMenu ( id ) { new szMenuTitle [ 256 ] formatex ( szMenuTitle , sizeof ( szMenuTitle ) - 1 , "Accept %i points from %s", g_Points [ id ] [ 0 ] ? "5" : "10", g_szName ) new menu3 = menu_create( szMenuTitle , "Handler_AcceptPoints"); menu_additem(menu3, "Accept", "", 0); menu_additem(menu3, "Refuse", "", 0); menu_setprop(menu3, MPROP_EXIT, MEXIT_ALL); menu_setprop(menu3, MPROP_NOCOLORS, 1); menu_display(id, menu3, 0); return PLUGIN_HANDLED; }
public Handler_AcceptPoints(id, menu3, item) { if(item == MENU_EXIT) { menu_destroy(id); return PLUGIN_HANDLED; } new command[6], name[64], access, callback; menu_item_getinfo(menu3, item, access, command, sizeof command - 1, name, sizeof name - 1, callback); switch(item) { case 0: { //id is the target index //remove x points from first player //add x points to target //if ( g_Points [ index ][ 0 ] ) Points += 5 if ( g_Points [ index ] [ 1 ] ) Points += 10 //give money reward to first player } case 1: { //player refused, tell first player that target refused return 1; } } menu_destroy(menu3); return PLUGIN_HANDLED; }
Untested, but it should work.
Last edited by HamletEagle; 06-25-2014 at 04:43.
|
|