PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <colorchat>
#include <fun>
#include <fvault>
#pragma dynamic 32768
#define is_valid_player(%1) (1 <= %1 <= 32)
#define NICK
native dev_get_user_points(id)
native dev_set_user_points(id, amount)
new g_AP[33]
new players_menu, players[32], num, i
new accessmenu, iName[64], callback
public plugin_init()
{
register_plugin("Bank Menu","1.0","BooHLaaL")
register_clcmd("TakeAmount", "cmdTakeAmount")
register_clcmd("SaveAmount", "cmdSaveAmount")
register_clcmd("say /donate", "transfer_menu", ADMIN_ALL, "")
register_clcmd("say donate", "transfer_menu", ADMIN_ALL, "")
register_clcmd("transfer", "transfer_ammo", ADMIN_ALL, "")
register_clcmd("say /bank", "Menu_Bank")
register_clcmd("say bank", "Menu_Bank")
register_clcmd("say_team /bank", "Menu_Bank")
}
public plugin_natives() {
register_native("dev_get_user_ammo", "native_get_user_ammo", 1);
}
public native_get_user_ammo(id)
{
return g_AP[id];
}
public Menu_Bank(id)
{
if(is_valid_player(id))
{
new title[100]
formatex(title, 99, "\r[R#G] \wBank Menu^n\wYou Have \r%i AmmoPacks", g_AP[id])
new bankMenu = menu_create(title, "menuBankHandler")
menu_additem(bankMenu, "\wTake Amount", "1")
menu_additem(bankMenu, "\wTake All^n", "2")
menu_additem(bankMenu, "\wSave Amount", "3")
menu_additem(bankMenu, "\wSave All Ammo^n", "4")
menu_additem(bankMenu, "\rDonate^n^n", "5")
menu_display(id, bankMenu, 0)
}
return PLUGIN_HANDLED;
}
public menuBankHandler(id, menu, item)
{
new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
client_cmd(id, "messagemode TakeAmount")
}
case 2:
{
cmdTakeAll(id)
}
case 3:
{
client_cmd(id, "messagemode SaveAmount")
}
case 4:
{
cmdSaveAll(id)
}
case 5:
{
transfer_menu(id)
}
}
}
public cmdTakeAmount(id)
{
new szAps[11]
read_args(szAps, 10)
remove_quotes(szAps)
if(equal(szAps, "") || equal(szAps, " "))
return PLUGIN_HANDLED
new iAps = str_to_num(szAps)
if(iAps < 1) return PLUGIN_HANDLED
new iApsSum = iAps + dev_get_user_points(id)
if(iAps <= g_AP[id] && iApsSum <= 999999)
{
dev_set_user_points(id, iApsSum)
g_AP[id] -= iAps
ChatColor(id, "^4[R#G] ^1You Took ^4%i ^1AmmoPacKs From Your Bank. Now You Have ^4%i ^1AmmoPacKs In Your Bank.", iAps, g_AP[id])
return PLUGIN_CONTINUE
}
else
{
ChatColor(id, "^4[R#G] ^1You Don't Have Enough AmmoPacKs Or You Wanted To Take Too Much AmmoPacKs.")
}
return PLUGIN_CONTINUE
}
public cmdTakeAll(id)
{
new iApsSum = dev_get_user_points(id) + g_AP[id]
if(iApsSum <= 999999)
{
dev_set_user_points(id, iApsSum)
ChatColor(id, "^4[R#G] ^1You Took All ^4%i ^1AmmoPacks From Your Bank.", g_AP[id])
g_AP[id] = 0
}
else if(iApsSum > 999999)
{
new giveAps = 999999 - dev_get_user_points(id)
if(giveAps <= g_AP[id])
{
dev_set_user_points(id, giveAps + dev_get_user_points(id))
g_AP[id] -= giveAps
ChatColor(id, "^4[R#G] ^1You Took ^4%i ^1AmmoPacKs From Your Bank. Now You Have ^4%i ^1AmmoPacKs In Your Bank.", giveAps, g_AP[id])
}
}
}
public cmdSaveAmount(id)
{
new szAps[11]
read_args(szAps, 10)
remove_quotes(szAps)
if(equal(szAps, "") || equal(szAps, " "))
return PLUGIN_HANDLED
new iAps = str_to_num(szAps)
if(iAps < 1) return PLUGIN_HANDLED
new haveAps = dev_get_user_points(id)
if(iAps <= haveAps)
{
dev_set_user_points(id, haveAps - iAps)
g_AP[id] += iAps
ChatColor(id, "^4[R#G] ^1You Saved ^4%i ^1AmmoPacKs In Your Bank. Now You Have ^4%i ^1AmmoPacKs In Your Bank.", iAps, g_AP[id])
}
else
{
ChatColor(id, "^4[R#G] ^1You Don't Have Enough AmmoPacKs")
}
return PLUGIN_CONTINUE
}
public cmdSaveAll(id)
{
new haveAps = dev_get_user_points(id)
dev_set_user_points(id, 0)
g_AP[id] += haveAps
ChatColor(id, "^4[R#G] ^1You Saved ^4%i ^1AmmoPacKs To Your Bank. Now You Have ^4%i ^1AmmoPacKs In Your Bank.", haveAps, g_AP[id])
}
public transfer_menu(id)
{
get_players(players, num, "ch")
if (num <= 1)
{
set_hudmessage(0, 155, 0, -1.0, 0.4, 0, 0.0, 5.0, 1.0, 1.0, false)
show_hudmessage(id,"")
return PLUGIN_HANDLED
}
new tempname[32], info[10]
players_menu = menu_create("\r[R#G] \wChoose A Player To Donate:", "players_menu_handler")
for(i = 0; i < num; i++)
{
if(players[i] == id)
continue
get_user_name(players[i], tempname, 31)
num_to_str(players[i], info, 9)
menu_additem(players_menu, tempname, info, 0)
}
menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, players_menu, 0)
return PLUGIN_CONTINUE
}
public players_menu_handler(id, players_menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(players_menu)
return PLUGIN_HANDLED
}
new data[6]
menu_item_getinfo(players_menu, item, accessmenu, data, charsmax(data), iName, charsmax(iName), callback)
new player = str_to_num(data)
client_cmd(id, "messagemode ^"Transfer %i^"", player)
return PLUGIN_CONTINUE
}
public transfer_ammo(id)
{
new param[6]
read_argv(2, param, charsmax(param))
for (new x; x < strlen(param); x++)
{
if(!isdigit(param[x]))
{
set_hudmessage(255, 0, 0, -1.0, 0.4, 0, 0.0, 5.0, 1.0, 1.0, false)
show_hudmessage(id,"")
return 0
}
}
new amount = str_to_num(param)
new ammo = dev_get_user_points(id)
if (ammo < amount)
{
ChatColor(id,"^4[R#G] ^1You Don't Have Enough AmmoPacKs !")
return 0
}
read_argv(1, param, charsmax(param))
new player = str_to_num(param)
new player_ammo = dev_get_user_points(player)
dev_set_user_points(id, ammo - amount)
dev_set_user_points(player, player_ammo + amount)
new names[2][32]
get_user_name(id, names[0], 31)
get_user_name(player, names[1], 31)
ColorChat(0, GREY, "^4[R#G] ^1Player ^4 %s ^1Donated ^4%d ^1AmmoPacKs To Player ^4%s ^1!", names[0], amount, names[1])
return 0
}
public SaveData(id)
{
new szMethod[ 65 ];
#if defined STEAM
get_user_authid( id, szMethod, 34 );
#endif
#if defined NICK
get_user_name( id, szMethod, 34 );
#endif
#if defined IP
get_user_ip( id, szMethod, 34, 1 );
#endif
new vaultkey[64], vaultdata[328];
format(vaultkey, 63, "bb_%s", szMethod);
format(vaultdata, 327, "%i", g_AP[id]);
fvault_set_data( "bbVault", vaultkey, vaultdata );
}
// Load data function
public LoadData(id)
{
new szMethod[ 65 ];
#if defined STEAM
get_user_authid( id, szMethod, 34 );
#endif
#if defined NICK
get_user_name( id, szMethod, 34 );
#endif
#if defined IP
get_user_ip( id, szMethod, 34, 1 );
#endif
new vaultkey[64], vaultdata[328];
format(vaultkey, 63, "bb_%s", szMethod);
format(vaultdata, 327, "%i", g_AP[id]);
fvault_get_data( "bbVault", vaultkey, vaultdata, charsmax( vaultdata ) );
g_AP[ id ] = str_to_num( vaultdata );
}
// When client enter on server
public client_putinserver(id)
{
LoadData(id);
}
// When client disconnect
public client_disconnect(id)
{
cmdSaveAll(id);
SaveData(id);
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[ 32 ]
static msg[ 191 ]
vformat( msg, 190, input, 3 )
replace_all( msg, 190, "!g", "^4" )
replace_all( msg, 190, "!y", "^1" )
replace_all( msg, 190, "!t", "^3" )
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( )
}
}
}
}