Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <amxmodx>
- #include <fvault>
- #include <zombieplague>
- #define AUTOSAVE_INTERVAL 20.0
- #define flag_get(%1,%2) (%1 & (1 << (%2 & 31)))
- #define flag_get_boolean(%1,%2) (flag_get(%1,%2) ? true : false)
- #define flag_set(%1,%2) %1 |= (1 << (%2 & 31))
- #define flag_unset(%1,%2) %1 &= ~(1 << (%2 & 31))
- new const g_vault_name[] = "zp_autobank"
- new g_LoadSuccess, g_IsConnected, g_MaxPlayers
- new g_authid[33][35]
- new g_ammo[33]
- #define is_user_valid(%1) (1 <= %1 <= g_MaxPlayers)
- public plugin_init()
- {
- register_plugin("ZP AmmoSaving(fvault)", "1.0.5", "wbyokomo")
- register_logevent("logevent_round_end", 2, "1=Round_End")
- g_MaxPlayers = get_maxplayers()
- }
- public plugin_cfg()
- {
- set_task(AUTOSAVE_INTERVAL, "TaskAutoSave",_,_,_,"b")
- }
- public client_putinserver(id)
- {
- if(is_user_hltv(id) || is_user_bot(id)) return;
- flag_set(g_IsConnected,id)
- get_user_authid(id, g_authid[id], 34)
- LoadAmmo(id)
- }
- public client_disconnect(id)
- {
- if(flag_get(g_LoadSuccess,id))
- {
- SaveAmmo(id)
- flag_unset(g_LoadSuccess,id)
- }
- flag_unset(g_IsConnected,id)
- }
- public logevent_round_end() TaskAutoSave();
- public TaskAutoSave()
- {
- for(new id = 1; id <= g_MaxPlayers; id++)
- {
- if(is_user_valid(id) && flag_get(g_IsConnected,id) && flag_get(g_LoadSuccess,id)) SaveAmmo(id);
- }
- }
- LoadAmmo(id)
- {
- new data[16]
- if(fvault_get_data(g_vault_name, g_authid[id], data, 15))
- {
- g_ammo[id] = str_to_num(data)
- zp_set_user_ammo_packs(id, g_ammo[id])
- }
- flag_set(g_LoadSuccess,id)
- }
- SaveAmmo(id)
- {
- if(!flag_get(g_LoadSuccess,id))
- {
- server_print("[BANK] User [%i] failed to save AP because its not loaded yet!", id)
- return
- }
- g_ammo[id] = zp_get_user_ammo_packs(id)
- new data[16]
- num_to_str(g_ammo[id], data, 15)
- fvault_set_data(g_vault_name, g_authid[id], data)
- }
Add Comment
Please, Sign In to add comment