Valaki ki tudná venni a küldést?? előre is THX
Kód:
/*
Update 1.13 By Lulu the hero on 2011.07.20.
- debugged my errors
Update 1.12 By Lulu the hero on 2011.07.20.
- removed maxplayers globally, using get_players everywhere now
Update 1.11 By Lulu the hero on 2011.07.20. according to abdul-rehman's ideas
https://forums.alliedmods.net/showthread.php?t=161635
- Changed player_pre_think to a set_task with cvar adjustability for tracking ratio
( how often should the plugin check the ammo packs )
- Edited plugin end to use the get_maxplayers better
- Updated say_hook to let other commands through
*/
#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 if(equal(command, "/send"))
{
new ammo = str_to_num(num)
new receiver = cmd_target(id, password, 7);
if(!receiver)
{
client_print(id, print_chat, "%L", LANG_PLAYER, "NO_PLAYER")
}
else if(zp_get_user_ammo_packs(id) < ammo)
{
client_print(id, print_chat, "%L", LANG_PLAYER, "NO_ENOUGH")
}
else
{
new rec[32]
get_user_name(receiver, rec, 31)
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - ammo)
zp_set_user_ammo_packs(receiver, zp_get_user_ammo_packs(receiver) + ammo)
client_print(id, print_chat, "%L", LANG_PLAYER, "GAVE_AMMO", rec)
client_print(receiver, print_chat, "%L", LANG_PLAYER, "BECAME_AMMO", name)
}
}
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 }
*/