ZP Bank Help Please!
eai staff, good morning / good afternoon / good night
was giving some adjustments in my database plugin for ZP
only looking at what's happening
Example: I have 10 in my account and after i put 20 to withdraw
he says I'm not talking and then I drew 20 ap
I would like to remove it?
Same thing happens to deposit
help me please, I'm trying to learn to make plugins now =)
[IMG]http://img600.**************/img600/9543/imagem02b.png[/IMG]
[IMG]http://img145.**************/img145/5409/imagem01.png[/IMG]
plugin:
Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <fakemeta>
#include <colorchat>
#include <zombieplague>
static const version[] = "0.4";
static const plugin[] = "[ZP]: Auto-save Bank(Name)";
static const prefix[] = "Banco"
enum pcvar
{
enable = 0,
cap,
start
}
new pcvars[pcvar];
new bankstorage[33];
new gvault, thinkobj;
public plugin_init()
{
register_plugin(plugin, version, "Random1, suNx, 93()|29!/<");
gvault = nvault_open("ZombieBankName");
pcvars[enable] = register_cvar("zp_bank", "1");
pcvars[cap] = register_cvar("zp_bank_limit", "1000000");
pcvars[start] = register_cvar("zp_bank_blockstart", "0");
if (get_pcvar_num(pcvars[cap]) > 2147483646)
{
set_pcvar_num(pcvars[cap], 2147483646);
server_print("[%s] Due to a 32 bit restriction in perl zp_ammo_limit reset based on restriction", plugin);
}
register_clcmd("say", "handle_say");
register_clcmd("say_team", "handle_say");
thinkobj = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
if (pev_valid(thinkobj))
{
set_pev(thinkobj, pev_classname, "advertisement_loop");
set_pev(thinkobj, pev_nextthink, get_gametime() + 240.0);
register_forward(FM_Think, "fourmin_think");
}
}
public fourmin_think(ent)
{
if (ent != thinkobj)
return FMRES_IGNORED;
if (!get_pcvar_num(pcvars[enable]))
return FMRES_IGNORED;
ColorChat(0, GREEN, "[%s]^x01 Enabled.^x03 %d^x01 is the storage limit", prefix, get_pcvar_num(pcvars[cap]));
ColorChat(0, GREEN, "[%s]^x01 Bank saves^x03 automaticly", prefix);
ColorChat(0, GREEN, "[%s]^x01 To retrieve your ammo packs type^x03 withdraw <amount>", prefix);
ColorChat(0, GREEN, "[%s]^x01 Auto save is^x03 enabled", prefix);
set_pev(ent, pev_nextthink, get_gametime() + 240.0);
return FMRES_HANDLED;
}
public plugin_end()
nvault_close(gvault);
public handle_say(id)
{
if (!get_pcvar_num(pcvars[enable]))
return PLUGIN_CONTINUE;
new text[70], arg1[32], arg2[32], arg3[6];
read_args(text, sizeof(text)-1);
remove_quotes(text);
arg1[0] = '^0';
arg2[0] = '^0';
arg3[0] = '^0';
parse(text, arg1, sizeof(arg1)-1, arg2, sizeof(arg2)-1, arg3, sizeof(arg3)-1);
//dbg_log("cmd_say() arg1:#%s# arg2:#%s# arg3:#%s#", arg1, arg2, arg3);
// if the chat line has more than 2 words, we're not interested at all
if (arg3[0] == 0)
{
//strip forward slash if present
if (equali(arg1, "/", 1))
format(arg1, 31, arg1[1]);
if (equali(arg1, "depositar", 7) || equali(arg1, "depositar", 4) || equali(arg1, "store", 5))
{
if (isdigit(arg2[0]) || (arg2[0] == '-' && isdigit(arg2[1])))
{
new value = str_to_num(arg2);
store_cash(id, value);
ColorChat(id, GREEN, "[%s]^x01 Voce depositou^x03 %d^x01 AP na sua conta", prefix, value)
return PLUGIN_HANDLED;
}
else if (equali(arg2, "all"))
{
store_cash(id, -1);
ColorChat(id, GREEN, "[%s]^x01 Voce depositou^x03 todos^x01 AP", prefix)
return PLUGIN_HANDLED;
}
else if (arg2[0] == 0)
ColorChat(id, GREEN, "[%s]^x01 Para depositar Ammo Packs digite^x03 /depositar <quantia>", prefix);
return PLUGIN_CONTINUE;
}
else if (equali(arg1, "sacar", 8) || equali(arg1, "sacar", 4) || equali(arg1, "retrieve", 8))
{
if (isdigit(arg2[0]) || (arg2[0] == '-' && isdigit(arg2[1])))
{
new value = str_to_num(arg2);
take_cash(id, value);
ColorChat(id, GREEN, "[%s]^x01 Voce sacou^x03 %d^x01 AP da sua conta", prefix, value)
return PLUGIN_HANDLED;
}
else if (equali(arg2, "all"))
{
take_cash(id, -1);
ColorChat(id, GREEN, "[%s]^x01 Voce sacou^x03 todos^x01 AP da sua conta", prefix)
return PLUGIN_HANDLED;
}
else if (arg2[0] == 0)
ColorChat(id, GREEN, "[%s]^x01 Para sacar Ammo Packs digite^x03 /sacar <quantia>", prefix);
return PLUGIN_CONTINUE;
}
else if (equali(arg1, "conta", 6) || equali(arg1, "banco", 7) || equali(arg1, "banco", 4))
{
if (arg2[0] == 0)
{
ColorChat(id, GREEN, "[%s]^x01 Voce tem^x03 %d^x01 AP na sua conta", prefix, bankstorage[id]);
return PLUGIN_HANDLED;
}
else
{
new player = cmd_target(id, arg2, 2);
if (!player)
return PLUGIN_CONTINUE;
static playername[32];
get_user_name(player, playername, 31);
ColorChat(id, GREEN, "[%s]^x03 %s^x01 tem^x04 %d^x01 Ammo Packs", prefix, playername, bankstorage[player]);
return PLUGIN_HANDLED;
}
}
}
return PLUGIN_CONTINUE;
}
//public zp_user_disconnect_pre(id)
public client_disconnect(id)
{
store_cash(id, -1);
if (bankstorage[id] > 0)
save_data(id);
}
//public zp_user_connect_post(id)
public client_connect(id)
{
bankstorage[id] = 0; //clear residual before loading
retrieve_data(id);
}
store_cash(id, amnt)
{
if (!get_pcvar_num(pcvars[enable]))
return;
if (amnt == -1)
{
bankstorage[id] += zp_get_user_ammo_packs(id);
zp_set_user_ammo_packs(id, 0);
checkmax(id);
}
else if (amnt > 0)
{
new temp = zp_get_user_ammo_packs(id);
new limit = get_pcvar_num(pcvars[cap]);
if (temp >= amnt)
{
if (bankstorage[id] + amnt <= limit)
{
bankstorage[id] += amnt
zp_set_user_ammo_packs(id, temp - amnt);
}
else
{
new overflow = bankstorage[id] + amnt - limit;
bankstorage[id] = limit;
zp_set_user_ammo_packs(id, temp - amnt + overflow);
ColorChat(id, GREEN, "[%s]^x01 Your bank account has reached it's maximium capacity of^x03 %d", prefix, limit);
ColorChat(id, GREEN, "[%s]^x01 Only^x03 %d^x01 of the^x04 %d^x01 you specified to deposit have been deposited", prefix, amnt - overflow, amnt);
}
}
else
ColorChat(id, GREEN, "[%s]^x01 Voce nao tem (^x03%d^x01) AP para depositar na sua conta", prefix, amnt, temp);
}
else
take_cash(id, -amnt);
}
take_cash(id, amnt)
{
if (!get_pcvar_num(pcvars[enable]))
return;
if (amnt == 0) //otherwise a non terminal loop is possible
return;
if (amnt == -1)
{
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + bankstorage[id])
bankstorage[id] = 0;
}
else if (amnt > 0)
{
if (bankstorage[id] >= amnt)
{
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + amnt);
bankstorage[id] -= amnt;
}
else {
ColorChat(id, GREEN, "[%s]^x01 Voce nao tem (^x03%d^x01) AP para sacar da sua conta!", prefix, amnt, bankstorage[id]);
}
}
else store_cash(id, -amnt);
}
save_data(id)
{
new Name[35];
get_user_name(id, Name, 34);
new vaultkey[40], vaultdata[13];
formatex(vaultkey, 39, "__%s__", Name);
formatex(vaultdata, 12, "%i", bankstorage[id]);
nvault_set(gvault, vaultkey, vaultdata);
}
retrieve_data(id)
{
new Name[35];
get_user_name(id, Name, 34);
new vaultkey[40], vaultdata[13];
format(vaultkey, 39, "__%s__", Name);
nvault_get(gvault, vaultkey, vaultdata, 12);
bankstorage[id] = str_to_num(vaultdata);
checkmax(id);
// If they have an account don't allow zombie mod to give them 5 ammo packs at beggining
if (get_pcvar_num(pcvars[start]) && bankstorage[id] > 0)
zp_set_user_ammo_packs(id, 0);
}
checkmax(id)
{
if (bankstorage[id] > get_pcvar_num(pcvars[cap]))
bankstorage[id] = get_pcvar_num(pcvars[cap]);
else if (bankstorage[id] < 0)
bankstorage[id] = 0;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1049\\ f0\\ fs16 \n\\ par }
*/
|