Raised This Month: $ Target: $400
 0% 

ZP Bank Help Please!


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
DJ Fox
BANNED
Join Date: Jun 2010
Old 02-23-2013 , 08:16   ZP Bank Help Please!
Reply With Quote #1

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 }
*/

Last edited by DJ Fox; 02-23-2013 at 08:19.
DJ Fox is offline
Old 02-24-2013, 13:38
DJ Fox
This message has been deleted by YamiKaitou. Reason: wait 14 days before you bump
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 21:46.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode