- #include <amxmodx> 
- #include <amxmisc> 
- #include <fakemeta> 
- #include <sqlx> 
- #include <zombieplague> 
- #include <colorchat> 
-   
- #pragma semicolon 1 
-   
- #if !defined MAX_PLAYERS 
- 	#define MAX_PLAYERS 32 
- #endif 
-   
- new PLUGIN_NAME[] = "[ZP]Addons: Bank SQL"; 
- new PLUGIN_VERSION[] = "0.9.2"; 
- new PLUGIN_AUTHOR[] = "Epmak"; 
- new PLUGIN_PREFIX[] = "[ZP][Bank]"; 
-   
- enum vars_struct {  
- 	mode=0, 
- 	annonce, 
-   
- 	save_limit, 
- 	save_days, 
- 	save_type, 
-   
- 	block_cname, 
- 	startedammo, 
- 	allow_passwd, 
- 	allow_donate, 
-   
- 	bool:round_end, 
-   
- 	_pw_str[32], 
- 	table[32], 
- 	config_dir[128] 
- }; 
-   
- enum bank_struct { 
- 	bool:ingame, 
- 	bool:async, 
- 	bool:loggin, 
- 	auth[36], 
- 	passwd[32], 
- 	amount 
- } 
-   
- new g_vars[vars_struct]; 
- new g_Bank[MAX_PLAYERS+1][bank_struct]; 
- new Handle:g_Sql = Empty_Handle,Handle:g_SqlTuple = Empty_Handle; 
-   
- public plugin_init() 
- { 
- 	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR); 
- 	register_cvar("zp_bank_sql", PLUGIN_VERSION, FCVAR_SERVER); 
-   
- 	register_dictionary("zp_bank.txt"); 
- 	register_dictionary("common.txt"); 
-   
- 	register_clcmd("say", "handle_say"); 
- 	register_clcmd("say_team", "handle_say"); 
-   
- 	register_concmd("zp_bank_show", "cmdBankShow", ADMIN_ADMIN); 
- 	register_concmd("zp_bank_set", "cmdBankSet", ADMIN_RCON, "<name or #userid> <+ or ->amount"); 
-   
- 	g_vars[startedammo] = get_cvar_pointer("zp_starting_ammo_packs"); 
-   
- 	register_srvcmd("zp_bank_connect", "db_connect"); 
-   
- 	register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged"); 
-   
- 	server_cmd("zp_bank_connect"); 
- } 
-   
- public plugin_precache() 
- { 
- 	get_configsdir(g_vars[config_dir], 127); 
-   
- 	g_vars[mode] = register_cvar("zp_bank", "1"); 
- 	g_vars[annonce] = register_cvar("zp_bank_annonce", "360.0"); 
- 	g_vars[save_limit] = register_cvar("zp_bank_save_limit", "99999"); 
- 	g_vars[save_days] = register_cvar("zp_bank_save_days", "24"); 
- 	g_vars[save_type] = register_cvar("zp_bank_save_type", "2"); 
- 	g_vars[block_cname] = register_cvar("zp_bank_block_name_change", "1"); 
- 	g_vars[allow_passwd] = register_cvar("zp_bank_allow_passwd", "1"); 
- 	g_vars[allow_donate] = register_cvar("zp_bank_allow_donate", "1"); 
-   
- 	register_cvar("zp_bank_host", "127.0.0.1"); 
- 	register_cvar("zp_bank_user", "root"); 
- 	register_cvar("zp_bank_pass", ""); 
- 	register_cvar("zp_bank_db", "amxx"); 
- 	register_cvar("zp_bank_type", "mysql"); 
- 	register_cvar("zp_bank_table", "zp_bank"); 
- 	register_cvar("zp_bank_pw_str", "_bpw"); 
-   
- 	server_cmd("exec %s/zp_bank.cfg", g_vars[config_dir]); 
- 	server_exec(); 
- } 
-   
- public plugin_cfg() 
- { 
- 	g_vars[mode] = get_pcvar_num(g_vars[mode]); 
- 	g_vars[save_limit] = get_pcvar_num(g_vars[save_limit]); 
- 	g_vars[save_days] = get_pcvar_num(g_vars[save_days]); 
- 	g_vars[save_type] = get_pcvar_num(g_vars[save_type]); 
- 	g_vars[block_cname] = get_pcvar_num(g_vars[block_cname]); 
- 	g_vars[allow_passwd] = get_pcvar_num(g_vars[allow_passwd]); 
- 	g_vars[allow_donate] = get_pcvar_num(g_vars[allow_donate]); 
-   
- 	if(g_vars[save_limit] < 0) g_vars[save_limit] = 0; 
-   
- 	if(get_pcvar_num(g_vars[annonce])) 
- 		set_task(get_pcvar_float(g_vars[annonce]), "print_annonce",_,_,_,"b"); 
-   
- 	get_cvar_string("zp_bank_pw_str", g_vars[_pw_str], 31); 
- }  
-   
- public plugin_end() 
- { 
- 	if(g_Sql != Empty_Handle) SQL_FreeHandle(g_Sql); 
- 	if(g_SqlTuple != Empty_Handle) SQL_FreeHandle(g_SqlTuple); 
- } 
-   
- public zp_round_started(gamemode, id) 
- { 
- 	g_vars[round_end] = false; 
- } 
-   
- public zp_round_ended(winteam) 
- { 
- 	if (!g_vars[mode] || g_Sql == Empty_Handle) 
- 		return ; 
-   
- 	static i; 
- 	for(i=1;i<=MAX_PLAYERS;i++) 
- 	{ 
- 		if(!g_Bank[i][ingame] || !g_Bank[i][loggin] || !g_Bank[i][async]) 
- 			continue; 
-   
- 		SaveClientBank(i); 
- 	} 
-   
- 	g_vars[round_end] = true; 
- } 
-   
- public client_connect(id) 
- { 
- 	if (!g_vars[mode]) 
- 		return ; 
-   
- 	GetAuthId(id, g_Bank[id][auth],35); 
-   
- 	g_Bank[id][amount] = 0; 
- 	g_Bank[id][async] = false; 
- 	g_Bank[id][loggin] = false; 
-   
- 	if(g_vars[mode] == 2) 
- 		zp_set_user_ammo_packs(id, get_pcvar_num(g_vars[startedammo])); 
-   
- 	LoadClientBank(id); 
- } 
-   
- public client_putinserver(id) 
- { 
- 	g_Bank[id][ingame] = true; 
-   
- 	if(g_Bank[id][async] == true && g_Bank[id][loggin] == true) 
- 		SetAmmoBank(id, g_Bank[id][amount]); 
- } 
-   
- public client_disconnect(id) 
- { 
- 	if (!g_vars[mode] || g_Sql == Empty_Handle) 
- 		return ; 
-   
- 	if(g_vars[round_end] == false && g_Bank[id][async] == true && g_Bank[id][loggin] == true) 
- 		SaveClientBank(id); 
-   
- 	g_Bank[id][ingame] = false; 
- 	g_Bank[id][auth][0] = '^0'; 
- 	g_Bank[id][passwd][0] = '^0'; 
- } 
-   
- public cmdBankShow(id, level, cid) 
- { 
- 	if (!cmd_access(id, level, cid, 1)) 
- 		return PLUGIN_HANDLED; 
-   
- 	static pl_name[32], pl_amount[11], i; 
- 	console_print(id, "%33s amount","name"); 
- 	for(i=1;i<=MAX_PLAYERS;i++) 
- 	{ 
- 		if(!g_Bank[i][ingame]) continue; 
-   
- 		get_user_name(i,pl_name,31); 
-   
- 		if(!g_Bank[i][async]) 
- 			pl_amount = "not loaded"; 
- 		else if(!g_Bank[i][loggin]) 
- 			pl_amount = "not loggin"; 
- 		else 
- 			num_to_str(GetAmmoBank(i),pl_amount,10); 
-   
- 		console_print(id, "%33s %s", pl_name, pl_amount); 
- 	} 
-   
- 	return PLUGIN_HANDLED; 
- } 
-   
- public cmdBankSet(id, level, cid) 
- { 
- 	if (!cmd_access(id, level, cid, 3)) 
- 		return PLUGIN_HANDLED; 
-   
- 	static s_player[32], player, s_amount[12], i_amount; 
- 	read_argv(1, s_player, 31); 
- 	player = cmd_target(id, s_player, CMDTARGET_ALLOW_SELF); 
-   
- 	if (!player) 
- 		return PLUGIN_HANDLED; 
-   
- 	get_user_name(player,s_player,31); 
- 	if(!g_Bank[player][async]) 
- 	{ 
- 		console_print(id,"The player '%s' has not loaded bank", s_player); 
- 		return PLUGIN_HANDLED; 
- 	} 
- 	else if(!g_Bank[player][loggin]) 
- 	{ 
- 		console_print(id,"The player '%s' has not loggin bank", s_player); 
- 		return PLUGIN_HANDLED; 
- 	} 
-   
- 	read_argv(2, s_amount, 11); 
- 	remove_quotes(s_amount); 
- 	i_amount = str_to_num(s_amount); 
-   
- 	switch(s_amount[0]) 
- 	{ 
- 		case '+': 
- 			SetAmmoBank(player, GetAmmoBank(player)+i_amount); 
- 		case '-': 
- 			SetAmmoBank(player, GetAmmoBank(player)-(0-i_amount)); 
- 		default: 
- 			SetAmmoBank(player,i_amount); 
- 	} 
-   
- 	return PLUGIN_HANDLED; 
- } 
-   
- public print_annonce() 
- { 
- 	if (!g_vars[mode] || g_Sql == Empty_Handle) 
- 		return ; 
-   
- 	ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE1"); 
- 	if(g_vars[mode] == 1) 
- 	{ 
- 		ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE2"); 
- 		ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE3"); 
- 	} 
- 	else 
- 	{ 
- 		ColorChat(0, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE4"); 
- 	} 
- } 
-   
- public db_loadcurrent() 
- { 
- 	for(new i=1;i<=MAX_PLAYERS;i++) 
- 	{ 
- 		if(g_Bank[i][async] || !g_Bank[i][ingame]) continue; 
-   
- 		LoadClientBank(i); 
- 	} 
- } 
-   
- public db_connect(count) 
- { 
- 	if(!g_vars[mode]) 
- 		return ; 
-   
- 	new host[64], user[32], pass[32], db[128]; 
- 	new get_type[13], set_type[12]; 
- 	new error[128], errno; 
-   
- 	get_cvar_string("zp_bank_host", host, 63); 
- 	get_cvar_string("zp_bank_user", user, 31); 
- 	get_cvar_string("zp_bank_pass", pass, 31); 
- 	get_cvar_string("zp_bank_type", set_type, 11); 
- 	get_cvar_string("zp_bank_db", db, 127); 
- 	get_cvar_string("zp_bank_table", g_vars[table], 31); 
-   
- 	if(is_module_loaded(set_type) == -1) 
- 	{ 
- 		server_print("^r^n%s error: module '%s' not loaded.^r^n%s Add line %s to %s/modules.ini and restart server^r^n", PLUGIN_PREFIX, set_type, PLUGIN_PREFIX, set_type, g_vars[config_dir]); 
- 		return ; 
- 	} 
-   
- 	SQL_GetAffinity(get_type, 12); 
-   
- 	if (!equali(get_type, set_type)) 
- 		if (!SQL_SetAffinity(set_type)) 
- 			log_amx("Failed to set affinity from %s to %s.", get_type, set_type); 
-   
- 	g_SqlTuple = SQL_MakeDbTuple(host, user, pass, db); 
-   
- 	g_Sql = SQL_Connect(g_SqlTuple, errno, error, 127); 
-   
- 	if (g_Sql == Empty_Handle) 
- 	{ 
- 		server_print("%s SQL Error #%d - %s", PLUGIN_PREFIX, errno, error); 
-   
- 		count += 1; 
- 		set_task(10.0, "db_connect", count); 
-   
- 		return ; 
- 	} 
-   
- 	SQL_QueryAndIgnore(g_Sql, "SET NAMES utf8"); 
-   
- 	if (equali(set_type, "sqlite") && !sqlite_TableExists(g_Sql, g_vars[table])) SQL_QueryAndIgnore(g_Sql, "CREATE TABLE %s (auth VARCHAR(36) PRIMARY KEY, password VARCHAR(32) NOT NULL DEFAULT '', amount INTEGER DEFAULT 0, timestamp INTEGER NOT NULL DEFAULT 0)",g_vars[table]); 
- 	else if (equali(set_type, "mysql")) SQL_QueryAndIgnore(g_Sql,"CREATE TABLE IF NOT EXISTS `%s` (`auth` VARCHAR(36) NOT NULL, `password` VARCHAR(32) NOT NULL DEFAULT '', `amount` INT(10) NOT NULL DEFAULT 0, `timestamp` INT(10) NOT NULL DEFAULT 0, PRIMARY KEY (`auth`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;", g_vars[table]); 
-   
- 	CleanDataBase(); 
- 	if(count > 1) 
- 		db_loadcurrent(); 
-   
- 	server_print("%s connected to: '%s://%s:****@%s/%s/%s'",PLUGIN_PREFIX, set_type, user, host, db, g_vars[table]); 
- } 
-   
- public CleanDataBase() 
- { 
- 	SQL_QueryAndIgnore(g_Sql, "DELETE FROM %s WHERE amount='0' AND password = '';", g_vars[table]); 
-   
- 	if (!g_vars[save_days]) return ; 
-   
- 	new curTime = get_systime(); 
- 	curTime -= ((g_vars[save_days] * 24) * 3600); 
-   
- 	SQL_QueryAndIgnore(g_Sql,"DELETE FROM %s WHERE timestamp < '%d';", g_vars[table], curTime); 
- } 
-   
- public fwClientUserInfoChanged(id, buffer) 
- { 
- 	if (!g_vars[mode] || !is_user_connected(id)) 
- 		return FMRES_IGNORED; 
-   
- 	new name[32], val[32], name_1[] = "name"; 
- 	get_user_name(id, name, 31); 
- 	engfunc(EngFunc_InfoKeyValue, buffer, name_1, val, 31); 
- 	if (equal(val, name)) 
- 		return FMRES_IGNORED; 
-   
- 	if(g_vars[block_cname]) 
- 	{ 
- 		engfunc(EngFunc_SetClientKeyValue, id, buffer, name_1, name); 
- 		client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name); 
- 		console_print(id, "%L", id ,"NO_NAME_CHANGE"); 
- 	} 
- 	else 
- 	{ 
- 		GetAuthId(id,g_Bank[id][auth],35); 
- 		return FMRES_IGNORED; 
- 	} 
-   
- 	return FMRES_SUPERCEDE; 
- } 
-   
- public handle_say(id) 
- { 
- 	if(!g_vars[mode]) 
- 	{ 
- 		ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_DISABLED"); 
-   
- 		return PLUGIN_CONTINUE; 
- 	} 
- 	else if(g_Sql == Empty_Handle) 
- 	{ 
- 		ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ERR"); 
-   
- 		return PLUGIN_CONTINUE; 
- 	} 
- 	else if (!g_Bank[id][async]) 
- 		return PLUGIN_CONTINUE; 
-   
- 	new text[60], command[16], command2[32], password[32], set_packs; 
- 	read_args(text, 59); 
- 	remove_quotes(text); 
-   
- 	command[0] = '^0'; 
- 	command2[0] = '^0'; 
- 	password[0] = '^0'; 
- 	parse(text, command, 15, command2, 31, password, 31); 
-   
- 	if (equali(command, "/", 1)) 
- 		format(command, 15, command[1]); 
-   
- 	if (g_vars[allow_donate] && equali(command, "kuldes", 6)) 
- 	{ 
- 		donate(id, command2, str_to_num(password)); 
- 	} 
- 	else if (equali(command, "mybank", 6) || equali(command, "bank", 4)) 
- 	{ 
- 		if(g_vars[save_type] == 2 && g_vars[allow_passwd]) 
- 		{ 
- 			if(equali(command2, "login", 5)) 
- 			{ 
- 				if(g_Bank[id][loggin]) { 
- 					ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_ALREADY"); 
- 					return PLUGIN_HANDLED; 
- 				} 
-   
- 				if(g_Bank[id][passwd][0] && equal(password, g_Bank[id][passwd])) 
- 				{ 
- 					g_Bank[id][loggin] = true; 
- 					SetAmmoBank(id, g_Bank[id][amount]); 
- 					client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password); 
- 					ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_SUCCESS"); 
- 				} 
- 				else 
- 				{ 
- 					ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_BAD"); 
- 				} 
-   
- 				return PLUGIN_HANDLED; 
- 			} 
- 			else if(!g_Bank[id][loggin]) 
- 			{ 
- 				ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN"); 
- 				return PLUGIN_HANDLED; 
- 			} 
- 			else if(equali(command2, "password", 8)) 
- 			{ 
- 				if(password[0]) 
- 				{ 
- 					g_Bank[id][passwd] = password; 
- 					client_cmd(id, "setinfo %s ^"%s^"", g_vars[_pw_str], password); 
- 					ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD_SET", g_Bank[id][passwd]); 
- 				} 
- 				else 
- 				{ 
- 					ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD", g_Bank[id][passwd]); 
- 				} 
- 				return PLUGIN_HANDLED; 
- 			} 
- 			else if(!g_Bank[id][passwd][0]) 
- 				ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_LOGIN_PASSWORD_SETHELP"); 
- 		} 
-   
- 		if(g_vars[mode] == 2) 
- 		{ 
- 			ColorChat(id, CHATCOLOR_GREY, "%L", LANG_PLAYER, "BANK_ANNOUNCE4"); 
- 			return PLUGIN_CONTINUE; 
- 		} 
-   
- 		ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK", g_Bank[id][amount]);	 
- 		ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE2"); 
- 		ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE3"); 
- 	} 
- 	else if (g_vars[mode] == 2) 
- 		return PLUGIN_CONTINUE; 
- 	else if (equali(command, "deposit", 7) || equali(command, "send", 4) || equali(command, "store", 5)) 
- 	{ 
- 		new user_ammo_packs = zp_get_user_ammo_packs(id); 
-   
- 		if (equali(command2, "all")) set_packs = user_ammo_packs; 
- 		else set_packs = str_to_num(command2); 
-   
- 		new limit_exceeded=false; 
-   
- 		if (g_vars[save_limit] && set_packs > 0 && g_Bank[id][amount] + set_packs > g_vars[save_limit]) 
- 		{ 
- 			new overflow = g_Bank[id][amount] + set_packs - g_vars[save_limit]; 
- 			set_packs -= overflow; 
-   
- 			ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT_MAX", g_vars[save_limit]); 
-   
- 			limit_exceeded = true; 
- 		} 
-   
- 		if (set_packs > 0) 
- 		{ 
- 			if (user_ammo_packs >= set_packs) 
- 			{ 
- 				g_Bank[id][amount] += set_packs; 
- 				zp_set_user_ammo_packs(id, user_ammo_packs - set_packs); 
- 				ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT", set_packs, g_Bank[id][amount]); 
- 			} 
- 			else 
- 				ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "DEPOSIT_ERR", set_packs, user_ammo_packs); 
-   
- 			return PLUGIN_HANDLED; 
- 		} 
- 		else if(!limit_exceeded) 
- 			ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE2"); 
- 	} 
- 	else if (equali(command, "withdraw", 8) || equali(command, "take", 4) || equali(command, "retrieve", 8) || equali(command, "wd", 2)) 
- 	{ 
- 		new user_ammo_packs = zp_get_user_ammo_packs(id); 
-   
- 		if (equali(command2, "all")) set_packs = g_Bank[id][amount]; 
- 		else set_packs = str_to_num(command2); 
-   
- 		if (set_packs > 0) 
- 		{ 
- 			if (g_Bank[id][amount] >= set_packs) 
- 			{ 
- 				zp_set_user_ammo_packs(id, user_ammo_packs + set_packs); 
- 				g_Bank[id][amount] -= set_packs; 
- 				ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "WITHDRAW", set_packs, g_Bank[id][amount]); 
- 			} 
- 			else 
- 				ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "WITHDRAW_ERR", set_packs, g_Bank[id][amount]); 
-   
- 			return PLUGIN_HANDLED; 
- 		} 
- 		else 
- 			ColorChat(id, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_ANNOUNCE3"); 
- 	} 
-   
- 	return PLUGIN_CONTINUE; 
- } 
-   
- public donate(donater, const reciever_name[], ammo) 
- { 
- 	if(!reciever_name[0] || ammo <= 0 || zp_get_user_ammo_packs(donater) < ammo) 
- 	{ 
- 		ColorChat(donater, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "BANK_DONATE_USAGE"); 
- 		return ; 
- 	} 
-   
- 	new reciever = cmd_target(donater, reciever_name, CMDTARGET_ALLOW_SELF); 
- 	if (!reciever || reciever == donater) 
- 	{ 
- 		ColorChat(donater, CHATCOLOR_GREY, "$g%s$t %L", PLUGIN_PREFIX, LANG_PLAYER, "CL_NOT_FOUND");	 
- 		return ; 
- 	} 
-   
- 	zp_set_user_ammo_packs(donater, zp_get_user_ammo_packs(donater)-ammo); 
- 	zp_set_user_ammo_packs(reciever, zp_get_user_ammo_packs(reciever)+ammo); 
- } 
-   
- public LoadClientBank(id) 
- { 
- 	if (g_SqlTuple == Empty_Handle || g_Sql == Empty_Handle || g_Bank[id][async] == true) 
- 		return ; 
-   
- 	new szQuery[120]; 
- 	format(szQuery, 119,"SELECT amount,password FROM %s WHERE auth='%s';", g_vars[table], g_Bank[id][auth]); 
-   
- 	new szData[2]; 
- 	szData[0] = id; 
- 	szData[1] = get_user_userid(id); 
-   
- 	SQL_ThreadQuery(g_SqlTuple, "LoadClient_QueryHandler", szQuery, szData, 2); 
- } 
-   
- public LoadClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, szData[], iSize, Float:fQueueTime) 
- { 
- 	if(iFailState != TQUERY_SUCCESS) 
- 	{ 
- 		log_amx("%s SQL Error #%d - %s", PLUGIN_PREFIX, iErrnum, szError); 
- 		return ; 
- 	} 
-   
- 	new id = szData[0]; 
-   
- 	if (szData[1] != get_user_userid(id)) 
- 		return ; 
-   
- 	new packs=0,info_pw[32]; 
-   
- 	if(g_vars[mode] == 2) 
- 		packs = get_pcvar_num(g_vars[startedammo]); 
-   
- 	if(SQL_NumResults(hQuery)) 
- 	{ 
- 		packs = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "amount")); 
- 		SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "password"), g_Bank[id][passwd], 31); 
- 	} 
-   
- 	g_Bank[id][amount] = CheckLimit(packs); 
- 	if(g_vars[allow_passwd] && g_Bank[id][passwd][0]) 
- 	{ 
- 		get_user_info(id,g_vars[_pw_str],info_pw,31); 
- 		if(equal(info_pw, g_Bank[id][passwd])) 
- 		{ 
- 			g_Bank[id][loggin] = true; 
- 		} 
- 	} 
- 	else 
- 		g_Bank[id][loggin] = true; 
-   
- 	if(g_Bank[id][ingame] == true && g_Bank[id][loggin] == true) 
- 	{ 
- 		SetAmmoBank(id, g_Bank[id][amount]); 
- 	} 
- 	g_Bank[id][async] = true; 
- } 
-   
- public SaveClientBank(id) 
- { 
- 	if (g_Sql == Empty_Handle) 
- 		return ; 
-   
- 	new packs = GetAmmoBank(id); 
- 	packs = CheckLimit(packs); 
-   
- 	SQL_QuoteString(g_Sql, g_Bank[id][passwd], 31, g_Bank[id][passwd]); 
- 	SQL_QueryAndIgnore(g_Sql, "REPLACE INTO %s (auth,password,amount,timestamp) VALUES('%s', '%s', %d, %d);", g_vars[table], g_Bank[id][auth], g_Bank[id][passwd], packs, get_systime()); 
- } 
-   
- stock GetAuthId(id, Buffer[]="", BufferSize=0) 
- { 
- 	switch(g_vars[save_type]) 
- 	{ 
- 		case 1: get_user_authid(id,Buffer,BufferSize); 
- 		case 2: 
- 		{ 
- 			new name[32]; 
- 			get_user_name(id,name,31); 
- 			SQL_QuoteString(g_Sql, Buffer, BufferSize, name); 
- 		} 
- 		case 3: get_user_ip(id,Buffer,BufferSize,true); 
- 	} 
- } 
-   
- public CheckLimit(packs) 
- { 
- 	if(g_vars[save_limit] && packs > g_vars[save_limit]) 
- 	{ 
- 		packs = g_vars[save_limit]; 
- 	} 
- 	return packs; 
- } 
-   
- public SetAmmoBank(id, packs) 
- { 
- 	if(g_vars[mode] == 2) 
- 		zp_set_user_ammo_packs(id,packs); 
- 	else 
- 		g_Bank[id][amount] = packs; 
- } 
-   
- public GetAmmoBank(id) 
- { 
- 	if(g_vars[mode] == 2) 
- 		return zp_get_user_ammo_packs(id); 
-   
- 	return g_Bank[id][amount]; 
- }