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();
}
}
}
}