Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <zombieplague>
#include <fun>
#include < fvault >
#pragma dynamic 32768
#define is_valid_player(%1) (1 <= %1 <= 32)
///////#define STEAM
#define NICK
///////#define IP
new g_AP[33]
new g_DonateID[33]
public plugin_init()
{
register_plugin("by mottzi","2.1","mottzi")
register_clcmd("takeAmount", "cmdTakeAmount")
register_clcmd("saveAmount", "cmdSaveAmount")
register_clcmd("say donate", "cmdDonate")
register_clcmd("say /donate", "cmdDonate")
register_clcmd("say /bank", "menuBank")
register_clcmd("say bank", "menuBank")
register_clcmd("say_team /bank", "menuBank")
}
public menuBank(id)
{
if(is_valid_player(id))
{
new title[100]
formatex(title, 99, "\y[\wyour in Bank Ammo packs :\r %i\y]", 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, "\wDonate Amout^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:
{
menuDonate(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 + zp_get_user_ammo_packs(id)
if(iAps <= g_AP[id] && iApsSum <= 999)
{
zp_set_user_ammo_packs(id, iApsSum)
g_AP[id] -= iAps
client_print(id, print_chat, "[Bank] You took %i Ammopacks from Your Bank. Now you have %i Ammopacks in your Bank.", iAps, g_AP[id])
return PLUGIN_CONTINUE
}
else
{
client_print(id, print_chat, "[Bank] You dont have enough Ammopacks or you wanted to take too much Ammopacks.")
}
return PLUGIN_CONTINUE
}
public cmdTakeAll(id)
{
new iApsSum = zp_get_user_ammo_packs(id) + g_AP[id]
if(iApsSum <= 999)
{
zp_set_user_ammo_packs(id, iApsSum)
client_print(id, print_chat, "[Bank] You took all %i Ammopacks from your Bank.", g_AP[id])
g_AP[id] = 0
}
else if(iApsSum > 999)
{
new giveAps = 999 - zp_get_user_ammo_packs(id)
if(giveAps <= g_AP[id])
{
zp_set_user_ammo_packs(id, giveAps + zp_get_user_ammo_packs(id))
g_AP[id] -= giveAps
client_print(id, print_chat, "[Bank] You took %i Ammopacks from your Bank. Now you have %i Ammopacks 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 = zp_get_user_ammo_packs(id)
if(iAps <= haveAps)
{
zp_set_user_ammo_packs(id, haveAps - iAps)
g_AP[id] += iAps
client_print(id, print_chat, "[Bank] You saved %i Ammopacks in your Bank. Now you have %i Ammopacks in your Bank.", iAps, g_AP[id])
}
else
{
client_print(id, print_chat, "[Bank] You dont have enough Ammopacks")
}
return PLUGIN_CONTINUE
}
public cmdSaveAll(id)
{
new haveAps = zp_get_user_ammo_packs(id)
zp_set_user_ammo_packs(id, 0)
g_AP[id] += haveAps
client_print(id, print_chat, "[Bank] You saved %i Ammopacks to your Bank. Now you have %i Ammopackt in your Bank.", haveAps, g_AP[id])
}
public menuDonate(id)
{
new DonateMenu = menu_create("\rChoose A player to Donate:", "menuDonateHandler")
new players[32], pnum, tempid
new szName[32], szTempid[10]
get_players(players, pnum)
for( new i; i<pnum; i++ )
{
tempid = players[i]
if(id != tempid)
{
get_user_name(tempid, szName, 31)
num_to_str(tempid, szTempid, 9)
menu_additem(DonateMenu, szName, szTempid, 0)
}
}
menu_display(id, DonateMenu, 0)
}
public menuDonateHandler(id, menu, item)
{
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback);
new tempid = str_to_num(data);
g_DonateID[id] = tempid
client_cmd(id, "messagemode donate")
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public cmdDonate(id)
{
if(g_DonateID[id] == 0) return PLUGIN_HANDLED
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
if(iAps <= g_AP[id])
{
// Take iAps away
g_AP[id] -= iAps
new NameDonate[45]
get_user_name(g_DonateID[id], NameDonate, 44)
new Name[45]
get_user_name(g_DonateID[id], Name, 44)
client_print(id, print_chat, "[Bank] You donated %i Ammopacks to %s. Now you have %i ammopacks in your Bank.", iAps, NameDonate, g_AP[id])
// give iAps to Donateid
g_AP[g_DonateID[id]] += iAps
client_print(g_DonateID[id], print_chat, "[Bank] %s donated %i Ammopacks to you. Now you have %i Ammopacks in your Bank.", Name, iAps, g_AP[g_DonateID[id]])
}
else
{
client_print(id, print_chat, "[Bank] You dont have enough Ammopacks")
}
return PLUGIN_CONTINUE
}
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, "ZP_%s", szMethod);
format(vaultdata, 327, "%i", g_AP[id]);
fvault_set_data( "SurfVault", 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, "ZP_%s", szMethod);
format(vaultdata, 327, "%i", g_AP[id]);
fvault_get_data( "SurfVault", 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)
{
SaveData(id);
}