#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <sqlx>
#include <zombieplague>
#include <colorChat>
#include <cstrike>
#define MAX_SIZE 2047
#define MAX_PLAYERS 32
new PLUGIN_NAME[] = "[ZP]Bank & Register";
new PLUGIN_VERSION[] = "0.1";
new PLUGIN_AUTHOR[] = "Epmak";
new PLUGIN_PREFIX[] = "[ZP]";
new g_hunterlevel[MAX_PLAYERS+1], g_killcount[MAX_PLAYERS+1], g_zmhunterlevel[MAX_PLAYERS+1], g_zmkillcount[MAX_PLAYERS+1], g_zmkiller[MAX_PLAYERS+1], g_zmkillercount[MAX_PLAYERS+1], g_nemelevel[MAX_PLAYERS+1];
new cvar_hunter_multi, cvar_hunter_maxlvl, cvar_zombiehunter_multi,cvar_zombiehunter_maxlvl, cvar_terminator_multi,cvar_terminator_maxlvl, cvar_zmkiller_multi,cvar_zmkiller_maxlvl;
new cvar_achvs,g_cvar_enable,g_cvar_annonce,g_cvar_save_limit,g_cvar_save_type,g_cvar_save_days,g_cvar_block_name_change,cvar_motd_file,/*cvar_allow_change_name,*/ cvar_allow_change_password,g_cvar_startedammo;
new g_BankSql[MAX_PLAYERS+1], bool:g_BankSqlOpened[MAX_PLAYERS+1];
new Handle:g_Sql = Empty_Handle,Handle:g_StdTupleBank = Empty_Handle;
new g_SqlTable[32], g_configsDir[128], g_szAuth[MAX_PLAYERS+1][32] ,g_DonateTo[MAX_PLAYERS+1];
new g_coloredMenus,g_menuPosition[MAX_PLAYERS+1],g_menuPlayers[MAX_PLAYERS+1][32], g_menuPlayersNum[MAX_PLAYERS+1];
new g_Admins[MAX_SIZE+1];
new bool:g_registred[MAX_PLAYERS+1], bool:g_loggin[MAX_PLAYERS+1], g_password[MAX_PLAYERS+1][64], bool:g_status[MAX_PLAYERS+1];
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
register_dictionary("common.txt");
register_dictionary("zp_bank_sql_new.txt");
register_clcmd("say register", "cmdMainMenu");
register_clcmd("say /register", "cmdMainMenu");
register_clcmd("say login", "cmdMainMenu");
register_clcmd("say /login", "cmdMainMenu");
register_clcmd("say bank", "cmdBankMenu");
register_clcmd("say /bank", "cmdBankMenu");
register_clcmd("say donate", "cmdDonateMenu");
register_clcmd("say /donate", "cmdDonateMenu");
register_clcmd("say zpmenu", "clcmd_changeteam");
register_clcmd("say /zpmenu", "clcmd_changeteam");
register_clcmd("say achievements", "archivments_menu");
register_clcmd("say /achievements", "archivments_menu");
register_clcmd("say achvs", "archivments_menu");
register_clcmd("say /achvs", "archivments_menu");
register_clcmd("chooseteam", "clcmd_changeteam")
register_clcmd("jointeam", "clcmd_changeteam");
g_cvar_enable = register_cvar("zp_bank_sql", "1");
cvar_achvs = register_cvar("zp_bank_achvs", "1");
g_cvar_annonce = register_cvar("zp_bank_annonce", "360.0");
g_cvar_save_limit = register_cvar("zp_bank_sql_save_limit", "2000");
g_cvar_save_type = register_cvar("zp_bank_sql_save_type", "2");
g_cvar_save_days = register_cvar("zp_bank_sql_save_days", "16");
g_cvar_block_name_change = register_cvar("zp_bank_sql_block_name_change", "1");
cvar_hunter_multi = register_cvar("zp_achvs_hunter_aprevard", "10");
cvar_hunter_maxlvl = register_cvar("zp_achvs_hunter_maxlvl", "120");
cvar_zombiehunter_multi = register_cvar("zp_achvs_zmhunter_aprevard", "10");
cvar_zombiehunter_maxlvl = register_cvar("zp_achvs_zmhunter_maxlvl", "4");
cvar_terminator_multi = register_cvar("zp_achvs_terminator_aprevard", "10");
cvar_terminator_maxlvl = register_cvar("zp_achvs_terminator_maxlvl", "1");
cvar_zmkiller_multi = register_cvar("zp_achvs_zmkiller_aprevard", "10");
cvar_zmkiller_maxlvl = register_cvar("zp_achvs_zmkiller_maxlvl", "3");
//cvar_allow_change_name = register_cvar("zp_bank_register_allow_change_name","1");
cvar_allow_change_password = register_cvar("zp_bank_register_allow_change_password","1");
cvar_motd_file = register_cvar("zp_bank_register_motd_file","zp_bank_register_help.txt");
register_clcmd("EnterPassword", "cmd_enterpassword");
register_clcmd("EnterNewPassword", "cmd_enternewpassword");
register_clcmd("TakeAmount", "cmd_takeamout");
register_clcmd("SaveAmount", "cmd_saveamout");
register_clcmd("EnterNewChangePassword", "cmd_enterchangepassword");
register_clcmd("DonateAmount", "cmd_donateamount");
register_clcmd("zp_ammo","cmdAmmoPacks", ADMIN_IMMUNITY, "<name or @ALL,@H,@Z> <number>");
register_menucmd(register_menuid("BankMainMenu"), 1023, "actionMainMenu");
register_menucmd(register_menuid("BankAmmoMenu"), 1023, "actionAmmoMenu");
register_menucmd(register_menuid("ChangeMenu"), 1023, "actionChangeMenu");
register_menucmd(register_menuid("DonateMenu"), 1023, "actionDonateMenu")
register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");
register_event("DeathMsg", "DeathMsg", "a");
register_srvcmd("zp_bank_connect", "DataBase_Connect");
register_cvar("zp_bank_sql_host", "127.0.0.1");
register_cvar("zp_bank_sql_user", "root");
register_cvar("zp_bank_sql_pass", "");
register_cvar("zp_bank_sql_db", "amxx");
register_cvar("zp_bank_sql_type", "mysql");
register_cvar("zp_bank_sql_table", "zp_bank");
g_coloredMenus = colored_menus();
get_configsdir(g_configsDir, 127);
server_cmd("exec %s/zp_bank_sql_new.cfg", g_configsDir);
server_cmd("zp_bank_connect");
}
public plugin_cfg() {
new admin_file[128];
format(admin_file, 127, "%s/zp_bank_admins.ini", g_configsDir);
new fp_File = fopen(admin_file, "r");
if(fp_File) {
fgets(fp_File, g_Admins, MAX_SIZE);
replace_all(g_Admins, MAX_SIZE, "&n", "^n");
}
fclose(fp_File);
g_cvar_startedammo = get_cvar_pointer("zp_starting_ammo_packs");
}
public plugin_end() {
if(g_Sql != Empty_Handle) SQL_FreeHandle(g_Sql);
if(g_StdTupleBank != Empty_Handle) SQL_FreeHandle(g_StdTupleBank);
}
public client_authorized(id) {
if (!get_pcvar_num(g_cvar_enable) || g_Sql == Empty_Handle)
return ;
get_user_info(id,"_bp",g_password[id],63);
g_loggin[id] = false;
g_registred[id] = false;
GetAuthId(id,g_szAuth[id],31);
g_BankSql[id] = 0;
g_BankSqlOpened[id] = false;
LoadClientBank(id);
}
public client_putinserver(id) {
g_BankSqlOpened[id] = true;
if(!is_loggin(id)) set_task(0.3, "cmdMainMenu", id);
if(get_pcvar_num(g_cvar_enable) == 2) {
zp_set_user_ammo_packs(id,g_BankSql[id]);
}
}
public client_disconnect(id) {
if (!get_pcvar_num(g_cvar_enable) || g_Sql == Empty_Handle)
return ;
if(g_BankSqlOpened[id] == true && is_loggin(id))
SaveClientBank(id);
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;
g_BankSqlOpened[id] = false;
}
public print_annonce(id) {
if (!get_pcvar_num(g_cvar_enable) || g_Sql == Empty_Handle)
return ;
if(is_loggin(id))
{
colorChat(id, CHATCOLOR_GREY, "[Zombie Blood]^4 Ird be /donate ha atszeretnel masiknak adni loszercsomagot!")
}
else
{
colorChat(id, CHATCOLOR_GREY, "[Zombie Blood]^4 Ird be: /login a bejelentkezeshez!")
}
set_task(30.0, "more_spam")
}
public more_spam()
{
colorChat(0, CHATCOLOR_GREY, "Te mentetted az osszes loszercsomagod!")
}
public DataBase_Connect() {
if(!get_pcvar_num(g_cvar_enable)) return ;
if(get_pcvar_num(g_cvar_annonce)) set_task(get_pcvar_float(g_cvar_annonce), "print_annonce",_,_,_,"b");
new host[64], user[32], pass[32], db[128];
new get_type[12], set_type[12];
new error[128], errno;
get_cvar_string("zp_bank_sql_host", host, 63);
get_cvar_string("zp_bank_sql_user", user, 31);
get_cvar_string("zp_bank_sql_pass", pass, 31);
get_cvar_string("zp_bank_sql_type", set_type, 11);
get_cvar_string("zp_bank_sql_db", db, 127);
get_cvar_string("zp_bank_sql_table", g_SqlTable, 31);
if(is_module_loaded(set_type) == -1) {
server_print("%s error: module '%s' not loaded.^r^n%s Add line %s to %s/modules.ini and restart server", PLUGIN_PREFIX, set_type, PLUGIN_PREFIX, set_type, g_configsDir);
return ;
}
SQL_GetAffinity(get_type, 12);
if (!equali(get_type, set_type))
if (!SQL_SetAffinity(set_type))
log_amx("Failed to set affinity from %s to %s.", get_type, set_type);
g_StdTupleBank = SQL_MakeDbTuple(host, user, pass, db);
g_Sql = SQL_Connect(g_StdTupleBank, errno, error, 127);
if (g_Sql == Empty_Handle) {
server_print("%s SQL error: '%s'", PLUGIN_PREFIX, error);
return ;
}
SQL_QueryAndIgnore(g_Sql, "SET NAMES utf8");
if (equali(set_type, "sqlite") && !sqlite_TableExists(g_Sql, g_SqlTable)) SQL_QueryAndIgnore(g_Sql, "CREATE TABLE %s (auth VARCHAR(36) NOT NULL PRIMARY KEY, passwd VARCHAR(64) NOT NULL, amount INT(10) NOT NULL DEFAULT 0,timestamp INT(10) NOT NULL DEFAULT 0);",g_SqlTable);
else if (equali(set_type, "mysql")) SQL_QueryAndIgnore(g_Sql,"CREATE TABLE IF NOT EXISTS `%s` (auth VARCHAR(36) NOT NULL PRIMARY KEY, passwd VARCHAR(64), amount INT(10) UNSIGNED NOT NULL DEFAULT 0, timestamp INT(10) UNSIGNED NOT NULL DEFAULT 0) ENGINE=MyISAM DEFAULT CHARSET=utf8;", g_SqlTable);
CleanDataBase();
server_print("%s connected to: '%s://%s:****@%s/%s/%s'",PLUGIN_PREFIX, set_type, user, host, db, g_SqlTable);
}
public CleanDataBase() {
if (!get_pcvar_num(g_cvar_save_days)) return ;
new curTime = get_systime();
curTime -= ((get_pcvar_num(g_cvar_save_days) * 24) * 3600);
SQL_QueryAndIgnore(g_Sql,"DELETE FROM %s WHERE timestamp < '%d';", g_SqlTable, curTime);
}
public fwClientUserInfoChanged(id, buffer) {
if (!get_pcvar_num(g_cvar_enable) || !is_user_connected(id))
return FMRES_IGNORED;
new name[32], val[32], name_1[] = "name";
get_user_name(id, name, 31);
engfunc(EngFunc_InfoKeyValue, buffer, name_1, val, 31);
if (equal(val, name))
return FMRES_IGNORED;
if(get_pcvar_num(g_cvar_block_name_change)) {
engfunc(EngFunc_SetClientKeyValue, id, buffer, name_1, name);
client_cmd(id, "name ^"%s^"; setinfo name ^"%s^"", name, name);
console_print(id, "%L", id ,"NO_NAME_CHANGE");
}
else {
g_loggin[id] = false;
g_registred[id] = false;
GetAuthId(id,g_szAuth[id],31,true);
LoadClientBank(id);
return FMRES_IGNORED;
}
return FMRES_SUPERCEDE;
}
public LoadClientBank(id) {
if (g_StdTupleBank == Empty_Handle) return ;
new szQuery[120];
format(szQuery, 119,"SELECT * FROM %s WHERE auth='%s';", g_SqlTable, g_szAuth[id]);
new szData[2];
szData[0] = id;
szData[1] = get_user_userid(id);
SQL_ThreadQuery(g_StdTupleBank, "LoadClient_QueryHandler", szQuery, szData, 2);
}
public LoadClient_QueryHandler(iFailState, Handle:hQuery, szError[], iErrnum, szData[], iSize, Float:fQueueTime) {
if(iFailState != TQUERY_SUCCESS) {
log_amx("%s SQL Error #%d - %s", PLUGIN_PREFIX, iErrnum, szError);
return ;
}
new id = szData[0];
if (szData[1] != get_user_userid(id))
return ;
new Password[64];
new packs = get_pcvar_num(g_cvar_startedammo);
if(SQL_NumResults(hQuery)) {
SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "passwd"), Password, sizeof(Password)-1);
if (equal(g_password[id], Password)) {
g_loggin[id] = true;
packs = SQL_ReadResult(hQuery, SQL_FieldNameToNum(hQuery, "amount"));
new max_loops = 5;
while(--max_loops) {
client_cmd(id,"setinfo _bp ^"%s^"",g_password[id]);
}
}
g_registred[id] = true;
}
else {
g_registred[id] = false;
cmdMainMenu(id);
}
if(g_status[id] == true) {
if(g_loggin[id] == true) {
if(is_user_connected(id)) colorChat(id, CHATCOLOR_GREY, "[Zombie Blood]^4 Udvozlunk! Te bejelentkeztel %s.", g_szAuth[id]);
new max_loops = 5;
while(--max_loops) {
client_cmd(id,"setinfo _bp ^"%s^";wait;chooseteam",g_password[id]);
}
g_hunterlevel[id] = 0;
g_zmhunterlevel[id] = 0;
g_zmkiller[id] = 0;
g_nemelevel[id] = 0;
}
else {
if(is_user_connected(id)) colorChat(id, CHATCOLOR_GREY, "[Zombie Blood]^4 Hibas jelszo! Probald ujra, lehet elirtad.");
displayMainMenu(id);
}
g_status[id] = false;
}
g_BankSql[id] = packs;
if(g_loggin[id] == true && g_BankSqlOpened[id] == true && get_pcvar_num(g_cvar_enable) == 2) {
zp_set_user_ammo_packs(id,g_BankSql[id]);
}
}
public SaveClientBank(id) {
if (g_Sql == Empty_Handle || !is_loggin(id)) return ;
new packs;
if(get_pcvar_num(g_cvar_enable) == 2) packs = zp_get_user_ammo_packs(id);
else packs = g_BankSql[id];
new limit = get_pcvar_num(g_cvar_save_limit);
if(limit && packs > limit) {
packs = limit;
}
new szQuery[200];
format(szQuery, 199, "REPLACE INTO %s (auth,passwd,amount,timestamp) VALUES('%s', '%s', '%d','%d');", g_SqlTable, g_szAuth[id], g_password[id], packs, get_systime());
SQL_QueryAndIgnore(g_Sql, szQuery);
}
public DeathMsg() {
if(!get_pcvar_num(g_cvar_enable) || !get_pcvar_num(cvar_achvs)) return PLUGIN_CONTINUE;
new killer = read_data(1);
if(!is_loggin(killer)) return PLUGIN_CONTINUE;
new victim = read_data(2);
g_zmkillcount[victim] = 0
g_zmkillercount[victim] = 0
if(zp_is_nemesis_round()) {
if(g_nemelevel[killer] < get_pcvar_num(cvar_terminator_maxlvl) && zp_get_user_nemesis(victim) && !zp_get_user_zombie(killer)) {
g_nemelevel[killer]++;
give_present(killer, get_pcvar_num(cvar_terminator_multi));
colorChat(0, CHATCOLOR_GREY, "[Zombie Blood]^1 Jatekos^4 %s^1 elerte^3 Terminator szint:^1 %i^1 es kapott^3 %i^1 loszercsomagot!", g_szAuth[killer], g_nemelevel[killer], get_pcvar_num(cvar_terminator_multi));
}
return PLUGIN_CONTINUE;
}
if(zp_get_user_zombie(killer) && g_zmkiller[killer] <get_pcvar_num(cvar_zmkiller_maxlvl) && !zp_get_user_zombie(victim)) {
g_zmkillercount[killer]++;
showStats(killer, 3);
colorChat(killer, CHATCOLOR_GREY, "[Zombie blood ]^3 Zombiolo oles:^1 %i", g_zmkillercount[killer]);
if(g_zmkillercount[killer] >= (g_zmkiller[killer] + 1) * 5) {
g_zmkiller[killer]++;
g_zmkillercount[killer] = 0;
give_present(killer, g_zmkiller[killer] * get_pcvar_num(cvar_zmkiller_multi));
colorChat(0, CHATCOLOR_GREY, "[Zombie blood]^1 Jatekos^4 %s^1 elerte^3 Zombi oles szint:^1 %i^1 es kapott^3 %i^1 loszercsomagot!", g_szAuth[killer], g_zmkiller[killer], g_zmkiller[killer]*get_pcvar_num(cvar_zmkiller_multi));
}
}
if(zp_get_user_zombie(victim) && g_hunterlevel[killer] < get_pcvar_num(cvar_hunter_maxlvl) && !zp_get_user_survivor(killer)) {
g_killcount[killer]++;
showStats(killer, 1);
colorChat(killer, CHATCOLOR_GREY, "[Zombie blood]^3 Ember vadasz oles:^1 %i", g_killcount[killer]);
if(g_killcount[killer] >= (g_hunterlevel[killer] + 1) * 5) {
g_hunterlevel[killer]++;
g_killcount[killer] = 0;
give_present(killer, g_hunterlevel[killer]*get_pcvar_num(cvar_hunter_multi));
colorChat(0, CHATCOLOR_GREY, "[Zombie Blood]^1 Jatekos^4 %s^1 elerte^3 Emberi oles:^1 %i^1 es kapott^3 %i^1 loszercsomagot!", g_szAuth[killer], g_hunterlevel[killer], g_hunterlevel[killer]*get_pcvar_num(cvar_hunter_multi));
}
}
return PLUGIN_CONTINUE;
}
public zp_user_infected_post(id, infector, nemesis) {
if(!get_pcvar_num(g_cvar_enable) || !get_pcvar_num(cvar_achvs)) return PLUGIN_CONTINUE;
g_killcount[id] = 0;
if(g_zmhunterlevel[infector] < get_pcvar_num(cvar_zombiehunter_maxlvl) && is_loggin(infector) && zp_get_user_zombie(infector)) {
g_zmkillcount[infector]++;
showStats(infector, 2);
colorChat(infector, CHATCOLOR_GREY, "[Zombieblood]^3 Zombi oles:^1 %i", g_zmkillcount[infector]);
if(g_zmkillcount[infector] >= (g_zmhunterlevel[infector] + 1) * 5) {
g_zmhunterlevel[infector]++;
g_zmkillcount[infector] = 0;
give_present(infector, (g_zmhunterlevel[infector] + 1) * get_pcvar_num(cvar_zombiehunter_multi));
colorChat(0, CHATCOLOR_GREY, "[Zombie blood]^1 Jatekos^4 %s^1 elerte^3 Zombi vadasz szint:^1 %i^1 es kapott^3 %i^1 loszercsomagot!", g_szAuth[infector], g_zmhunterlevel[infector] + 1, (g_zmhunterlevel[infector] + 1) * get_pcvar_num(cvar_zombiehunter_multi));
}
}
return PLUGIN_CONTINUE;
}
public give_present(id, amout) {
new curaps;
if(get_pcvar_num(g_cvar_enable) == 2)
{
curaps = zp_get_user_ammo_packs(id);
zp_set_user_ammo_packs(id,curaps+amout);
}
else
{
g_BankSql[id] += amout;
curaps = g_BankSql[id];
}
colorChat(id, CHATCOLOR_GREY, "[Zombie blood]^1 Most mar^3 %i^1 loszercsomag maradt a ^3 bankban!^1!", curaps+amout);
}
public showStats(id, mode) {
new text[200];
switch(mode) {
case 1: {formatex(text, charsmax(text), "Ember vadasz: %i / %i", g_killcount[id], (g_hunterlevel[id] + 1) * 5);}
case 2: {formatex(text, charsmax(text), "Zombi vadasz: %i / %i", g_zmkillcount[id], (g_zmhunterlevel[id] + 1) * 5);}
case 3: {formatex(text, charsmax(text), "Zombi oles: %i / %i", g_zmkillercount[id], (g_zmkiller[id] + 1) * 5);}
}
set_hudmessage(255, 255, 255, 0.02, 0.50, 0, 6.0, 4.0, _, _, -1);
show_hudmessage(id, text);
}
public cmdAmmoPacks(id, level, cid){
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED;
new target[32];
new count[11],num;
read_argv(1,target,31);
read_argv(2,count,10);
num = str_to_num(count);
if(equal(target, "@ALL")) {
for(new i=1;i<=MAX_PLAYERS;i++) {
if(!is_user_connected(i)) continue;
zp_set_user_ammo_packs(i, num);
}
return PLUGIN_HANDLED;
}
else if(equal(target, "@H")) {
for(new i=1;i<=MAX_PLAYERS;i++) {
if(!is_user_connected(i) || zp_get_user_zombie(i)) continue;
zp_set_user_ammo_packs(i, num);
}
return PLUGIN_HANDLED;
}
else if(equal(target, "@Z")) {
for(new i=1;i<=MAX_PLAYERS;i++) {
if(!is_user_connected(i) || !zp_get_user_zombie(i)) continue;
zp_set_user_ammo_packs(i, num);
}
return PLUGIN_HANDLED;
}
new player = cmd_target(id, target, CMDTARGET_ALLOW_SELF);
if(!player) return PLUGIN_HANDLED;
zp_set_user_ammo_packs(player, num);
return PLUGIN_HANDLED;
}
stock GetAuthId(id,Buffer[]="", BufferSize=0,info=false) {
switch(get_pcvar_num(g_cvar_save_type)) {
case 1: get_user_authid(id,Buffer,BufferSize);
case 2: {
new name[32];
if(info) {
get_user_info(id,"name",name,31);
}
else get_user_name(id,name,31);
SQL_QuoteString(g_Sql, Buffer, BufferSize, name);
}
case 3: get_user_ip(id,Buffer,BufferSize,true);
}
}
public cmd_donateamount(id) {
if(!is_loggin(id)) return PLUGIN_HANDLED;
new packs[13],num;
read_args(packs, 12);
remove_quotes(packs);
num = str_to_num(packs);
if(num < 1) {
colorChat(id, CHATCOLOR_RED, "Ervenytelen osszeg");
return PLUGIN_HANDLED;
}
new packsi;
if(get_pcvar_num(g_cvar_enable) == 2) packsi = zp_get_user_ammo_packs(id);
else packsi = g_BankSql[id];
if(packsi < num) {
colorChat(id, CHATCOLOR_GREY, "[Zombie blood]^4 Neked nem kell %i loszercsomag a bankbol!", num);
return PLUGIN_HANDLED;
}
if(get_user_userid(g_DonateTo[id]) == -1) {
return PLUGIN_HANDLED;
}
new name[32],to_name[32];
get_user_name(id,name,31);
get_user_name(g_DonateTo[id],to_name,31);
if(get_pcvar_num(g_cvar_enable) == 2)
zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id)-num);
else g_BankSql[id] -= num;
new nums;
if(is_loggin(g_DonateTo[id]) && get_pcvar_num(g_cvar_enable) == 1) {
g_BankSql[g_DonateTo[id]] += num;
nums = g_BankSql[id];
}
else {
zp_set_user_ammo_packs(g_DonateTo[id],zp_get_user_ammo_packs(g_DonateTo[id])+num);
nums = zp_get_user_ammo_packs(id);
}
colorChat(id, CHATCOLOR_GREY, "[Zombie blood]^1 Adomanyoztal^3 %i^1 Loszercsomagot^3 %s^1. Most mar^3 %i^1 loszercsomag maradt a bankban!", num, to_name, nums);
colorChat(g_DonateTo[id], CHATCOLOR_GREY, "[Zombie blood]^4 %s^1 donated^3 %i^1 Ammopacks to you.", name, num);
colorChat(0, CHATCOLOR_GREY, "[Zero blood #2]^4 %s^1 Adomanyozott^3 %i^1 Loszercsomagjaid^4 %s.", name, num, to_name);
return PLUGIN_HANDLED;
}
public cmd_enterpassword(id) {
if(is_loggin(id)) return PLUGIN_HANDLED;
new password[64];
read_args(password, 63);
remove_quotes(password);
if(password[0]) {
g_password[id] = password;
g_status[id] = true;
LoadClientBank(id);
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public cmd_enternewpassword(id) {
if(is_registred(id)) return PLUGIN_HANDLED;
new password[64];
read_args(password, 63);
remove_quotes(password);
if(password[0]) {
g_password[id] = password;
g_loggin[id] = true;
g_registred[id] = true;
SaveClientBank(id);
client_cmd(id,"setinfo _bp ^"%s^";wait;chooseteam",g_password[id]);
colorChat(id, CHATCOLOR_GREY, "[Zombie blood]^4 Uj felhasznalo: %s Jelszo: %s Loszercsomag: %d", g_szAuth[id], g_password[id], g_BankSql[id]);
return PLUGIN_HANDLED;
}
else {
client_cmd(id, "messagemode EnterNewPassword");
}
colorChat(id, CHATCOLOR_RED, "Ird be az ujj jelszavad!");
return PLUGIN_HANDLED;
}
public cmd_enterchangepassword(id) {
if(!is_loggin(id)) return PLUGIN_HANDLED;
new password[64];
read_args(password, 63);
remove_quotes(password);
if(password[0]) {
g_password[id] = password;
SaveClientBank(id);
client_cmd(id,"setinfo _bp ^"%s^"",g_password[id]);
colorChat(id, CHATCOLOR_GREY, "[Zombie blood]^4 Valtoztatott jelszo: %s Jelszo: %s Loszercsomag: %d", g_szAuth[id], g_password[id], g_BankSql[id]);
return PLUGIN_HANDLED;
}
else {
client_cmd(id, "messagemode EnterNewChangePassword");
}
colorChat(id, CHATCOLOR_RED, "Add meg az uj jelszavad!");
return PLUGIN_HANDLED;
}
public cmd_takeamout(id,all) {
if(!is_loggin(id) || get_pcvar_num(g_cvar_enable) == 2) return PLUGIN_HANDLED;
new amout[13];
read_args(amout, 12);
remove_quotes(amout);
new want = str_to_num(amout);
if(all) want = g_BankSql[id];
if(want > 0) {
if(want > g_BankSql[id]) {
cmdBankMenu(id);
colorChat(id, CHATCOLOR_GREEN, "Nem maradt %i loszercsomag a bankban!", want);
}
else {
zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + want)
colorChat(id, CHATCOLOR_GREEN, "Mar csak %i loszercsomag maradt a bankban!", want);
g_BankSql[id] -= want;
}
}
else {
cmdBankMenu(id);
colorChat(id, CHATCOLOR_RED, "Ervenytelen osszeg!");
}
return PLUGIN_HANDLED;
}
public cmd_saveamout(id,all) {
if(!is_loggin(id) || get_pcvar_num(g_cvar_enable) == 2) return PLUGIN_HANDLED;
new amout[13];
read_args(amout, 12);
remove_quotes(amout);
new want = str_to_num(amout);
if(all) want = zp_get_user_ammo_packs(id);
if(want > 0) {
if(want > zp_get_user_ammo_packs(id)) {
cmdBankMenu(id);
colorChat(id, CHATCOLOR_RED, "Neked nem kell %i loszercsomag!", want);
}
else {
g_BankSql[id] += want;
zp_set_user_ammo_packs(id,zp_get_user_ammo_packs(id)-want);
colorChat(id, CHATCOLOR_GREY, "[Zombie blood]^4 %i Loszercsomag elmentve! Jelenleg a bankba: %i loszercsomag van!", want, g_BankSql[id]);
}
}
else {
cmdBankMenu(id)
colorChat(id, CHATCOLOR_RED, "Ervenytelen osszeg!");
}
return PLUGIN_HANDLED;
}
public cmdMainMenu(id) {
displayMainMenu(id);
return PLUGIN_CONTINUE;
}
public cmdBankMenu(id) {
if(is_loggin(id) && get_pcvar_num(g_cvar_enable) == 1) displayMainMenuAmmo(id);
return PLUGIN_CONTINUE;
}
public cmdDonateMenu(id) {
if(is_loggin(id)) displayDonateMenu(id,g_menuPosition[id] = 0);
return PLUGIN_CONTINUE;
}
public clcmd_changeteam(id) {
if(!get_pcvar_num(g_cvar_enable)) return PLUGIN_CONTINUE;
if(!is_loggin(id)) {
displayMainMenu(id);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public archivments_menu(id) {
if(!get_pcvar_num(g_cvar_enable) || !get_pcvar_num(cvar_achvs)) return PLUGIN_HANDLED;
if(is_loggin(id)) {
new title[80]; formatex(title, 79, "\rEredmenyek:\w [\y%s\w]", g_szAuth[id])
new menu5 = menu_create(title, "handler_archs")
new humanhtitle[200]
if(g_hunterlevel[id] < get_pcvar_num(cvar_hunter_maxlvl))
formatex(humanhtitle, 199, "\wEmber vadasz\y Level %i - \rKovetkezo szin: %i\w (%i APs)^n\y Megoltel %i zombit egymas utan!!^n", g_hunterlevel[id], g_hunterlevel[id] + 1, (g_hunterlevel[id] + 1) * get_pcvar_num(cvar_hunter_multi), (g_hunterlevel[id] + 1) * 5)
else
formatex(humanhtitle, 199, "\wEmber vadasz\y Level %i - \rFULL^n", g_hunterlevel[id])
menu_additem(menu5, humanhtitle , "1")
new zmhtitle[200]
if(g_zmhunterlevel[id] < get_pcvar_num(cvar_zombiehunter_maxlvl))
formatex(zmhtitle, 199, "\wZombi vadasz\y Level %i - \rKovetkezo szin: %i\w (%i APs)^n\y Megferzoztel %i embert egymas utan!^n", g_zmhunterlevel[id], g_zmhunterlevel[id] + 1, (g_zmhunterlevel[id] + 1) * get_pcvar_num(cvar_zombiehunter_multi), (g_zmhunterlevel[id] + 1) * 5)
else
formatex(zmhtitle, 199, "\wZombi vadasz\y Level %i - \rFULL^n", g_zmhunterlevel[id])
menu_additem(menu5, zmhtitle , "2")
new zmkillertitle[200]
if(g_zmkiller[id] < get_pcvar_num(cvar_zmkiller_maxlvl))
formatex(zmkillertitle, 199, "\wZombi oles\y Level %i - \rKovetkezo szin: %i\w (%i APs)^n\y Megolted %i Az emberek nagyreszet!^n", g_zmkiller[id], g_zmkiller[id] + 1, (g_zmkiller[id] + 1) * get_pcvar_num(cvar_zmkiller_multi), (g_zmkiller[id] + 1) * 3)
else
formatex(zmkillertitle, 199, "\wZombi oles\y Level %i - \rFULL^n", g_zmkiller[id])
menu_additem(menu5, zmkillertitle, "3")
new nemetitle[200]
if(g_nemelevel[id] < get_pcvar_num(cvar_terminator_maxlvl))
formatex(nemetitle, 199, "\wTerminator\y Szint %i - \rKovetkezo szint: %i\w (%i APs)^n\y Megolted a Nemesist!^n", g_nemelevel[id], g_nemelevel[id] + 1, get_pcvar_num(cvar_terminator_multi))
else
formatex(nemetitle, 199, "\wTerminator\y Szint %i - \rFULL^n", g_nemelevel[id]);
menu_additem(menu5, nemetitle, "4");
menu_display(id, menu5, 0);
}
else {
displayMainMenu(id);
}
return PLUGIN_CONTINUE;
}
public handler_archs(id, menu5, item) {
if(!get_pcvar_num(g_cvar_enable) || !get_pcvar_num(cvar_achvs)) 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, CHATCOLOR_GREY, "[Zombie Blood]^1 Olj meg %i zombit es kapsz %i loszercsomagot!", (g_hunterlevel[id] + 1) * 5, (g_hunterlevel[id] + 1) * get_pcvar_num(cvar_hunter_multi))
}
case 2:
{
if(g_zmhunterlevel[id] >= 2)
return PLUGIN_HANDLED
colorChat(id, CHATCOLOR_GREY, "[Zombie Blood]^1 Fertozz meg %i embert es kapsz %i loszercsomagot!", (g_zmhunterlevel[id] + 1) * 5, (g_zmhunterlevel[id] + 1) * get_pcvar_num(cvar_zombiehunter_multi))
}
case 3:
{
if(g_zmkiller[id] >= 3)
return PLUGIN_HANDLED
colorChat(id, CHATCOLOR_GREY, "[Zombie Blood]^1 Olj meg %i embert es kapsz %i loszercsomagot!", (g_zmkiller[id] + 1) * 3, (g_zmkiller[id] + 1) * get_pcvar_num(cvar_zmkiller_multi))
}
case 4:
{
if(g_zmkiller[id] >= 1)
return PLUGIN_HANDLED
colorChat(id, CHATCOLOR_GREY, "[Zombie Blood]^1 Old meg Nemesis -t es kapsz %i loszercsomagot!", get_pcvar_num(cvar_terminator_multi))
}
}
return PLUGIN_CONTINUE;
}
displayMainMenu(id) {
new menuBody[MAX_SIZE+1],len;
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_5;
len = format(menuBody, MAX_SIZE, g_coloredMenus ? "\yRegisztracio rendszer:\w^n" : "Register System^n");
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\rNev: \w%s \rStatusz: \w%s^n" : "Nev: %s Statusz: %s^n", g_szAuth[id], (is_registred(id) ? "\dregistred" : "\yunregistred"));
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r1\w. Bejelentkezes^n" : "1. Bejelentkezes^n");
if(!is_loggin(id) && !is_registred(id)) {
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r2\w. Uj felhasznalo" : "2. Uj felhasznalo");
}
if(/*get_pcvar_num(cvar_allow_change_name) || */get_pcvar_num(cvar_allow_change_password))
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "^n\r3\w. Valtoztatas^n^n" : "^n2. Valtoztatas^n^n");
else
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "^n\r3\d. Valtoztatas^n^n" : "^n2. Valtoztatas^n^n");
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r5\w. Segitseg^n^n" : "5. Help^n^n");
if(strlen(g_Admins) > 0) len += format(menuBody[len], MAX_SIZE-len, "%s", g_Admins);
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "^n^n\r0\w. %L" : "^n^n0. %L", id, "EXIT");
show_menu(id, keys, menuBody, -1, "BankMainMenu");
}
displayMainMenuAmmo(id) {
new menuBody[MAX_SIZE+1],len;
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_4|MENU_KEY_5|MENU_KEY_7;
len = format(menuBody, MAX_SIZE, g_coloredMenus ? "\yBank Account: \r%s \yToltenyek a bankba: \r%d^n" : "Bank felhasznalo: %s Toltenyek a bankba: %d^n", g_szAuth[id], g_BankSql[id]);
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r1\w. Loszer vetele^n" : "1. Loszer vetele^n");
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r2\w. Mindent vesz^n^n" : "2. Mindent vesz^n^n");
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r4\w. Loszer mentese^n" : "4. Loszer mentese^n");
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r5\w. Mindent ment^n^n" : "5. Mindent ment^n^n");
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r7\w. Adomany osszege:^n" : "7. Adomany osszege:^n");
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "^n\r0\w. %L" : "^n0. %L", id, "EXIT");
show_menu(id, keys, menuBody, -1, "BankAmmoMenu");
}
displayChangeMenu(id) {
new menuBody[MAX_SIZE+1],name[32],len;
new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2;
get_user_name(id,name,31);
len = format(menuBody, MAX_SIZE, g_coloredMenus ? "\yRegisztracio rendszer\w^n" : "Regisztracio rendszer^n");
if(!get_pcvar_num(cvar_allow_change_password) || !is_loggin(id))
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r1\d. Jelszo modositasa^n" : "1. Jelszo modositasa^n");
else
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r1\w. Jelszo modositasa^n" : "1. Jelszo modositasa^n");
/*if(!get_pcvar_num(cvar_allow_change_name) || !is_loggin(id))
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r2\d. Nev modositasa" : "2. Nev modositasa");
else
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r2\w. Nev modositasa" : "2. Nev modositasa");
*/
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "^n^n\r0\w. %L" : "^n^n0. %L", id, "BACK");
show_menu(id, keys, menuBody, -1, "BankChangeMenu");
}
displayDonateMenu(id, pos) {
if (pos < 0) return ;
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[MAX_SIZE+1];
new b = 0;
new i;
new name[32];
new start = pos * 8;
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, MAX_SIZE, g_coloredMenus ? "\rValaszd ki a jatekost, akinek adomanyozni szeretnel:^n" : "Valaszd ki a jatekost, akinek adomanyozni szeretnel:^n", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))
new end = start + 8
new keys = MENU_KEY_0;
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a) {
i = g_menuPlayers[id][a];
get_user_name(i, name, 31);
if(i == id) {
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r%d\d. %s ^n" : "%d. %s^n", ++b, name);
}
else {
keys |= (1<<b);
len += format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "\r%d\w. %s ^n" : "%d. %s^n", ++b, name);
}
}
if (end != g_menuPlayersNum[id]) {
format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "^n\r9\w. %L...^n\r0\w. %L" : "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT");
keys |= MENU_KEY_9;
}
else format(menuBody[len], MAX_SIZE-len, g_coloredMenus ? "^n\r0\w. %L" : "^n0. %L", id, pos ? "BACK" : "EXIT");
show_menu(id, keys, menuBody, -1, "DonateMenu");
}
public actionMainMenu(id, key) {
switch (key) {
// 1
case 0: {
if(is_loggin(id)) {
colorChat(id, CHATCOLOR_GREEN, "Be vagy mar jelentkezve!");
return PLUGIN_HANDLED;
}
colorChat(id, CHATCOLOR_RED, "Ird be a jelszavad!");
client_cmd(id, "messagemode EnterPassword");
}
// 2
case 1: {
if(is_loggin(id) || is_registred(id)) return PLUGIN_HANDLED;
colorChat(id, CHATCOLOR_RED, "Ird be az uj jelszavad!");
client_cmd(id, "messagemode EnterNewPassword");
}
// 3
case 2: {
displayChangeMenu(id);
}
// 5
case 4: {
new motd_file[128];
get_pcvar_string(cvar_motd_file,motd_file,127);
show_motd(id, motd_file);
}
}
return PLUGIN_HANDLED;
}
public actionAmmoMenu(id, key) {
if(!is_loggin(id)) return PLUGIN_HANDLED;
switch (key) {
// 1
case 0: {
client_cmd(id, "messagemode TakeAmount");
}
// 2
case 1: {
cmd_takeamout(id,true);
}
// 4
case 3: {
client_cmd(id, "messagemode SaveAmount");
}
// 5
case 4: {
cmd_saveamout(id,true);
}
// 7
case 6: {
displayDonateMenu(id, g_menuPosition[id] = 0);
}
}
return PLUGIN_HANDLED;
}
public actionChangeMenu(id, key) {
switch (key) {
// 1
case 0: {
if(!get_pcvar_num(cvar_allow_change_password) || !is_loggin(id)) return PLUGIN_HANDLED;
client_cmd(id, "messagemode EnterNewChangePassword");
}
// 2
//case 1: {
// if(!get_pcvar_num(cvar_allow_change_name) || !is_loggin(id)) return PLUGIN_HANDLED;
//}
case 9: {
displayMainMenu(id);
}
}
return PLUGIN_HANDLED;
}
public actionDonateMenu(id, key) {
switch (key) {
case 8: displayDonateMenu(id, ++g_menuPosition[id]);
case 9: displayDonateMenu(id, --g_menuPosition[id]);
default: {
new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key];
g_DonateTo[id] = player;
client_cmd(id, "messagemode DonateAmount");
}
}
return PLUGIN_HANDLED;
}
public is_registred(id) {
return g_registred[id];
}
public is_loggin(id) {
return g_loggin[id];
}