New Member
Join Date: Sep 2016
Location: Finland
|
09-14-2016
, 09:22
Re: ZP Bank Menu
|
#4
|
Good thing I saw this topic.. I haven't seen any zp bank plugin that I actually got working, other than this. I don't personally care about what method the creator uses for storing the data, as long as it is not veeery very slow.
(Referencing all the talk I have seen about the speeds of fvault, nvault, and other data storing methods.)
But yeah, this actually works! Only thing I noticed when compiling, was 'Warning #213 tag mismatch' that occured at line 228.
Here is the original code and how I fixed it:
Change this:
PHP Code:
public cmdDonate(id) { if(!g_DonateID[id] == 0) return PLUGIN_HANDLED
To this:
PHP Code:
public cmdDonate(id) { if(g_DonateID[id] == 0) return PLUGIN_HANDLED
And.. I also noticed there were some defines used in the code that were not written at the start of the script:
Here is one part of the code where the defines are needed. It seems he made this to also support NonSteam. I would remove the support, but don't know how.
PHP Code:
#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
But, anyways.. I got rid of the warning message when compiling, and added the missing defines.
Here is the fixed code for you:
(Also.. Please remove the NonSteam support, we don't need it.)
PHP Code:
/* Plugin generated by AMXX-Studio */
#include <amxmodx> #include <zombieplague> #include <fvault>
#define PLUGIN "[MG] Bank Menu" #define VERSION "1.0" #define AUTHOR "XizzyS x)"
#define is_valid_player(%1) (1 <= %1 <= 32)
//SELECT ONLY ONE OF THESE THREE BELOW! Nobody know what *might* happen if you select two or even all of them! //Uncomment '#define STEAM' to use SteamID //Uncomment '#define NICK' to use PlayerNick //Uncomment '#define IP' to use Player IP #define STEAM //#define NICK //#define IP
new g_AP[33] new g_DonateID[33]
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_clcmd("takeAmount", "cmdTakeAmount") register_clcmd("saveAmount", "cmdSaveAmount") register_clcmd("donate", "cmdDonate") register_clcmd("say /bank", "menuBank") register_clcmd("say_team /bank", "menuBank") register_clcmd("say /wd", "menuBank") register_clcmd("say_team /wd", "menuBank") } public menuBank(id) { if(is_valid_player(id)) { new title[100] formatex(title, 99, "\r[MG] \wBank[ You have in bank : \y%i\w]", 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^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, "[MG][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, "[MG][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, "[MG][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, "[MG][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, "[MG][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, "[MG][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, "[MG][Bank] You saved %i Ammopacks to your Bank. Now you have %i Ammopacks 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, "[MG][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, "[MG][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, "[MG][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, "zm_%s", szMethod); format(vaultdata, 327, "%i", g_AP[id]); fvault_set_data( "Bank_Save", vaultkey, vaultdata ); } 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, "zm_%s", szMethod); format(vaultdata, 327, "%i", g_AP[id]); fvault_get_data( "Bank_Save", 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) { cmdSaveAll(id); SaveData(id); }
Thank you for your time, and see you again!
|
|