PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
#include <basebuilder>
#include <cstrike>
#include <nvault>
#pragma semicolon 1
#if !defined MAX_PLAYERS
const MAX_PLAYERS = 32;
#endif
#define MAXCASH 16000
#define MAXBANKCASH 1000000000
new const szVersion[] = "1.0.0";
new iVault;
new iMoney[MAX_PLAYERS + 1];
new pExceedLimit;
public plugin_init() {
register_plugin("BankMenu", szVersion, "NapoleoN#");
iVault = nvault_open("BaseBuilderBank");
register_clcmd("say /bank", "ShowBankMenu");
register_clcmd("TakeCashFromBank", "WithdrawMessageModeHandler");
register_clcmd("DepositCashToBank", "DepositMessageModeHandler");
register_clcmd("EnterAmount", "DonateMessageModeHandler");
pExceedLimit = register_cvar("bank_cashlimit", "1"); // Change to 0 if u want to be able to withdraw / deposit more than 16k$
}
public plugin_end() {
nvault_close(iVault);
}
#if AMXX_VERSION_NUM < 183
public client_disconnect(id) {
#else
public client_disconnected(id) {
#endif
SaveData(id);
}
public client_authorized(id) {
LoadData(id);
}
public SaveData(id) {
new szAuth[35], szTemp[10];
get_user_authid(id, szAuth, charsmax(szAuth));
formatex(szTemp, charsmax(szTemp), "%i", iMoney[id]);
nvault_set(iVault, szAuth, szTemp);
}
public LoadData(id) {
new szAuth[35], szMoney[10], szTemp[10];
get_user_authid(id, szAuth, charsmax(szAuth));
nvault_get(iVault, szAuth, szTemp, charsmax(szTemp));
parse(szTemp, szMoney, charsmax(szMoney));
iMoney[id] = str_to_num(szMoney);
}
public ShowBankMenu(id) {
new szHeader[70];
formatex(szHeader, charsmax(szHeader), "\y[\rDFC] \yBank \wMenu ^n\yYou have \r %i$", iMoney[id]);
new iBankMenu = menu_create(szHeader, "BankHandler");
menu_additem(iBankMenu, "\wDeposit^n");
menu_additem(iBankMenu, "\wWithdraw");
menu_display(id, iBankMenu);
}
public BankHandler(id, iBankMenu, iItem) {
if(is_user_connected(id) && iItem != MENU_EXIT) {
switch(iItem) {
case 0: client_cmd(id, "messagemode DepositCashToBank");
case 1: client_cmd(id, "messagemode TakeCashFromBank");
}
}
menu_destroy(iBankMenu);
}
public WithdrawMessageModeHandler(id) {
new szAmount[10], iAmount, iCash, iTotalCash;
read_argv(1, szAmount, charsmax(szAmount));
iAmount = str_to_num(szAmount);
iCash = cs_get_user_money(id);
iTotalCash = iAmount + iCash;
if(iAmount <= iMoney[id]) {
if(iAmount > MAXCASH) {
if(!get_pcvar_num(pExceedLimit)) {
iMoney[id] -= iAmount;
cs_set_user_money(id, iTotalCash);
ColorChat(id, GREEN,"^3[^4DFC^3]^1 You have withdrawn^4 %i$^1 from your bank account.", iAmount);
}
else {
ColorChat(id, GREEN, "^3[^4DFC^3]^1 Max withdrawal amount is 16.000$");
}
}
else {
if(iTotalCash <= MAXCASH) {
iMoney[id] -= iAmount;
cs_set_user_money(id, iTotalCash);
ColorChat(id, GREEN,"^3[^4DFC^3]^1 You have withdrawn^4 %i$^1 from your bank account.", iAmount);
}
else {
ColorChat(id, GREEN, "^3[^4DFC^3]^1 Max cash limit exceeded.");
}
}
}
else {
ColorChat(id, GREEN, "^3[^4DFC^3]^1 You can't withdraw more than you currently have banked.");
}
ColorChat(id, GREEN, "Test: szAmount = %i", iAmount);
}
public DepositMessageModeHandler(id) {
new szAmount[10], iAmount, iCash;
read_argv(1, szAmount, charsmax(szAmount));
iAmount = str_to_num(szAmount);
iCash = cs_get_user_money(id);
if(iAmount > 0) {
if(iAmount <= iCash) {
iMoney[id] += iAmount;
cs_set_user_money(id, clamp(iCash - iAmount, 0, _));
ColorChat(id, GREEN,"^3[^4DFC^3]^1 You deposited^4 %i$^1 in your bank account.", iAmount);
}
else {
ColorChat(id, GREEN, "^3[^4DFC^3]^1 You don't have that much cash.");
}
}
else {
ColorChat(id, GREEN, "^3[^4DFC^3]^1 Specify a minimum of 1$");
}
}