Code:
#include <amxmodx>
#include <nvault>
//Uncomment 'IM_USING_ZP50' if your server is running ZP50 and above.
//#define IM_USING_ZP50
#if defined IM_USING_ZP50
native zp_ammopacks_get(id)
native zp_ammopacks_set(id, amount)
#else
native zp_get_user_ammo_packs(id)
native zp_set_user_ammo_packs(id, amount)
#endif
//Your vault name
#define VAULT_NAME "zp_ap_store"
//Max player's ammopack that can be save in vault.
#define MAX_AMMOPACK 999999
//Max day player's ammopack can be stay in vault, set 0 = permanent.
#define DAY_PRUNE 60
new hVaultHandle, bool:bIsLoaded[33], szName[33][35]
public plugin_init()
{
register_plugin("[ZPNM] AP Store", "0.0.1", "wbyokomo")
}
public plugin_cfg()
{
hVaultHandle = nvault_open(VAULT_NAME)
if(hVaultHandle == INVALID_HANDLE)
{
new szText[128]
formatex(szText, 127, "Error opening '%s' nVault.", VAULT_NAME)
set_fail_state(szText)
}
new day = DAY_PRUNE
if(day > 0) nvault_prune(hVaultHandle, 0, get_systime() - (DAY_PRUNE * 86400));
}
public plugin_end()
{
nvault_close(hVaultHandle)
}
public client_putinserver(id)
{
if(is_user_hltv(id)) return;
if(is_user_bot(id)) return;
get_user_name(id, szName[id], 34)
LoadData(id)
}
public client_disconnect(id)
{
SaveData(id)
bIsLoaded[id] = false
}
LoadData(id)
{
new szKey[40]
formatex(szKey, 39, "%sZPAP", szName[id])
new iAmmo = nvault_get(hVaultHandle, szKey)
#if defined IM_USING_ZP50
zp_ammopacks_set(id, iAmmo)
#else
zp_set_user_ammo_packs(id, iAmmo)
#endif
bIsLoaded[id] = true
}
SaveData(id)
{
if(!bIsLoaded[id]) return;
#if defined IM_USING_ZP50
new ap = zp_ammopacks_get(id)
#else
new ap = zp_get_user_ammo_packs(id)
#endif
if(ap > MAX_AMMOPACK) ap = MAX_AMMOPACK;
new szAmmo[12], szKey[40]
formatex(szKey, 39, "%sZPAP", szName[id])
formatex(szAmmo, 11, "%d", ap)
nvault_set(hVaultHandle, szKey, szAmmo)
}
A name-save version..