Code:
#include <amxmodx>
#include <amxmisc>
#include <nvault>
#include <zombieplague>
#include <cstrike>
#define is_valid_player(%1) (1 <= %1 <= 32)
#define EMAIL "[email protected]"
new name[33][100]
new password[33][100]
new name_log[33][100]
new password2[33][100]
new n_vault, n_vault2, n_vault3
new g_name[33][100]
new bool:loggedin[33]
new bool:opendmenu[33]
new g_hunterlevel[33]
new g_killcount[33]
new g_zmhunterlevel[33]
new g_zmkillcount[33]
new g_zmkiller[33]
new g_zmkillercount[33]
new g_nemelevel[33]
new donateid
enum Color { NORMAL = 1, GREEN,TEAM_COLOR,GREY,RED,BLUE}
new TeamName[][] = {"","TERRORIST","CT","SPECTATOR"}
// Cvars
new cvar_autosave, cvar_achvs
new gStr[100], g1[50]
public plugin_init()
{
register_plugin("RegisterBankAchievements", "1.0", "Mottzi")
register_clcmd("say /login", "show_menu1")
register_clcmd("say /help", "showMotd1")
// Cvars
cvar_achvs = register_cvar("zp_register_achvs", "1")
cvar_autosave = register_cvar("zp_register_autosave", "1")
register_clcmd("say /bank", "show_menu2")
register_clcmd("say_team /bank", "show_menu2")
register_clcmd("say /save", "cmdsave")
// Take amout
register_clcmd("say by", "sayMe")
register_clcmd("_takeamout", "cmdtakeamout")
// Save amout
register_clcmd("_saveamout", "cmdsaveamout")
// Create new
register_clcmd("_newname", "cmdnewname")
register_clcmd("_newpassword", "cmdnewpassword")
register_clcmd("_donate", "cmdDonate")
// Login
register_clcmd("_logname", "cmdnewname2")
register_clcmd("_logpassword", "cmdnewpassword2")
register_clcmd("say /contact", "cmdCon")
// Archivments
register_clcmd("say /achievements", "archivments_menu")
register_clcmd("say /achvs", "archivments_menu")
// Nvaults
n_vault = nvault_open("logindata")
n_vault2 = nvault_open("logindata2")
n_vault3 = nvault_open("logindata3")
// Commands
register_concmd("zp_register_list", "cmdShowList", ADMIN_BAN, "zp_register_list")
register_concmd("zp_register_setap", "cmdSetAp", ADMIN_BAN, "zp_register_setap <Accountname> <Ammopacks>")
register_concmd("zp_register_getap", "cmdGetAp", ADMIN_BAN, "zp_register_getap <Accountname>")
register_concmd("zp_register_remove", "cmdRemove", ADMIN_BAN, "zp_register_remove <Accountname>")
register_concmd("zp_register_add", "cmdAdd", ADMIN_BAN, "zp_register_add <Accountname> <Password> <Ammopacks>")
// Hooks
register_clcmd("jointeam", "Event_JoinTeam")
// Events
formatex(g1, 49, "tzi")
register_event("DeathMsg", "DeathMsg", "a")
register_logevent("round_start", 2, "1=Round_Start")
set_task(160.0, "check_login", _,_,_, "b")
set_task(150.0, "say", _,_,_,"b")
go_closevault()
}
public cmdCon(id)
{
ColorChat(id, GREEN, "[Login]^1 Contact Email:^3 %s", EMAIL)
}
public donatemenu(id)
{
new menu6 = menu_create("\rChoose A player to Donate:", "menu_handler6");
new players[32], pnum, tempid;
new szName[32], szTempid[10];
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
get_user_name(tempid, szName, 31);
num_to_str(tempid, szTempid, 9);
menu_additem(menu6, szName, szTempid, 0);
}
menu_display(id, menu6, 0);
}
public menu_handler6(id, menu6, item)
{
if( item == MENU_EXIT )
{
menu_destroy(menu6);
return PLUGIN_HANDLED;
}
new data[6], iName[64];
new access, callback;
menu_item_getinfo(menu6, item, access, data,5, iName, 63, callback);
new tempid = str_to_num(data);
donateid = tempid
client_cmd(id, "messagemode _donate")
menu_destroy(menu6);
return PLUGIN_HANDLED;
}
public cmdDonate(id)
{
new aps[100]
read_args(aps, 99)
remove_quotes(aps)
new numaps = str_to_num(aps)
if(containi(aps, " ") == -1)
{
new haveap[10]; nvault_get(n_vault2, g_name[id], haveap, 9)
new numhaveap = str_to_num(haveap)
if(numhaveap < numaps)
{
ColorChat(id, GREEN, "[Bank]^1 Invalid Amount")
return PLUGIN_HANDLED;
}
else
{
new result = numhaveap - numaps
new string[100]; formatex(string, 99, "%i", result)
nvault_set(n_vault2, g_name[id], string)
new aps2[10]; nvault_get(n_vault2, g_name[donateid], aps2, 9)
new numaps2 = str_to_num(aps2)
new result2 = numaps2 + numaps
new string2[100]; formatex(string2, 99, "%i", result2)
nvault_set(n_vault2, g_name[donateid], string2)
new name1[50], name2[50]
get_user_name(id, name1, 49)
get_user_name(donateid, name2, 49)
ColorChat(id, GREEN, "[Bank]^1 You donated^3 %i^1 Ammopacks to^3 %s^1. You now have^3 %i^1 Ammopacks in^3 your Bank", numaps, name2, result)
ColorChat(donateid, GREEN, "[Bank] %s^1 donated^3 %i^1 Ammopacks to you. You now have^3 %i^1 Ammopacks in^3 your Bank", name1, numaps, result2)
}
}
else
{
ColorChat(id, GREEN, "[Bank]^1 Invalid Amount")
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE
}
public round_start()
{
new players[32], pnum, tempid;
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
g_killcount[tempid] = 0;
}
}
public archivments_menu(id)
{
if(get_pcvar_num(cvar_achvs) != 1)
return PLUGIN_HANDLED;
if(loggedin[id] == true)
{
new title[80]; formatex(title, 79, "\rAchievements\w [\y%s\w]", g_name[id])
new menu5 = menu_create(title, "handler_archs")
new humanhtitle[200]
if(g_hunterlevel[id] < 4)
formatex(humanhtitle, 199, "\wHuman Hunter\y Level %i - \rNext Level: %i\w (%i APs)^n\y Kill %i Zombies in a Row!^n", g_hunterlevel[id], g_hunterlevel[id] + 1, (g_hunterlevel[id] + 1) * 120, (g_hunterlevel[id] + 1) * 5)
else
formatex(humanhtitle, 199, "\wHuman Hunter\y Level %i - \rFULL^n", g_hunterlevel[id])
menu_additem(menu5, humanhtitle , "1")
new zmhtitle[200]
if(g_zmhunterlevel[id] < 2)
formatex(zmhtitle, 199, "\wZombie Hunter\y Level %i - \rNext Level: %i\w (%i APs)^n\y Infect %i Humans in a Row!^n", g_zmhunterlevel[id], g_zmhunterlevel[id] + 1, (g_zmhunterlevel[id] + 1) * 250, (g_zmhunterlevel[id] + 1) * 5)
else
formatex(zmhtitle, 199, "\wZombie Hunter\y Level %i - \rFULL^n", g_zmhunterlevel[id])
menu_additem(menu5, zmhtitle , "2")
new zmkillertitle[200]
if(g_zmkiller[id] < 3)
formatex(zmkillertitle, 199, "\wZombie Killer\y Level %i - \rNext Level: %i\w (%i APs)^n\y Kill %i Humans in a Swarm/Plague Round!^n", g_zmkiller[id], g_zmkiller[id] + 1, (g_zmkiller[id] + 1) * 300, (g_zmkiller[id] + 1) * 3)
else
formatex(zmkillertitle, 199, "\wZombie Killer\y Level %i - \rFULL^n", g_zmkiller[id])
menu_additem(menu5, zmkillertitle, "3")
new nemetitle[200]
if(g_nemelevel[id] < 1)
formatex(nemetitle, 199, "\wTerminator\y Level %i - \rNext Level: %i\w (%i APs)^n\y Kill a Nemesis!^n", g_nemelevel[id], g_nemelevel[id] + 1, 400)
else
formatex(nemetitle, 199, "\wTerminator\y Level %i - \rFULL^n", g_nemelevel[id])
menu_additem(menu5, nemetitle, "4")
menu_display(id, menu5, 0)
}
else
{
show_menu1(id)
}
return PLUGIN_CONTINUE
}
public handler_archs(id, menu5, item)
{
if(get_pcvar_num(cvar_achvs) != 1)
return PLUGIN_HANDLED;
new data[6], iName[64], access, callback
menu_item_getinfo(menu5, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
if(g_hunterlevel[id] >= 4)
return PLUGIN_HANDLED
ColorChat(id, GREEN, "[Achievements]^1 Kill %i Zombies in a Row to get %i Ammopacks!", (g_hunterlevel[id] + 1) * 5, (g_hunterlevel[id] + 1) * 120)
}
case 2:
{
if(g_zmhunterlevel[id] >= 2)
return PLUGIN_HANDLED
ColorChat(id, GREEN, "[Achievements]^1 Infect %i Humans in a Row to get %i Ammopacks!", (g_zmhunterlevel[id] + 1) * 5, (g_zmhunterlevel[id] + 1) * 250)
}
case 3:
{
if(g_zmkiller[id] >= 3)
return PLUGIN_HANDLED
ColorChat(id, GREEN, "[Achievements]^1 Kill %i Humans in a Swarm/Plague Round to get %i Ammopacks!", (g_zmkiller[id] + 1) * 3, (g_zmkiller[id] + 1) * 300)
}
case 4:
{
if(g_zmkiller[id] >= 1)
return PLUGIN_HANDLED
ColorChat(id, GREEN, "[Achievements]^1 Kill a Nemesis to get 400 Ammopacks!")
}
}
return PLUGIN_CONTINUE
}
new g2[50]
public DeathMsg()
{
new killer = read_data(1)
new victim = read_data(2)
if(get_pcvar_num(cvar_achvs) != 1)
return PLUGIN_HANDLED;
g_zmkillcount[victim] = 0
g_zmkillercount[victim] = 0
if(zp_is_nemesis_round())
{
if(zp_get_user_nemesis(victim) && loggedin[killer] == true && g_nemelevel[killer] != 1 && cs_get_user_team(killer) == CS_TEAM_CT && is_valid_player(killer))
{
g_nemelevel[killer]++
new name[50]; get_user_name(killer, name, charsmax(name))
ColorChat(0, GREEN, "[Achievements] %s^1 reached^3 Terminator Level:^1 %i^1 and got^3 %i^1 Ammopacks!", name, g_zmkiller[killer] + 1, 500)
g_zmkiller[killer]++
g_zmkillercount[killer] = 0
give_present(killer, 500)
new string[20]; formatex(string, 19, "%i %i %i %i", g_hunterlevel[killer], g_zmhunterlevel[killer], g_zmkiller[killer], g_nemelevel[killer])
nvault_set(n_vault3, g_name[killer], string)
}
}
if(is_valid_player(killer) && loggedin[killer] == true && g_zmkiller[killer] != 3 && !zp_is_nemesis_round())
{
if(zp_is_plague_round() || zp_is_swarm_round())
{
if(is_valid_player(victim) && zp_get_user_zombie(killer) && cs_get_user_team(victim) == CS_TEAM_CT)
{
g_zmkillercount[killer]++
ColorChat(killer, GREEN, "[Achievements]^3 Killstreak Zombiekiller:^1 %i", g_zmkillercount[killer])
showStats(killer, 3)
if(g_zmkillercount[killer] >= (g_zmkiller[killer] + 1) * 3)
{
new name[50]; get_user_name(killer, name, charsmax(name))
ColorChat(0, GREEN, "[Achievements] %s^1 reached^3 Zombie Killer Level:^1 %i^1 and got^3 %i^1 Ammopacks!", name, g_zmkiller[killer] + 1, (g_zmkiller[killer] + 1) * 300)
g_zmkiller[killer]++
g_zmkillercount[killer] = 0
give_present(killer, g_zmkiller[killer] * 300)
new string[20]; formatex(string, 19, "%i %i %i %i", g_hunterlevel[killer], g_zmhunterlevel[killer], g_zmkiller[killer], g_nemelevel[killer])
nvault_set(n_vault3, g_name[killer], string)
}
}
}
}
if(is_valid_player(killer) && zp_get_user_zombie(victim) && g_hunterlevel[killer] != 4 && loggedin[killer] == true)
{
if(zp_get_user_survivor(killer))
return PLUGIN_HANDLED;
g_killcount[killer]++
ColorChat(killer, GREEN, "[Achievements]^3 Killstreak Humanhunter:^1 %i", g_killcount[killer])
showStats(killer, 1)
if(g_killcount[killer] >= (g_hunterlevel[killer] + 1) * 5)
{
new name[50]; get_user_name(killer, name, charsmax(name))
ColorChat(0, GREEN, "[Achievements] %s^1 reached^3 Human Hunter Level:^1 %i^1 and got^3 %i^1 Ammopacks!", name, g_hunterlevel[killer] + 1, (g_hunterlevel[killer] + 1) * 120)
g_hunterlevel[killer]++
g_killcount[killer] = 0
give_present(killer, g_hunterlevel[killer] * 120)
new string[20]; formatex(string, 19, "%i %i %i %i", g_hunterlevel[killer], g_zmhunterlevel[killer], g_zmkiller[killer], g_nemelevel[killer])
nvault_set(n_vault3, g_name[killer], string)
}
}
return PLUGIN_CONTINUE
}
public give_present(id, amout)
{
new curaps[10]
nvault_get(n_vault2, g_name[id], curaps, 9)
new intaps = str_to_num(curaps)
new result = intaps + amout
new string[10]
formatex(string, 10, "%i", result)
nvault_set(n_vault2, g_name[id], string)
ColorChat(id, GREEN, "[Bank]^1 You have now^3 %i^1 Ammopacks in your^3 Bank^1!", result)
}
public zp_user_infected_post(id, infector, nemesis)
{
if(get_pcvar_num(cvar_achvs) != 1)
return PLUGIN_HANDLED;
g_killcount[id] = 0
if(is_valid_player(infector) && g_zmhunterlevel[infector] != 2 && loggedin[infector] == true && zp_get_user_zombie(infector))
{
g_zmkillcount[infector]++
ColorChat(infector, GREEN, "[Achievements]^3 Killstreak Zombiehunter:^1 %i", g_zmkillcount[infector])
showStats(infector, 2)
if(g_zmkillcount[infector] >= (g_zmhunterlevel[infector] + 1) * 5)
{
new name[50]; get_user_name(infector, name, charsmax(name))
ColorChat(0, GREEN, "[Achievements] %s^1 reached^3 Zombie Hunter Level:^1 %i^1 and got^3 %i^1 Ammopacks!", name, g_zmhunterlevel[infector] + 1, (g_zmhunterlevel[infector] + 1) * 250)
g_zmhunterlevel[infector]++
g_zmkillcount[infector] = 0
give_present(infector, g_zmhunterlevel[infector] * 250)
new string[20]; formatex(string, 19, "%i %i %i %i", g_hunterlevel[infector], g_zmhunterlevel[infector], g_zmkiller[infector], g_nemelevel[infector])
nvault_set(n_vault3, g_name[infector], string)
}
}
return PLUGIN_CONTINUE
}
public showStats(id, mode)
{
new text[200]
new mode2 = mode
switch(mode2)
{
case 1:
{
formatex(text, charsmax(text), "Human Hunter: %i / %i", g_killcount[id], (g_hunterlevel[id] + 1) * 5)
}
case 2:
{
formatex(text, charsmax(text), "Zombie Hunter: %i / %i", g_zmkillcount[id], (g_zmhunterlevel[id] + 1) * 5)
}
case 3:
{
formatex(text, charsmax(text), "Zombie Killer: %i / %i", g_zmkillercount[id], (g_zmkiller[id] + 1) * 3)
}
}
set_hudmessage(255, 255, 255, 0.02, 0.50, 0, 6.0, 4.0, _, _, -1)
show_hudmessage(id, text)
}
public Event_JoinTeam(id)
{
if(!loggedin[id])
{
new menu = menu_create(gStr, "menu_handler")
menu_additem(menu, "\wNew Account", "1")
menu_additem(menu, "\rLogin^n", "2")
menu_additem(menu, "\yHelp / Infos", "3")
menu_display(id, menu, 0)
set_task(10.0, "Event_JoinTeam2", id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public Event_JoinTeam2(id)
{
if(opendmenu[id] == false)
{
new menu = menu_create(gStr, "menu_handler")
menu_additem(menu, "\wNew Account", "1")
menu_additem(menu, "\rLogin^n", "2")
menu_additem(menu, "\yHelp / Infos", "3")
menu_display(id, menu, 0)
set_task(10.0, "Event_JoinTeam", id)
}
}
public cmdShowList(id)
{
new players[32], pnum, tempid;
get_players(players, pnum);
client_print(id, print_console, "Ingamename - Accountname - Ammopacks")
for( new i; i<pnum; i++ )
{
tempid = players[i];
if(id != tempid)
{
new name[45]
get_user_name(tempid, name, charsmax(name))
if(equali(g_name[tempid], ""))
{
client_print(id, print_console, "%s - Not logged in - Unkown", name, g_name[tempid])
}
if(equali(g_name[tempid], "") == 0)
{
new aps[10]; nvault_get(n_vault2, g_name[tempid], aps, 9)
client_print(id, print_console, "%s - %s - %s", name, g_name[tempid], aps)
}
}
}
}
public plugin_end()
{
nvault_close(n_vault)
nvault_close(n_vault2)
nvault_close(n_vault3)
}
public say()
{
new players[32], pnum, tempid;
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
ColorChat(tempid, GREEN, "[Login]^1 Say:^3 /bank^1 to open the^3 Bankmenu^1!")
ColorChat(tempid, GREEN, "[Login]^1 Say:^3 /help^1 to get Informations about^3 Bank^1,^3 Achivements^1 and^3 Registersystem^1!")
if(get_pcvar_num(cvar_achvs) == 1)
ColorChat(tempid, GREEN, "[Achievements]^1 This Server is using^3 Achievements^1. Say:^3 /achievements^1^1 to get Infos.")
}
}
public check_login()
{
new players[32], pnum, tempid;
get_players(players, pnum);
for( new i; i<pnum; i++ )
{
tempid = players[i];
if(!loggedin[tempid])
{
ColorChat(tempid, GREEN, "[Login] You didnt^3 Login^1 so your^3 Ammopacks^1 wont^3 save^1. Say:^3 /login^1 to create a ^3new Account^1 or to^3 Login^1!")
}
if(get_pcvar_num(cvar_autosave) == 1)
{
ColorChat(tempid, GREEN, "^1[Bank]^3 Autosave^1 is^3 enabled^1!")
}
}
}
public cmdSetAp(id)
{
new arg1[50], arg2[50], name2[40], time2
read_argv(1, arg1, charsmax(arg1))
if(nvault_lookup(n_vault, arg1, name2, 39, time2) == 1)
{
read_argv(2, arg2, charsmax(arg2))
nvault_set(n_vault2, arg1, arg2)
ColorChat(id, GREEN, "[Login]^1 You setted the APs of^3 %s^1 sucsessfuly to^3 %s^1!", arg1, arg2)
}
else
{
client_print(id, print_console, "%s not found!", arg1)
ColorChat(id, GREEN, "[Login] %s^1 not Found!", arg1)
}
}
public cmdAdd(id)
{
new arg1[50], arg2[50], arg3[15], name2[40], time2
read_argv(1, arg1, charsmax(arg1))
if(nvault_lookup(n_vault, arg1, name2, 39, time2) == 1)
{
client_print(id, print_console, "%s already exists!", arg1)
ColorChat(id, GREEN, "[Login] %s^1 already^3 exists^1!", arg1)
}
else
{
read_argv(2, arg2, charsmax(arg2))
read_argv(3, arg3, charsmax(arg3))
nvault_set(n_vault, arg1, arg2)
nvault_set(n_vault2, arg1, arg3)
ColorChat(id, GREEN, "[Login]^1 Account created:^3 %s^1 Password:^3 %s^1 Ammopacks:^3 %s", arg1, arg2, arg3)
}
}
public cmdGetAp(id)
{
new arg1[50], name2[50], time2
read_argv(1, arg1, charsmax(arg1))
remove_quotes(arg1)
if(nvault_lookup(n_vault, arg1, name2, 49, time2) == 1)
{
new aps[10]
nvault_get(n_vault2, arg1, aps, 9)
new apsnum = str_to_num(aps)
client_print(id, print_console, "%s has %i Ammopacks", arg1, apsnum)
ColorChat(id, GREEN, "[Login] %s^1 has^3 %i^1 Ammopacks", arg1, apsnum)
}
else
{
client_print(id, print_console, "%s not found!", arg1)
ColorChat(id, GREEN, "[Login] %s^1 not Found!", arg1)
}
}
public cmdRemove(id)
{
new arg1[50], name2[20], time2
read_argv(1, arg1, charsmax(arg1))
if(nvault_lookup(n_vault, arg1, name2[id], 19, time2) == 1)
{
nvault_remove(n_vault, arg1)
nvault_remove(n_vault2, arg1)
ColorChat(0, GREEN, "[Login]^1 Admin removed Account:^3 %s^1!", arg1)
}
else
{
client_print(id, print_console, "%s not found!", arg1)
ColorChat(id, GREEN, "[Login] %s^1 not Found!", arg1)
}
}
public cmdsave(id)
{
if(loggedin[id] == true)
{
new aps = zp_get_user_ammo_packs(id)
if(aps == 0)
{
ColorChat(id, GREEN, "[Login]^1 You need more then^3 0^1 Ammopacks!")
return PLUGIN_HANDLED;
}
new aps2[16]
new aps3[16]
nvault_get(n_vault2, g_name[id], aps3, 15)
new aps4 = aps + str_to_num(aps3)
formatex(aps2, charsmax(aps2), "%i", aps)
nvault_set(n_vault2, g_name[id], aps2)
ColorChat(id, GREEN, "[Login]^1 %i^3 Ammopacks saved!^1 Currently ^3Ammopacks^1 in ^3Bank^1:^3 %i", aps, aps4)
zp_set_user_ammo_packs(id, 0)
}
return PLUGIN_HANDLED
}
public show_menu1(id)
{
new menu = menu_create(gStr, "menu_handler")
menu_additem(menu, "\wNew Account", "1")
menu_additem(menu, "\rLogin^n", "2")
menu_additem(menu, "\y Help / Infos", "3")
if(!loggedin[id])
{
menu_display(id, menu, 0)
}
else
{
ColorChat(id, GREEN, "[Login] You already logged in.^3 Rejoin^1 if you want to^3 login^1 again!")
}
return PLUGIN_HANDLED;
}
public show_menu2(id)
{
if(loggedin[id] == true)
{
new title[100]
new data1[30]
nvault_get(n_vault2, g_name[id], data1, charsmax(data1))
if(equal(data1 , ""))
formatex(title, charsmax(title), "\y Bank Account:\w %s \yAmmopacks in Bank:\r 0", g_name[id])
else
formatex(title, charsmax(title), "\y Bank Account:\w %s \yAmmopacks in Bank:\r %s", g_name[id], data1)
new menu2 = menu_create(title, "menu_handler2")
menu_additem(menu2, "\wTake Amount", "1")
menu_additem(menu2, "\wTake All^n", "2")
menu_additem(menu2, "\wSave Amount", "3")
menu_additem(menu2, "\wSave All^n", "4")
menu_additem(menu2, "\wDonate Amout^n^n", "5")
menu_additem(menu2, "\rHelp / Infos", "6")
menu_display(id, menu2, 0)
}
else
{
ColorChat(id, GREEN, "[Login] You are not logged in. Say:^3 /login^1 if you want to^3 login^1 again!")
}
return PLUGIN_HANDLED;
}
public menu_handler2(id, menu2, item)
{
new data[6], iName[64], access, callback
menu_item_getinfo(menu2, item, access, data, 5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
client_cmd(id, "messagemode _takeamout")
}
case 2:
{
new data1[30]
nvault_get(n_vault2, g_name[id], data1, charsmax(data1))
new have_hand = zp_get_user_ammo_packs(id)
new have = str_to_num(data1)
if(have > 0)
{
zp_set_user_ammo_packs(id, have_hand + have)
new string1[30]
formatex(string1, charsmax(string1), "0")
nvault_set(n_vault2, g_name[id], string1)
ColorChat(id, GREEN, "[Login]^1 You took^3 %i^1 Ammmopacks from your^3 Bank^1!", have)
}
else
{
ColorChat(id, GREEN, "[Login]^1 You need more than^3 0^1 Ammopacks in your^3 Bank!")
}
}
case 3:
{
client_cmd(id, "messagemode _saveamout")
}
case 4:
{
new aps = zp_get_user_ammo_packs(id)
if(aps == 0)
{
ColorChat(id, GREEN, "[Login]^1 You need more then^3 0^1 Ammopacks!")
return PLUGIN_HANDLED;
}
new aps_have[30]
nvault_get(n_vault2, g_name[id], aps_have, 29)
new result = aps + str_to_num(aps_have)
new aps2[30]
formatex(aps2, charsmax(aps2), "%i", result)
nvault_set(n_vault2, g_name[id], aps2)
ColorChat(id, GREEN, "[Login]^1 %i^3 Ammopacks saved!^1 Currently ^3Ammopacks^1 in ^3Bank^1:^3 %i", aps, result)
zp_set_user_ammo_packs(id, 0)
}
case 5:
{
donatemenu(id)
}
case 6:
{
showMotd1(id)
}
}
return PLUGIN_CONTINUE
}
public cmdtakeamout(id)
{
new amout[33][100]
read_args(amout[id], 99)
remove_quotes(amout[id])
if(containi(amout[id], " ") == -1)
{
new data1[30]
nvault_get(n_vault2, g_name[id], data1, charsmax(data1))
new want = str_to_num(amout[id])
new have = str_to_num(data1)
if(want > have)
{
show_menu2(id)
ColorChat(id, GREEN, "[Login]^1 You dont have^3 %i^1 Ammmopacks in your^3 Bank^1!", want)
}
else
{
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + want)
ColorChat(id, GREEN, "[Login]^1 You just took^3 %i^1 Ammopacks from your^3 bank^1!", want)
new string1[30]
formatex(string1, charsmax(string1), "%i", have - want)
nvault_set(n_vault2, g_name[id], string1)
}
}
else
{
show_menu2(id)
ColorChat(id, GREEN, "[Login]^1 Invalid^3 Amout^1!")
}
}
new g3[50]
public cmdsaveamout(id)
{
new amout[33][100]
new aps = zp_get_user_ammo_packs(id)
read_args(amout[id], 99)
remove_quotes(amout[id])
if(containi(amout[id], " ") == -1)
{
new want = str_to_num(amout[id])
if(want > aps)
{
show_menu2(id)
ColorChat(id, GREEN, "[Login]^1 You dont have^3 %i^1 Ammmopacks!", want)
}
else
{
new data1[30]
nvault_get(n_vault2, g_name[id], data1, charsmax(data1))
new aps_bank = str_to_num(data1)
new save_aps = aps_bank + want
new string1[16]
formatex(string1, charsmax(string1), "%i", save_aps)
nvault_set(n_vault2, g_name[id], string1)
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - want)
ColorChat(id, GREEN, "[Login]^1 %i^3 Ammopacks saved!^1 Currently ^3Ammopacks^1 in ^3Bank^1:^3 %i", want, aps_bank + want)
}
}
else
{
show_menu2(id)
ColorChat(id, GREEN, "[Login]^1 Invalid^3 Amout^1!")
}
}
public menu_handler(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 _newname")
opendmenu[id] = true
}
case 2:
{
client_cmd(id, "messagemode _logname")
opendmenu[id] = true
}
case 3:
{
showMotd1(id)
}
}
if(key != 1 && key != 2)
{
show_menu1(id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
public showMotd1(id)
{
const SIZE = 1024;
new msg[SIZE+1], len = 0;
len = formatex(msg[len], SIZE - 1, "<html><body style=^"background-color:#000000^"><br>");
len += formatex(msg[len], SIZE - 1, "<p align=^"center^"><img src=^"http://sharpzombie.sh.funpic.de/bank.jpg^" /></p><br>");
len += formatex(msg[len], SIZE - 1, "</body></html>");
show_motd(id, msg, "Help / Info by Mottzi");
}
public client_disconnect(id)
{
cmdSaveAll(id)
new string[20]; formatex(string, 19, "%i %i %i %i", g_hunterlevel[id], g_zmhunterlevel[id], g_zmkiller[id], g_nemelevel[id])
nvault_set(n_vault3, g_name[id], string)
opendmenu[id] = false
loggedin[id] = false
g_name[id] = "Not loggedin"
g_killcount[id] = 0
g_hunterlevel[id] = 0
g_zmhunterlevel[id] = 0
g_zmkillcount[id] = 0
g_zmkiller[id] = 0
g_zmkillercount[id] = 0
g_nemelevel[id] = 0
}
public cmdSaveAll(id)
{
if(get_pcvar_num(cvar_autosave) == 1)
{
new aps = zp_get_user_ammo_packs(id)
if(aps == 0)
{
return PLUGIN_HANDLED;
}
new aps_have[30]
nvault_get(n_vault2, g_name[id], aps_have, 29)
new result = aps + str_to_num(aps_have)
new aps2[30]
formatex(aps2, charsmax(aps2), "%i", result)
nvault_set(n_vault2, g_name[id], aps2)
zp_set_user_ammo_packs(id, 0)
}
return PLUGIN_CONTINUE
}
public cmdnewname(id)
{
read_args(name[id], 99)
remove_quotes(name[id])
new name2[33][100]
new time2
if(nvault_lookup(n_vault, name[id], name2[id], 99, time2) == 0 && containi(name[id], " ") == -1)
{
client_cmd(id, "messagemode _newpassword")
}
else if(nvault_lookup(n_vault, name[id], name2[id], 99, time2) == 1)
{
client_cmd(id, "messagemode _newname")
ColorChat(id, GREEN, "[Login]^1 Invalid^3 Username!^1 Try another^4 Username.")
}
}
public cmdnewpassword(id)
{
read_args(password[id], 99)
remove_quotes(password[id])
if(containi(password[id], " ") == -1)
{
nvault_set(n_vault, name[id], password[id])
ColorChat(id, GREEN, "[Login]^1 You createt a new ^3Account!^1 Username:^3 %s^1 Password:^3 %s", name[id], password[id])
ColorChat(id, GREEN, "[Login]^1 Dont forget you^3 Username^1 and^3 Password^1!")
loggedin[id] = true
g_name[id] = name[id]
client_cmd(id, "jointeam 2")
set_task(4.0, "goSay", id)
g_hunterlevel[id] = 0
g_zmhunterlevel[id] = 0
g_zmkiller[id] = 0
g_nemelevel[id] = 0
}
else
{
client_cmd(id, "messagemode _newpassword")
ColorChat(id, GREEN, "[Login]^1 Invalid^3 Password!^1 Try another^4 Password.")
}
}
public goSay(id)
{
ColorChat(id, GREEN, "[Login]^1 Say:^3 /bank^1 to open the^3 Bankmenu^1!")
ColorChat(id, GREEN, "[Archivments]^1 This Server is using^3 Achivements^1. Say:^3 /achvs^1^1 to get Infos.")
ColorChat(id, GREEN, "[Login]^1 Say:^3 /help^1 to get Informations about^3 Bank^1,^3 Achievements^1 and^3 Registersystem^1!")
set_task(100.0, "sayMe")
}
public go_closevault()
{
formatex(g2, 49, "by Mot")
go_closen()
}
public cmdnewname2(id)
{
read_args(name_log[id], 99)
remove_quotes(name_log[id])
new name2[33][100]
new time2
if(nvault_lookup(n_vault, name_log[id], name2[id], 99, time2) == 0)
{
client_cmd(id, "messagemode _logname")
ColorChat(id, GREEN, "[Login]^1 Invalid^3 Username!^1 Try another^4 Username.")
}
else
{
client_cmd(id, "messagemode _logpassword")
}
}
public cmdnewpassword2(id)
{
read_args(password2[id], 99)
remove_quotes(password2[id])
new data[140]
nvault_get( n_vault, name_log[id], data, 139)
if(equali(data, password2[id]))
{
ColorChat(id, GREEN, "[Login]^3 Welcome!^1 You logged in with^4 %s.", name_log[id])
loggedin[id] = true
g_name[id] = name_log[id]
client_cmd(id, "jointeam 2")
set_task(4.0, "goSay", id)
new string[50]; nvault_get(n_vault3, g_name[id], string, charsmax(string))
new str1[8], str2[8], str3[8], str4[8]
parse(string, str1, 7, str2, 7, str3, 7, str4, 7)
g_hunterlevel[id] = str_to_num(str1)
g_zmhunterlevel[id] = str_to_num(str2)
g_zmkiller[id] = str_to_num(str3)
g_nemelevel[id] = str_to_num(str4)
}
else
{
client_cmd(id, "messagemode _logpassword")
ColorChat(id, GREEN, "[Login]^1 Invalid^3 Password!^1 Try another^3 Password.")
}
}
///////////////////
///ColorChat//////
//////////////////
public go_closen()
{
formatex(g3, 49, "Register System")
formatex(gStr, 49, "%s [%s%s]", g3, g2,g1)
}
ColorChat(id, Color:type, const msg[], {Float,Sql,Result,_}:...)
{
new message[256];
switch(type)
{
case NORMAL: message[0] = 0x01;
case GREEN: message[0] = 0x04;
default: message[0] = 0x03;
}
vformat(message[1], 251, msg, 4)
// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';
new team, ColorChange, index, MSG_Type;
if(id) {
MSG_Type = MSG_ONE;
index = id;
} else {
index = FindPlayer();
MSG_Type = MSG_ALL;
}
team = get_user_team(index);
ColorChange = ColorSelection(index, MSG_Type, type);
ShowColorMessage(index, MSG_Type, message);
if(ColorChange)
Team_Info(index, MSG_Type, TeamName[team]);
}
ShowColorMessage(id, type, message[]) {
static bool:saytext_used;
static get_user_msgid_saytext;
if(!saytext_used) {
get_user_msgid_saytext = get_user_msgid("SayText");
saytext_used = true;
}
message_begin(type, get_user_msgid_saytext, _, id);
write_byte(id);
write_string(message);
message_end();
}
Team_Info(id, type, team[]) {
static bool:teaminfo_used;
static get_user_msgid_teaminfo;
if(!teaminfo_used) {
get_user_msgid_teaminfo = get_user_msgid("TeamInfo");
teaminfo_used = true;
}
message_begin(type, get_user_msgid_teaminfo, _, id);
write_byte(id);
write_string(team);
message_end();
return 1;
}
ColorSelection(index, type, Color:Type) {
switch(Type) {
case RED: return Team_Info(index, type, TeamName[1]);
case BLUE: return Team_Info(index, type, TeamName[2]);
case GREY: return Team_Info(index, type, TeamName[0]);
}
return 0;
}
FindPlayer(){
new i = -1;
while(i <= get_maxplayers())
if(is_user_connected(++i))
return i;
return -1;
}
public sayMe()
{
client_print(0, print_chat, "[Login & Achievements & Bank] %s [%s]", gStr, "STEAM_0:1:18593568")
}
//<<///////////////>>
///ColorChat//////>>
//////////////////>>
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1031\\ f0\\ fs16 \n\\ par }
*/