| dan1t0o0 |
07-06-2012 10:03 |
Re: Life menu giving lifes when killing opposite team
here is the code
PHP Code:
#include < amxmodx > #include < fakemeta > #include < hamsandwich > #include < nvault >
#define PLUGIN_NAME "Life_Menu" #define PLUGIN_VERSION "0.1" #define PLUGIN_AUTHOR "Bos93"
#define MAXPLAYERS 32 #define MAX_STATS_SAVED 64
#if cellbits == 32 #define OFFSET_CSMONEY 115 #else #define OFFSET_CSMONEY 140 #endif
#define OFFSET_LINUX 5
#define LIFE_COST 4000 #define LIFE_SELL 2000 #define LIFE_LIMIT 50
new g_Life[ MAXPLAYERS + 1 ] new gName[ MAXPLAYERS ] new vKey[ MAX_STATS_SAVED ] new vData[ MAX_STATS_SAVED ]
new gVault
public plugin_init ( ) { register_plugin ( PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR ) register_event( "DeathMsg", "EV_DeathMsg", "a" )
register_clcmd("say /life", "Life_Shop") register_clcmd("say life", "Life_Shop") register_clcmd("say /lmenu", "Life_Shop") register_clcmd("say lmenu", "Life_Shop") }
public client_connect( id ) load_client_Life( id ) public client_disconnect( id ) save_client_Life( id ) public EV_DeathMsg( ) { static iVictim; iVictim = read_data( 2 ); if( !is_user_connected( iVictim ) ) return; Life_Shop( iVictim ) }
public Life_Shop( id ) { new szText[ 1024 char ]; formatex( szText, charsmax( szText ), "\yYour Money\w: \r%d\y $^nYour lives\w: \r%d" ,fm_cs_get_user_money(id) , g_Life[id] ); new menu = menu_create( szText, "Life_handler" ); formatex( szText, charsmax( szText ), "Use live \y- \r1\w Life" ); menu_additem( menu, szText, "3", 0 );
menu_setprop(menu, MPROP_EXITNAME, "Exit") menu_display(id, menu, 0) } public Life_handler (id , menu , item ) { if (item == MENU_EXIT) { menu_destroy(menu) return PLUGIN_HANDLED }
new s_Data[6], s_Name[64], i_Access, i_Callback menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
new szName[ 32 ] get_user_name( id, szName, 31 )
new money = fm_cs_get_user_money(id) switch(i_Key) { case 1: { if (money < LIFE_COST) { Color_Print(id, "!g[DeathRun] !team%s !ydont have !gmoney." , szName ) return PLUGIN_HANDLED } if ( g_Life[id] >= LIFE_LIMIT ) { Color_Print(id, "!g[DeathRun] !team%s !yyou reached a !glimit." , szName ) return PLUGIN_HANDLED } Color_Print(id, "!g[DeathRun] !team%s !yhas buy a !glive." , szName ) g_Life[id] += 1 fm_cs_set_user_money(id, money - LIFE_COST) Life_Shop( id ) } case 2: { if ( g_Life[id] == 0 ) { Color_Print(id, "!g[DeathRun] !team%s !yyou dont have !glives." , szName ) return PLUGIN_HANDLED } Color_Print(id, "!g[DeathRun] !team%s !yhas sell !glive." , szName ) g_Life[id] -= 1 fm_cs_set_user_money(id, money + LIFE_SELL) Life_Shop( id ) } case 3: { if ( is_user_alive( id ) ) { Color_Print(id, "!g[DeathRun] !team%s !y you need to be !gdead." , szName ) return PLUGIN_HANDLED } if ( g_Life[id] == 0 ) { Color_Print(id, "!g[DeathRun] !team%s !yyou dont have !glives." , szName ) return PLUGIN_HANDLED } g_Life[id] -= 1
Color_Print(id, "!g[DeathRun] !team%s !yyou has used a !glive." , szName ) ExecuteHam(Ham_CS_RoundRespawn, id) } } menu_destroy(menu) return PLUGIN_HANDLED } stock save_client_Life( index ) { gVault = nvault_open( "Life_Save" ) if( gVault == INVALID_HANDLE ) { set_fail_state( "[Life_Shop] nValut ERROR: =-> Invalid-Handle" ) } get_user_name( index, gName, charsmax( gName ) )
formatex( vKey, charsmax( vKey ), "%sLife", gName ) formatex( vData, charsmax( vData ), "%d", g_Life[ index ] ) nvault_set( gVault, vKey, vData ) nvault_close( gVault ) }
stock load_client_Life( index ) { gVault = nvault_open( "Life_Save" ) if( gVault == INVALID_HANDLE ) { set_fail_state( "[DrShop] nValut ERROR: =-> Invalid-Handle" ) } get_user_name( index, gName, charsmax( gName ) ) formatex( vKey, charsmax( vKey ), "%sLife", gName ) g_Life[ index ] = nvault_get( gVault, vKey ) nvault_close( gVault ) }
stock fm_cs_set_user_money(id, money, flash = 1) { set_pdata_int(id, OFFSET_CSMONEY, money, OFFSET_LINUX)
message_begin(MSG_ONE, get_user_msgid("Money"), {0,0,0}, id) write_long(money) write_byte(flash) message_end() }
stock fm_cs_get_user_money(id) return get_pdata_int(id, OFFSET_CSMONEY, OFFSET_LINUX)
stock Color_Print(const id, const input[], any:...) { new count = 1, players[32] static msg[191] vformat(msg, 190, input, 3) replace_all(msg, 190, "!g", "^4") // Green Color replace_all(msg, 190, "!y", "^1") // Default Color replace_all(msg, 190, "!team", "^3") // Team Color 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(); } } } }
|