Kód: #include <amxmodx> #include <amxmisc> #include <fakemeta> #include <nvault> #include <zombieplague>
new g_save, g_ammo[33], g_logged_in[33], g_pw[33][64]
new cvar_max, cvar_track_ratio;
public plugin_init() { register_plugin("[ZP] Nvault Bank with Password", "1.13", "EXaNoVA")
register_event("DeathMsg","event_deathmsg","a") cvar_max = register_cvar("nvault_max_ammo_save", "2000") cvar_track_ratio = register_cvar("zp_ammo_track_ratio", ""); set_pcvar_float(cvar_track_ratio, 1.0); register_clcmd("say ", "say_hook") register_dictionary("nvault_bank.txt")
g_save = nvault_open("bank_save") track_ammopacks(); } public plugin_end() { new players[32], playernum; get_players(players, playernum); for(new i=0; i < playernum; i++) { filter(players[i]); } } public zp_user_infected_post(id, infector) { filter(infector) filter(id) } public zp_extra_item_selected(id, itemid) { filter(id) } public event_deathmsg() { new killer = read_data(1) new victim = read_data(2)
if (!killer && !victim) return PLUGIN_CONTINUE; filter(killer) filter(victim)
return PLUGIN_CONTINUE; } public say_hook(id) { new text[100], command[64], password[32], num[30], name[50], vaultkey[64] read_args(text, 99); remove_quotes(text); command[0] = '^0'; password[0] = '^0'; parse(text, command, 63, password, 31, num, 29); get_user_name(id, name, 49) format(vaultkey, 63, "%s-/", name) if(equal(command, "/login", 6)) { new vaultdata[256], ammo[32], pw[64] nvault_get(g_save, vaultkey, vaultdata, 255) replace_all(vaultdata, 255, "#", "") parse(vaultdata, ammo, 31, pw, 63) if(g_logged_in[id] == 0) { if(!pw[0] && !pw[1] && !pw[2]) { client_print(id, print_chat, "%L", LANG_PLAYER, "NO_PW1") client_print(id, print_chat, "%L", LANG_PLAYER, "NO_PW2") return PLUGIN_HANDLED } else if(equal(password, pw)) { g_ammo[id] = str_to_num(ammo)+zp_get_user_ammo_packs(id) g_pw[id] = pw g_logged_in[id] = 1 zp_set_user_ammo_packs(id, g_ammo[id]) client_print(id, print_chat, "%L",LANG_PLAYER, "YOUR_AMMO", g_ammo[id]) client_print(id, print_chat, "%L", LANG_PLAYER, "LOGIN_SUCCES") } else { client_print(id, print_chat, "%L", LANG_PLAYER, "WRONG_PW") } } else { client_print(id, print_chat, "%L", LANG_PLAYER, "ALREADY") } return PLUGIN_HANDLED } else if(equal(command, "/password", 9)) { new vaultdata[256], ammo[32], pw[64] nvault_get(g_save, vaultkey, vaultdata, 255) replace_all(vaultdata, 255, "#", "") parse(vaultdata, ammo, 31, pw, 63) g_pw[id] = password if(!pw[0] && !pw[1] && !pw[2]) { format(vaultdata, 255, "%i# %s#", g_ammo[id], g_pw[id]) nvault_set(g_save, vaultkey, vaultdata) client_print(id, print_chat, "%L",LANG_PLAYER, "PW_CREATED1", password) client_print(id, print_chat, "%L",LANG_PLAYER, "PW_CREATED2", password) } else if(g_logged_in[id] == 1) { if(!password[0] && !password[1] && !password[2]) { client_print(id, print_chat, "%L", LANG_PLAYER, "PW_ERROR") } else { format(vaultdata, 255, "%i# %s#", g_ammo[id], password) nvault_set(g_save, vaultkey, vaultdata) client_print(id, print_chat, "%L", LANG_PLAYER, "PW_CHANGED", password) } } else { client_print(id, print_chat, "%L", LANG_PLAYER, "NOT_LOGGED") } return PLUGIN_HANDLED } else { return PLUGIN_CONTINUE; } return PLUGIN_HANDLED }
public track_ammopacks() { static players[32], playernum, id; get_players(players, playernum); for(new i=0; i < playernum; i++) { id = players[i]; g_ammo[id] = zp_get_user_ammo_packs(id); } set_task(get_pcvar_float(cvar_track_ratio), "track_ammopacks"); }
public client_disconnect(id) { filter(id) g_logged_in[id] = 0 g_ammo[id] = 0 } public client_connect(id) { g_logged_in[id] = 0 } public filter(id) { if(g_logged_in[id]) { save_ammo(id) } else return } public save_ammo(id) { new vaultkey[64], vaultdata[256], name[33]; get_user_name(id,name,32) format(vaultkey, 63, "%s-/", name) if(g_ammo[id] >= get_pcvar_num(cvar_max)) { format(vaultdata, 255, "%d# %s#", get_pcvar_num(cvar_max), g_pw[id]) client_print(id, print_chat, "%L", LANG_PLAYER, "REACHED", get_pcvar_num(cvar_max)) } else { format(vaultdata, 255, "%i# %s#", g_ammo[id], g_pw[id]) } nvault_set(g_save, vaultkey, vaultdata) return PLUGIN_CONTINUE; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1038\\ f0\\ fs16 \n\\ par } */
|