AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   [ZP BANK + REGISTER FVAULT] Help Please (https://forums.alliedmods.net/showthread.php?t=196320)

arcadecs 09-18-2012 15:49

[ZP BANK + REGISTER FVAULT] Help Please
 
hi, i have a registration system + bank. it was made from scratch by a scripter advanced. so that the system registry + bank, contains a bug that I want to address with urgency. explanation of the bug.

When the server goes down, if someone is with AmmoPacks, off the bench .. when the server returns the packs reseteam .. I was wondering if anyone has here in the forum knows that messing with fvault tool, please send me some contact, or if it is something simple, post on the topic here please.

pokemonmaster 09-18-2012 16:11

Re: [ZP BANK + REGISTER FVAULT] Help Please
 
I can't understand what you exactly need ...

arcadecs 09-18-2012 16:19

Re: [ZP BANK + REGISTER FVAULT] Help Please
 
I'll post the registration system + bank.

it works perfectly, but when the server drops from nothing, anyone with ammopacks off the bench, loses all ammopacks.

I was wondering if you or anyone knows how to do when the server goes down, all the packs save, and be deposited in the bank.

Register System + Bank [Fvault]:

Code:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <dhudmessage>
#include <fakemeta>
#include <fvault>
#include <zombieplague>

const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
 
enum
{
        REGS_ACCEPTED,
        REGS_LOCKED,
        BANK_ACCEPTED,
        BANK_LOCKED
}

new const register_dados[] = "zp_register"
new const bank_dados[] = "zp_bank"

#define is_valid_player(%1) (1 <= %1 <= 32)
#define ADMIN_LEVEL ADMIN_IMMUNITY

new name[33][100]
new password[33][100]
new name_log[33][100]
new password2[33][100]
new g_name[33][100]
new g_tentativas[33]

new bool:loggedin[33]

new cvar_menustyle, cvar_punhish, cvar_tentativas, cvar_bantime

new bool:g_bSawMotd[33]
#define MOTD_FLAG_ARG 1
#define MOTD_FLAG_END 1
#define m_iMenuCode 205

new PlayerID[33]

new szText[555 char]

public plugin_init()
{
        register_plugin("[ZP] Register + Bank", "2.5", "Mottzi/GuhRDS")
        register_dictionary("zp_GuhRDS.txt")

        cvar_menustyle        = register_cvar("zp_menu_style", "1")                        //
        cvar_punhish        = register_cvar("zp_error-pass_punish", "2")                // 1 - Kick | 2 - Ban
        cvar_tentativas = register_cvar("zp_error-pass_amount", "3")                // Errar 3 Vezes
        cvar_bantime        = register_cvar("zp_error-pass_punish-bantime", "5")        // Tempo do Ban

        register_clcmd("jointeam", "check_status")
        register_clcmd("chooseteam", "check_status")
        register_clcmd("say", "HookSayCommands")
        register_clcmd("say_team", "HookSayCommands")

        register_clcmd("[Registrar]Login_Nome", "cmd_register_loginname_check")
        register_clcmd("[Registrar]Login_Senha", "cmd_register_loginpw_check")
        register_clcmd("[Logar]Login_Nome", "cmd_login_loginname_check")
        register_clcmd("[Logar]Login_Senha", "cmd_login_loginpw_check")
        register_clcmd("[Banco]Sacar_Quantidade", "cmd_bank_withdrawamount_check")
        register_clcmd("[Banco]Depositar_Quantidade", "cmd_bank_depositamount_check")

        register_concmd("zp_account_list", "cmdShowList", ADMIN_LEVEL, "zp_account_list")
        register_concmd("zp_account_setap", "cmdSetAp", ADMIN_LEVEL, "zp_account_setap <Nome da Conta> <Quantiade de Ammo Packs>")

        register_message(get_user_msgid("ShowMenu"), "message_ShowMenu")
        register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu")
        register_message(get_user_msgid("MOTD"), "message_MOTD")

        register_logevent("round_first", 2, "0=World triggered", "1&Restart_Round_")
        register_logevent("round_first", 2, "0=World triggered", "1=Game_Commencing")

        register_menu("Register", KEYSMENU, "cmd_register_menu_handler1")
        register_menu("Bank", KEYSMENU, "cmd_bank_menu_handler1")
}

public plugin_precache()
{
        precache_sound("GuhRDS/regs_accepted_v2.wav")
        precache_sound("GuhRDS/regs_locked_v2.wav")
        precache_sound("GuhRDS/bank_accepted_v2.wav")
        precache_sound("GuhRDS/bank_locked_v2.wav")
}

public client_connect(id)
{
        remove_task(id)
}

public client_putinserver(id)
{
        g_bSawMotd[id] = false

        loggedin[id] = false
        g_tentativas[id] = 0
        g_name[id] = "Nao esta Logado"

        set_task(1.0, "check_status", id)

        return PLUGIN_CONTINUE
}

public client_disconnect(id)
{
        cmdsave(id)
       
        loggedin[id] = false
        g_tentativas[id] = 0
        g_name[id] = "Nao esta Logado"
       
        remove_task(id)
}

public check_status(id)
{
        new players[32], pnum, tempid;
        get_players(players, pnum);

        for(new i; i<pnum; i++)
        {
                tempid = players[i];

                if(!loggedin[tempid])
                {
                        cmd_register_menu(id)
                        set_task(60.0, "check_login", id)
                }
        }
}

public check_login(id)
{
        if(loggedin[id] == false)
        {
                server_cmd("kick #%i Nao logou", get_user_userid(id))

                new Nick[33], Ip[13], SteamID[51]

                get_user_ip(id, Ip[id], 12)
                get_user_authid(id, SteamID[id], 50)
                get_user_name(id, Nick[id], 32)
               
                LogsNotLogged("------------------------------------------------------------------------------------------------------------------------")
                LogsNotLogged("Registro: Jogador Kickado | Motivo: Não Logou")
                LogsNotLogged("Jogador: Nome: %s", Nick[id])
                LogsNotLogged("Jogador: IP: %s", Ip[id])
                LogsNotLogged("Jogador: SteamID: %s", SteamID[id])
                LogsNotLogged("------------------------------------------------------------------------------------------------------------------------")
        }
}

////////////////////////////////////////////////////////////////////////////
///////////////////////// Hooks Select Team & Motd /////////////////////////
////////////////////////////////////////////////////////////////////////////

public message_ShowMenu(iMsgID, iDest, iReceiver)
{
        new const Team_Select[] = "#Team_Select"
   
        new szMenu[sizeof(Team_Select)]
        get_msg_arg_string(4, szMenu, charsmax(szMenu))
   
        if(!equal(szMenu, Team_Select))
        {
                return PLUGIN_CONTINUE
        }
        set_pdata_int(iReceiver, m_iMenuCode, 0)
   
        return PLUGIN_HANDLED
}

public message_VGUIMenu(iMsgID, iDest, iReceiver)
{
        if(get_msg_arg_int(1) != 2)
        {
                return PLUGIN_CONTINUE
        }
        return PLUGIN_HANDLED;
}

public message_MOTD(msgid, dest, id)
{
        if(!g_bSawMotd[id])
        {
                if(get_msg_arg_int(MOTD_FLAG_ARG) == MOTD_FLAG_END)
                {
                        g_bSawMotd[id] = true
                }
                return PLUGIN_HANDLED
        }
        return PLUGIN_CONTINUE
}

/////////////////////////////////////////////////////////////////////
///////////////////////// Events First Round/////////////////////////
/////////////////////////////////////////////////////////////////////

public round_first()
{
        set_cvar_num("mp_limitteams", 0)
        set_cvar_num("mp_autoteambalance", 0)
        set_cvar_num("sv_restartround", 1)
}

///////////////////////////////////////////////////////////////////////
///////////////////////// Sistema de Registro /////////////////////////
///////////////////////////////////////////////////////////////////////

public cmd_register_menu(id)
{
        if(get_pcvar_num(cvar_menustyle) == 1)
        {
                static menu[240], len
                len = 0
               
                len += formatex(menu[len], charsmax(menu) - len, "%L^n^n", id, "MENU_REGISTER_SYSTEM")
                if(loggedin[id] == true)
                        len += formatex(menu[len], charsmax(menu) - len, "\d1. %L^n", id, "MENU_REGS_REGISTER")
                else
                        len += formatex(menu[len], charsmax(menu) - len, loggedin[id] ? "\d1. %L^n" : "\r1. \w%L^n", id, "MENU_REGS_REGISTER")
                len += formatex(menu[len], charsmax(menu) - len, loggedin[id] ? "\d2. %L^n^n"        : "\r2. \w%L^n^n", id, "MENU_REGS_LOGAR")
                len += formatex(menu[len], charsmax(menu) - len, loggedin[id] ? "\r3. \w%L^n"        : "\d3. %L^n",        id, "MENU_REGS_CHANGE_LOGIN-NAME")
                len += formatex(menu[len], charsmax(menu) - len, loggedin[id] ? "\r4. \w%L^n^n"        : "\d4. %L^n^n", id, "MENU_REGS_CHANGE_LOGIN-PW")
                len += formatex(menu[len], charsmax(menu) - len, loggedin[id] ? "\r5. \w%L^n^n"        : "\d5. %L^n^n", id, "MENU_REGS_ACCOUNT_EXIT")
                len += formatex(menu[len], charsmax(menu) - len, loggedin[id] ? "\r0. \w%L^n"        : "\d0. %L^n",        id, "MENU_REGS_EXIT")

                show_menu(id, KEYSMENU, menu, -1, "Register")
        }
        else if(get_pcvar_num(cvar_menustyle) == 2)
        {
                formatex(szText, charsmax(szText), "%L", id, "MENU_REGISTER_SYSTEM")
                new menu = menu_create(szText, "cmd_register_menu_handler2")
                if(loggedin[id] == true)
                        formatex(szText, charsmax(szText), "%L", id, "MENU_REGS_REGISTER")
                else
                        formatex(szText, charsmax(szText), loggedin[id] ? "\d%L" : "\w%L", id, "MENU_REGS_REGISTER")
                menu_additem(menu, szText, "1", 0)
                formatex(szText, charsmax(szText), loggedin[id] ? "\d%L^n" : "\w%L^n",        id, "MENU_REGS_LOGAR")
                menu_additem(menu, szText, "2", 0)
                formatex(szText, charsmax(szText), loggedin[id] ? "\w%L"  : "\d%L",        id, "MENU_REGS_CHANGE_LOGIN-NAME")
                menu_additem(menu, szText, "3", 0)
                formatex(szText, charsmax(szText), loggedin[id] ? "\w%L^n" : "\d%L^n",        id, "MENU_REGS_CHANGE_LOGIN-PW")
                menu_additem(menu, szText, "4", 0)
                formatex(szText, charsmax(szText), loggedin[id] ? "\w%L"  : "\d%L",        id, "MENU_REGS_ACCOUNT_EXIT")
                menu_additem(menu, szText, "5", 0)

                menu_display(id, menu, 0)
        }
}

public cmd_register_menu_handler1(id, key)
{
        if(get_pcvar_num(cvar_menustyle) == 1)
        {
                switch(key)
                {
                        case 0: cmd_register_check(id)
                        case 1: cmd_login_check(id)
                        case 2: cmd_register_menu(id)
                        case 3: cmd_register_menu(id)
                        case 4: cmd_logout(id)
                        case 9: check_login(id)
                }
                if(key != 0 && key != 1 && key != 2 && key != 3 && key != 4 && key != 9)
                {
                        cmd_register_menu(id)
                        return PLUGIN_HANDLED
                }
        }
        return PLUGIN_HANDLED
}

public cmd_register_menu_handler2(id, menu, item)
{
        if(get_pcvar_num(cvar_menustyle) == 2)
        {
                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: cmd_register_check(id)
                        case 2: cmd_login_check(id)
                        case 3: cmd_register_menu(id)
                        case 4: cmd_register_menu(id)
                        case 5: cmd_logout(id)
                        case 0: check_login(id)
                }
                if(key != 1 && key != 2 && key != 3 && key != 4 && key != 5 && key != 0)
                {
                        cmd_register_menu(id)
                        return PLUGIN_HANDLED
                }
        }
        return PLUGIN_HANDLED
}

public cmd_register_check(id)
{
        if(loggedin[id] == true)
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_YOU_ARE_LOGGED")
                EmitSound(id, REGS_LOCKED)

                cmd_register_menu(id)
        }
        else
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_TYPE_REGISTER_LOGIN_ACCOUNT")
                EmitSound(id, REGS_ACCEPTED)

                client_cmd(id, "messagemode [Registrar]Login_Nome")
        }
}

public cmd_register_loginname_check(id)
{
        read_args(name[id], 99)
        remove_quotes(name[id])
        new name2[33][100]

        if(loggedin[id] == true)
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_YOU_ARE_LOGGED")
                EmitSound(id, REGS_LOCKED)

                cmd_register_menu(id)
        }
        else
        {
                if(fvault_get_data(register_dados, name[id], name2[id], 99) == 0 && containi(name[id], " ") == -1)
                {
                        set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                        show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_TYPE_REGISTER_PASS_ACCOUNT")
                        EmitSound(id, REGS_ACCEPTED)

                        client_cmd(id, "messagemode [Registrar]Login_Senha")         
                }
                else if(fvault_get_data(register_dados, name[id], name2[id], 99) == 1)
                {
                        set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 7.0, 0.01, 2.0, 2.0)
                        show_dhudmessage(id, "%L^n%L", LANG_PLAYER, "REGS_REGISTER_LOGIN_INVALID", LANG_PLAYER, "TRY_AGAIN")
                        EmitSound(id, REGS_LOCKED)

                        cmd_register_menu(id)
                }
        }
}

public cmd_register_loginpw_check(id)
{
        read_args(password[id], 99)
        remove_quotes(password[id])

        if(loggedin[id] == true)
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_YOU_ARE_LOGGED")
                EmitSound(id, REGS_LOCKED)

                cmd_register_menu(id)
        }
        else
        {
                if(containi(password[id], " ") == -1)
                {
                        EmitSound(id, REGS_ACCEPTED)

                        fvault_set_data(register_dados, name[id], password[id])

                        loggedin[id] = true
                        g_name[id] = name[id]

                        remove_task(id)

                        client_cmd(id, "jointeam 5")

                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "REGS_ACCOUNTNEW_CREATED")
                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "REGS_ACCOUNTNEW_LOGIN", name[id])
                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "REGS_ACCOUNTNEW_PASSWORD", password[id])

                        LogsRegister("------------------------------------------------------------------------------------------------------------------------")
                        LogsRegister("Registro: Novos Dados Adcionados")
                        LogsRegister("Login: %s", name[id])
                        LogsRegister("Senha: %s", password[id])
                        LogsRegister("------------------------------------------------------------------------------------------------------------------------")
                }               
                else
                {
                        set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 7.0, 0.01, 2.0, 2.0)
                        show_dhudmessage(id, "%L^n%L", LANG_PLAYER, "REGS_REGISTER_PASS_INVALID", LANG_PLAYER, "TRY_AGAIN")
                        EmitSound(id, REGS_LOCKED)

                        client_cmd(id, "messagemode [Registrar]Login_Senha")
                }
        }
}

public cmd_login_check(id)
{
        if(loggedin[id] == false)
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_TYPE_LOGIN_ACCOUNT")

                client_cmd(id, "messagemode [Logar]Login_Nome")
        }
        else if(loggedin[id] == true)
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_YOU_ARE_LOGGED")
                EmitSound(id, REGS_LOCKED)

                cmd_register_menu(id)
        }
}

public cmd_login_loginname_check(id)
{
        read_args(name_log[id], 99)
        remove_quotes(name_log[id])
        new name2[33][100]

        if(loggedin[id] == false)
        {
                if(fvault_get_data(register_dados, name_log[id], name2[id], 99) == 0)
                {
                        EmitSound(id, REGS_LOCKED)
                        cmd_register_menu(id)

                        set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 7.0, 0.01, 2.0, 2.0)
                        show_dhudmessage(id, "%L^n%L", LANG_PLAYER, "REGS_LOGIN_NAME_INVALID", LANG_PLAYER, "TRY_AGAIN")
                }
                else
                {
                        EmitSound(id, REGS_ACCEPTED)
                        client_cmd(id, "messagemode [Logar]Login_Senha")

                        set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                        show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_TYPE_REGISTER_PASS_ACCOUNT")
                }
        }
        else if(loggedin[id] == true)
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_YOU_ARE_LOGGED")
                EmitSound(id, REGS_LOCKED)

                cmd_register_menu(id)
        }
}

public cmd_login_loginpw_check(id)
{
        read_args(password2[id], 99)
        remove_quotes(password2[id])
        new data[140]

        if(loggedin[id] == false)
        {
                fvault_get_data(register_dados, name_log[id], data, 139)

                if(equali(data, password2[id]))
                {
                        EmitSound(id, REGS_ACCEPTED)

                        loggedin[id] = true
                        g_name[id] = name_log[id]

                        remove_task(id)

                        client_cmd(id, "jointeam 5")

                        new Nick[33], Ip[13], SteamID[51]

                        get_user_ip(id, Ip[id], 12)
                        get_user_authid(id, SteamID[id], 50)
                        get_user_name(id, Nick[id], 32)
                }
                else
                {
                        EmitSound(id, REGS_LOCKED)
                        cmd_register_menu(id)
                        g_tentativas[id]++
                        check_punish(id)

                        set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 7.0, 0.01, 2.0, 2.0)
                        show_dhudmessage(id, "%L^n%L", LANG_PLAYER, "REGS_LOGIN_PASS_INVALID", LANG_PLAYER, "TRY_AGAIN")
                }
        }
        else if(loggedin[id] == true)
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_YOU_ARE_LOGGED")
                EmitSound(id, REGS_LOCKED)

                cmd_register_menu(id)
        }
}

public check_punish(id)

        if(g_tentativas[id] >= get_pcvar_num(cvar_tentativas))
        {
                new punish = get_pcvar_num(cvar_punhish)
                if(punish <= 0 || punish >= 3)
                        return PLUGIN_HANDLED

                new Nick[33], Ip[13], SteamID[51];

                get_user_ip(id, Ip[id], 12)
                get_user_authid(id, SteamID[id], 50)
                get_user_name(id, Nick[id], 32)

                if(punish == 1)
                {
                        server_cmd("kick #%i foi kickado por errar a senha muitas vezes", get_user_userid(id))
                        LogsErrorPass("------------------------------------------------------------------------------------------------------------------------")
                        LogsErrorPass("Registro: Jogador Kickado | Motivo: Errou A Senha Muitas Vezes.")
                        LogsErrorPass("Jogador: Nome: %s", Nick[id])
                        LogsErrorPass("Jogador: IP: %s", Ip[id])
                        LogsErrorPass("Jogador: SteamID: %s", SteamID[id])
                        LogsErrorPass("------------------------------------------------------------------------------------------------------------------------")
                        return PLUGIN_HANDLED
                }
                if(punish == 2)
                {
                        server_cmd("amx_banip #%i %i ^"foi banido %d minutos por errar a senha %s vezes^"", get_user_userid(id), get_pcvar_num(cvar_bantime), get_pcvar_num(cvar_bantime), get_pcvar_num(cvar_tentativas))
                        LogsErrorPass("------------------------------------------------------------------------------------------------------------------------")
                        LogsErrorPass("Registro: Jogador Banido | Motivo: Errou A Senha Muitas Vezes.")
                        LogsErrorPass("Jogador: Nome: %s", Nick[id])
                        LogsErrorPass("Jogador: IP: %s", Ip[id])
                        LogsErrorPass("Jogador: SteamID: %s", SteamID[id])
                        LogsErrorPass("------------------------------------------------------------------------------------------------------------------------")
                }
        }
        return PLUGIN_CONTINUE
}

public cmd_logout(id)
{
        if(loggedin[id] == false)
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_YOU_ARE_NOT_LOGGED")
                EmitSound(id, REGS_LOCKED)

                cmd_register_menu(id)
        }
        else
        {
                set_dhudmessage(0, 255, 0, -1.0, 0.0, 0, 5.0, 0.01, 1.5, 1.5)
                show_dhudmessage(id, "%L", LANG_PLAYER, "REGS_LOGOUT_SUCESS")
                EmitSound(id, REGS_ACCEPTED)

                user_silentkill(id)
                cs_set_user_team(id, CS_TEAM_UNASSIGNED)

                loggedin[id] = false
                g_name[id] = "Nao esta Logado"

                check_status(id)
        }
}

////////////////////////////////////////////////////////////////////
///////////////////////// Sistema de Banco /////////////////////////
////////////////////////////////////////////////////////////////////

public cmd_bank_menu(id)
{
        if(loggedin[id] == true && get_pcvar_num(cvar_menustyle) == 1)
        {
                static menu[240], len
                len = 0

                new data1[30]
                fvault_get_data(bank_dados, g_name[id], data1, charsmax(data1))

                len += formatex(menu[len], charsmax(menu) - len, "%L^n^n", id, "MENU_BANK_SYSTEM")
                if(equal(data1 , ""))
                        len += formatex(menu[len], charsmax(menu) - len, "%L^n%L^n^n",        id, "MENU_BANK_ACCOUNT", g_name[id], id, "MENU_BANK_BALANCE0")
                else
                        len += formatex(menu[len], charsmax(menu) - len, "%L^n%L^n^n",        id, "MENU_BANK_ACCOUNT", g_name[id], id, "MENU_BANK_BALANCE", data1)
                len += formatex(menu[len], charsmax(menu) - len, "\r1. \w%L^n",                id, "MENU_BANK_TAKE_AMOUNT")
                len += formatex(menu[len], charsmax(menu) - len, "\r2. \w%L^n^n",        id, "MENU_BANK_TAKE_ALL")
                len += formatex(menu[len], charsmax(menu) - len, "\r3. \w%L^n",                id, "MENU_BANK_SAVE_AMOUNT")
                len += formatex(menu[len], charsmax(menu) - len, "\r4. \w%L^n^n",        id, "MENU_BANK_SAVE_ALL")
                len += formatex(menu[len], charsmax(menu) - len, "\r0. \w%L",                id, "MENU_BANK_EXIT")

                show_menu(id, KEYSMENU, menu, -1, "Bank")
        }
        else if(loggedin[id] == true && get_pcvar_num(cvar_menustyle) == 2)
        {
                new szText[100]

                new data1[30]
                fvault_get_data("zp_rba_bank", g_name[id], data1, charsmax(data1))
         
                if(equal(data1 , ""))
                        formatex(szText, charsmax(szText), "%L^n^n%L^n%L", id, "MENU_BANK_SYSTEM" , id, "MENU_BANK_ACCOUNT", g_name[id], id, "MENU_BANK_BALANCE0")
                else
                        formatex(szText, charsmax(szText), "%L^n^n%L^n%L", id, "MENU_BANK_SYSTEM" , id, "MENU_BANK_ACCOUNT", g_name[id], id, "MENU_BANK_BALANCE", data1)
                new menu = menu_create(szText, "cmd_bank_menu_handler2")     
                formatex(szText, charsmax(szText), "\w%L",  id, "MENU_BANK_TAKE_AMOUNT")
                menu_additem(menu, szText, "1", 0)
                formatex(szText, charsmax(szText), "\w%L^n", id, "MENU_BANK_TAKE_ALL")
                menu_additem(menu, szText, "2", 0)
                formatex(szText, charsmax(szText), "\w%L",  id, "MENU_BANK_SAVE_AMOUNT")
                menu_additem(menu, szText, "3", 0)
                formatex(szText, charsmax(szText), "\w%L",  id, "MENU_BANK_SAVE_ALL")
                menu_additem(menu, szText, "4", 0)
                menu_display(id, menu, 0)
        }
}

public cmd_bank_menu_handler1(id, key)
{
        if(loggedin[id] == true && get_pcvar_num(cvar_menustyle) == 1)
        {
                switch(key)
                {
                        case 0: client_cmd(id, "messagemode [Banco]Sacar_Quantidade")
                        case 1: cmd_bank_withdrawall(id)
                        case 2: client_cmd(id, "messagemode [Banco]Depositar_Quantidade")
                        case 3: cmd_bank_depositall(id)
                }
                if(key != 0 && key != 1 && key != 2 && key != 3 && key != 9)
                {
                        cmd_bank_menu(id)
                        return PLUGIN_HANDLED
                }
        }
        else
        {
                cmd_register_menu(id)
                EmitSound(id, REGS_LOCKED)
        }
        return PLUGIN_HANDLED
}

public cmd_bank_menu_handler2(id, menu, item)
{
        if(loggedin[id] == true && get_pcvar_num(cvar_menustyle) == 2)
        {
                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 [Banco]Sacar_Quantidade")
                        case 2: cmd_bank_withdrawall(id)
                        case 3: client_cmd(id, "messagemode [Banco]Depositar_Quantidade")
                        case 4: cmd_bank_depositall(id)
                }
                if(key != 0 && key != 1 && key != 2 && key != 3 && key != 4)
                {
                        cmd_bank_menu(id)
                        return PLUGIN_HANDLED
                }
        }
        else
        {
                cmd_register_menu(id)
                EmitSound(id, REGS_LOCKED)
        }
        return PLUGIN_HANDLED
}

public cmd_bank_withdrawamount_check(id)
{
        if(loggedin[id] == true)
        {
                new amout[30]
                read_args(amout, charsmax(amout))
                remove_quotes(amout)

                if(!valid_ammt(amout, strlen(amout)))
                {
                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_QUANTITY_INVALID")
                        EmitSound(id, BANK_LOCKED)

                        return PLUGIN_HANDLED
                }

                new data1[30]; fvault_get_data(bank_dados, g_name[id], data1, charsmax(data1))

                new want = str_to_num(amout)
                new have = str_to_num(data1)

                if(want > have)
                {
                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_NOT_HAVE_AP_BANK", want)
                        EmitSound(id, BANK_LOCKED)

                        return PLUGIN_HANDLED
                }

                zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) + want)
 
                num_to_str(have - want, amout, charsmax(amout))
                fvault_set_data(bank_dados, g_name[id], amout)

                client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_TAKE_AP", want)
                EmitSound(id, BANK_ACCEPTED)
        }
        else
        {
                cmd_register_menu(id)
        }
        return PLUGIN_HANDLED
}

public cmd_bank_withdrawall(id)
{
        if(loggedin[id] == true)
        {
                new data1[30]; fvault_get_data(bank_dados, 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")
                        fvault_set_data(bank_dados, g_name[id], string1)

                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_TAKE_AP", have)
                        EmitSound(id, BANK_ACCEPTED)
                }
                else
                {
                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_HAVE_0AP_BANK")
                        EmitSound(id, BANK_LOCKED)
                }
        }
        else
        {
                cmd_register_menu(id)
        }
}

public cmd_bank_depositamount_check(id)
{
        if(loggedin[id] == true)
        {
                new amout[30]
                read_args(amout, charsmax(amout))
                remove_quotes(amout)

                if(!valid_ammt(amout, strlen(amout)))
                {
                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_QUANTITY_INVALID")
                        EmitSound(id, BANK_LOCKED)

                        return PLUGIN_HANDLED
                }
     
                new want = str_to_num(amout)
                new aps = zp_get_user_ammo_packs(id)

                if(want > aps)
                {
                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_NOT_HAVE_AP", want)
                        EmitSound(id, BANK_LOCKED)

                        return PLUGIN_HANDLED
                }

                new data1[30]; fvault_get_data(bank_dados, g_name[id], data1, charsmax(data1))
                new aps_bank = str_to_num(data1)

                new save_aps = aps_bank + want

                num_to_str(save_aps, amout, charsmax(amout))
                fvault_set_data(bank_dados, g_name[id], amout)
                zp_set_user_ammo_packs(id, zp_get_user_ammo_packs(id) - want)
       
                client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_SAVE_AP", want)
                client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_BALANCE_BANK", aps_bank + want)
                EmitSound(id, BANK_ACCEPTED)
        }
        else
        {
                cmd_register_menu(id)
        }
        return PLUGIN_HANDLED
}       

public cmd_bank_depositall(id)
{
        if(loggedin[id] == true)
        {
                new aps = zp_get_user_ammo_packs(id)

                if(aps == 0)
                {
                        client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_HAVE_0AP")
                        EmitSound(id, BANK_LOCKED)

                        return PLUGIN_HANDLED
                }

                new aps_have[30]; fvault_get_data(bank_dados, g_name[id], aps_have, 29)
         
                new result = aps + str_to_num(aps_have)

                new aps2[30]
                formatex(aps2, charsmax(aps2), "%i", result)
                fvault_set_data(bank_dados, g_name[id], aps2)
                zp_set_user_ammo_packs(id, 0)
       
                client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_SAVE_AP", aps)
                client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_BALANCE_BANK", result)
                EmitSound(id, BANK_ACCEPTED)
        }
        else
        {
                cmd_register_menu(id)
        }
        return PLUGIN_HANDLED
}

bool:valid_ammt(const ammt[], len)
{
        static const valid_chars[][] = { "0" ,"1" ,"2" ,"3" ,"4" ,"5" ,"6" ,"7" ,"8" ,"9" }
        static i, a, valids;
     
        valids = 0

        for(i = 0; i < len; i++)
        {
                for(a = 0; a < sizeof(valid_chars); a++)
                {
                        if(ammt[i] == valid_chars[a][0])
                        {
                                valids++
                                break
                        }
                }
        }
        if(valids != len)
                return false
        return true
}

/////////////////////////////////////////////////////////////////////
///////////////////////// Hook Say Commands /////////////////////////
/////////////////////////////////////////////////////////////////////

public cmdsave(id)
{
        new aps = zp_get_user_ammo_packs(id)
         
        if(aps == 0)
        {
                return PLUGIN_HANDLED;
        }

        new aps_have[30]
        fvault_get_data(bank_dados, g_name[id], aps_have, 29)
         
        new result = aps + str_to_num(aps_have)

        new aps2[30]
        formatex(aps2, charsmax(aps2), "%i", result)
        fvault_set_data(bank_dados, g_name[id], aps2)

        zp_set_user_ammo_packs(id, 0)

        return PLUGIN_CONTINUE
}

public HookSayCommands(id, value, amout)
{
        new text[70], arg1[32], arg2[32], arg3[6];
        read_args(text, sizeof(text) - 1);
        remove_quotes(text);
        arg1[0] = '^0';
        arg2[0] = '^0';
        arg3[0] = '^0';
        parse(text, arg1, sizeof(arg1) - 1, arg2, sizeof(arg2) - 1, arg3, sizeof(arg3) - 1);

        if (equali(arg1, "/", 1) || equali(arg1, ".", 1) || equali(arg1, "!", 1))
                format(arg1, 31, arg1[1]);

        if (arg3[0])
                return PLUGIN_CONTINUE;

        if (equali(arg1, "conta") || equali(arg1, "account") || equali(arg1, "registro")
        || equali(arg1, "register") || equali(arg1, "reg") || equali(arg1, "login"))
        {
                cmd_register_menu(id)

                return PLUGIN_HANDLED
        }
        if (equali(arg1, "admin") || equali(arg1, "adm"))
        {
                if (equali(arg2, "menus") || equali(arg2, "menu")
                || equali(arg2, "comandos") || equali(arg2, "comando")
                || equali(arg2, "commands") || equali(arg2, "command")
                || equali(arg2, "cmds") || equali(arg2, "cmd"))
                {
                        cmd_admin_menu(id)

                        return PLUGIN_HANDLED
                }
                return PLUGIN_CONTINUE
        }
        if(loggedin[id] == true)
        {
                if (equali(arg1, "banco") || equali(arg1, "bank"))
                {
                        cmd_bank_menu(id)

                        return PLUGIN_HANDLED
                }
                else if (equali(arg1, "sacar") || equali(arg1, "take"))
                {
                        if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
                        {
                                cmd_bank_withdrawamount_check(id)

                                return PLUGIN_HANDLED
                        }
                        else if (equali(arg2, "tudo") || equali(arg2, "all"))
                        {
                                cmd_bank_withdrawall(id)

                                return PLUGIN_HANDLED
                        }
                        return PLUGIN_CONTINUE
                }
                else if (equali(arg1, "depositar") || equali(arg1, "deposit") || equali(arg1, "save"))
                {
                        if (isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
                        {
                                cmd_bank_depositamount_check(id)

                                return PLUGIN_HANDLED
                        }
                        else if (equali(arg2, "tudo") || equali(arg2, "all"))
                        {
                                cmd_bank_depositall(id)

                                return PLUGIN_HANDLED
                        }
                        return PLUGIN_CONTINUE
                }
                else if (equali(arg1, "saldo"))
                {
                        if (!arg2[0])
                        {
                                new data1[30]
                                fvault_get_data(bank_dados, g_name[id], data1, charsmax(data1))
                                client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_BALANCE_M3", data1);
                        }
                        else
                        {
                                new id2 = cmd_target(id, arg2, 2)
                                if (!id2)
                                        return PLUGIN_CONTINUE

                                static id2name[32]
                                get_user_name(id2, id2name, 31)
                                new data1[30]
                                fvault_get_data(bank_dados, g_name[id2], data1[id2], charsmax(data1))
                                client_printcolor(id, "%L %L", LANG_PLAYER, "TAG", LANG_PLAYER, "BANK_BALANCE_PLAYER", id2name, data1[id2])

                                return PLUGIN_HANDLED
                        }
                        return PLUGIN_CONTINUE
                }
                return PLUGIN_CONTINUE
        }
        else
        {
                cmd_register_menu(id)
        }
        return PLUGIN_CONTINUE
}

//////////////////////////////////////////////////////////
///////////////////////// Stocks /////////////////////////
//////////////////////////////////////////////////////////

stock EmitSound(index, sound)
{
        switch(sound)
        {
                case REGS_ACCEPTED: client_cmd(index, "spk GuhRDS/regs_accepted_v2")
                case REGS_LOCKED: client_cmd(index, "spk GuhRDS/regs_locked_v2")
                case BANK_ACCEPTED: client_cmd(index, "spk GuhRDS/bank_accepted_v2")
                case BANK_LOCKED: client_cmd(index, "spk GuhRDS/bank_locked_v2")
        }
}

stock client_printcolor(target, const message[], any:...)
{
        static buffer[512], i, argscount;
        argscount = numargs();

        static g_msgSayText, g_MaxPlayers;
        if(!g_msgSayText)
        {
                g_msgSayText = get_user_msgid("SayText");
        }
        if(!g_MaxPlayers)
        {
                g_MaxPlayers = get_maxplayers();
        }
        if (!target)
        {
                static player;
                for (player = 1; player <= g_MaxPlayers; player++)
                {
                        if (!is_user_connected(player))
                                continue;

                        static changed[5], changedcount;
                        changedcount = 0;

                        for (i = 2; i < argscount; i++)
                        {
                                if (getarg(i) == LANG_PLAYER)
                                {
                                        setarg(i, 0, player);
                                        changed[changedcount] = i;
                                        changedcount++;
                                }
                        }
                        vformat(buffer, charsmax(buffer), message, 3);

                        replace_all(buffer, charsmax(buffer), "!g", "^4");
                        replace_all(buffer, charsmax(buffer), "!y", "^1");
                        replace_all(buffer, charsmax(buffer), "!t", "^3");

                        message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player);
                        write_byte(player);
                        write_string(buffer);
                        message_end();
                        for (i = 0; i < changedcount; i++)
                        setarg(changed[i], 0, LANG_PLAYER);
                }
        }
        else
        {
                vformat(buffer, charsmax(buffer), message, 3);

                replace_all(buffer, charsmax(buffer), "!g", "^4");
                replace_all(buffer, charsmax(buffer), "!y", "^1");
                replace_all(buffer, charsmax(buffer), "!t", "^3");

                message_begin(MSG_ONE, g_msgSayText, _, target);
                write_byte(target);
                write_string(buffer);
                message_end();
        }
}

////////////////////////////////////////////////////////
///////////////////////// Logs /////////////////////////
////////////////////////////////////////////////////////

LogsRegister(const message_fmt[], any:...)
{
        static message[500]
        vformat(message, sizeof(message) - 1, message_fmt, 2)

        static filename[96]
        new base[51], fr_data[51]
        get_basedir(base, 50)

        if(!filename[0])
        {
                get_basedir(filename, sizeof(filename) - 1)
                add(filename, sizeof(filename) - 1, "logs/register_history.log")
        }
        format_time(fr_data, sizeof(filename) - 1, "%d-%m-%Y")
        format(filename, sizeof(filename) - 1, "%s/logs/register_history_%s.log", base, fr_data)

        log_to_file(filename, "%s", message)
}

LogsErrorPass(const message_fmt[], any:...)
{
        static message[500]
        vformat(message, sizeof(message) - 1, message_fmt, 2)

        static filename[96]
        new base[51], fr_data[51]
        get_basedir(base, 50)

        if(!filename[0])
        {
                get_basedir(filename, sizeof(filename) - 1)
                add(filename, sizeof(filename) - 1, "logs/login-pass_error_history.log")
        }
        format_time(fr_data, sizeof(filename) - 1, "%d-%m-%Y")
        format(filename, sizeof(filename) - 1, "%s/logs/login-pass_error_history_%s.log", base, fr_data)
 
        log_to_file(filename, "%s", message);
}


LogsNotLogged(const message_fmt[], any:...)
{
        static message[500]
        vformat(message, sizeof(message) - 1, message_fmt, 2)
 
        static filename[96]
        new base[51], fr_data[51]
        get_basedir(base, 50)

        if(!filename[0])
        {
                get_basedir(filename, sizeof(filename) - 1)
                add(filename, sizeof(filename) - 1, "logs/not_loggedkick_history.log")
        }
        format_time(fr_data, sizeof(filename) - 1, "%d-%m-%Y")
        format(filename, sizeof(filename) - 1, "%s/logs/not_loggedkick_history_%s.log", base, fr_data)
 
        log_to_file(filename, "%s", message)
}

sorry my bad English.
I use google translate.

pokemonmaster 09-18-2012 16:42

Re: [ZP BANK + REGISTER FVAULT] Help Please
 
So your saying that when the server crashs, player looses all of his ammopacks (saved ammopacks included)?

arcadecs 09-18-2012 16:46

Re: [ZP BANK + REGISTER FVAULT] Help Please
 
not, only ammo packs that was not on the bench

pokemonmaster 09-18-2012 16:57

Re: [ZP BANK + REGISTER FVAULT] Help Please
 
Quote:

Originally Posted by arcadecs (Post 1802034)
not, only ammo packs that was not on the bench

OK, I understood it now.
I will try to fix it, but my method will save awarded ammopacks when a new round starts, so it might not save ammopacks taken after that ....

arcadecs 09-18-2012 17:00

Re: [ZP BANK + REGISTER FVAULT] Help Please
 
ok, I'm waiting, thanks

pokemonmaster 09-18-2012 17:30

Re: [ZP BANK + REGISTER FVAULT] Help Please
 
Quote:

Originally Posted by arcadecs (Post 1802044)
ok, I'm waiting, thanks

Try this
PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <dhudmessage>
#include <fakemeta>
#include <fvault>
#include <zombieplague>

const KEYSMENU MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
 
enum
{
        
REGS_ACCEPTED,
        
REGS_LOCKED,
        
BANK_ACCEPTED,
        
BANK_LOCKED
}

new const 
register_dados[] = "zp_register"
new const bank_dados[] = "zp_bank"

#define is_valid_player(%1) (1 <= %1 <= 32)
#define ADMIN_LEVEL ADMIN_IMMUNITY

new name[33][100]
new 
password[33][100]
new 
name_log[33][100]
new 
password2[33][100]
new 
g_name[33][100]
new 
g_tentativas[33]

new 
bool:loggedin[33]

new 
cvar_menustylecvar_punhishcvar_tentativascvar_bantimeg_pMaxAmmoPacks

new bool:g_bSawMotd[33]
#define MOTD_FLAG_ARG 1
#define MOTD_FLAG_END 1
#define m_iMenuCode 205

new PlayerID[33]

new 
szText[555 char]

public 
plugin_init()
{
    
register_plugin("[ZP] Register + Bank""2.5""Mottzi/GuhRDS")
    
register_dictionary("zp_GuhRDS.txt")

    
cvar_menustyle    register_cvar("zp_menu_style""1")            //
    
cvar_punhish    register_cvar("zp_error-pass_punish""2")        // 1 - Kick | 2 - Ban
    
cvar_tentativas register_cvar("zp_error-pass_amount""3")        // Errar 3 Vezes
    
cvar_bantime    register_cvar("zp_error-pass_punish-bantime""5")    // Tempo do Ban
    
g_pMaxAmmoPacks register_cvar("zpbank_max_ammopacks""100")

    
register_clcmd("jointeam""check_status")
    
register_clcmd("chooseteam""check_status")
    
register_clcmd("say""HookSayCommands")
    
register_clcmd("say_team""HookSayCommands")

    
register_clcmd("[Registrar]Login_Nome""cmd_register_loginname_check")
    
register_clcmd("[Registrar]Login_Senha""cmd_register_loginpw_check")
    
register_clcmd("[Logar]Login_Nome""cmd_login_loginname_check")
    
register_clcmd("[Logar]Login_Senha""cmd_login_loginpw_check")
    
register_clcmd("[Banco]Sacar_Quantidade""cmd_bank_withdrawamount_check")
    
register_clcmd("[Banco]Depositar_Quantidade""cmd_bank_depositamount_check")

    
register_concmd("zp_account_list""cmdShowList"ADMIN_LEVEL"zp_account_list")
    
register_concmd("zp_account_setap""cmdSetAp"ADMIN_LEVEL"zp_account_setap <Nome da Conta> <Quantiade de Ammo Packs>")

    
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu")
    
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu")
    
register_message(get_user_msgid("MOTD"), "message_MOTD")

    
register_logevent("round_first"2"0=World triggered""1&Restart_Round_")
    
register_logevent("round_first"2"0=World triggered""1=Game_Commencing")

    
register_menu("Register"KEYSMENU"cmd_register_menu_handler1")
    
register_menu("Bank"KEYSMENU"cmd_bank_menu_handler1")
}

public 
plugin_precache()
{
    
precache_sound("GuhRDS/regs_accepted_v2.wav")
    
precache_sound("GuhRDS/regs_locked_v2.wav")
    
precache_sound("GuhRDS/bank_accepted_v2.wav")
    
precache_sound("GuhRDS/bank_locked_v2.wav")
}

public 
client_connect(id)
{
    
remove_task(id)
}

public 
client_putinserver(id)
{
    
g_bSawMotd[id] = false

    loggedin
[id] = false
    g_tentativas
[id] = 0
    g_name
[id] = "Nao esta Logado"

    
set_task(1.0"check_status"id)

    return 
PLUGIN_CONTINUE
}

public 
client_disconnect(id)
{
    
cmdsave(id)
    
    
loggedin[id] = false
    g_tentativas
[id] = 0
    g_name
[id] = "Nao esta Logado"
    
    
remove_task(id)
}

public 
check_status(id)
{
    new 
players[32], pnumtempid;
    
get_players(playerspnum);

    for(new 
ii<pnumi++)
    {
        
tempid players[i];

        if(!
loggedin[tempid])
        {
            
cmd_register_menu(id)
            
set_task(60.0"check_login"id)
        }
    }
}

public 
zp_round_ended(winteam)
{
    new 
iPlayers[32], iCountiPlayeriNumiPacks
    get_players
(iPlayersiCount)
    new 
iMaxAmmoPacks get_pcvar_num(g_pMaxAmmoPacks)
    
    for(new 
iiCounti++)
    {
        
iPlayer iPlayers[i]
        
iPacks zp_get_user_ammo_packs(iPlayer)
        
        if(
iPacks iMaxAmmoPacks)
        {
            
iNum iPacks iMaxAmmoPacks
            zp_set_user_ammo_packs
(iPlayeriMaxAmmoPacks)
            
            new 
data1[30]; fvault_get_data(bank_dadosg_name[iPlayer], data1charsmax(data1))
            new 
aps_bank str_to_num(data1)

            new 
save_aps aps_bank iNum

            num_to_str
(save_apsdata1charsmax(data1))
            
fvault_set_data(bank_dadosg_name[iPlayer], data1)
        }
    }
}
            
        

public 
check_login(id)
{
    if(
loggedin[id] == false)
    {
        
server_cmd("kick #%i Nao logou"get_user_userid(id))

        new 
Nick[33], Ip[13], SteamID[51]

        
get_user_ip(idIp[id], 12)
        
get_user_authid(idSteamID[id], 50)
        
get_user_name(idNick[id], 32)
        
        
LogsNotLogged("------------------------------------------------------------------------------------------------------------------------")
        
LogsNotLogged("Registro: Jogador Kickado | Motivo: N?o Logou")
        
LogsNotLogged("Jogador: Nome: %s"Nick[id])
        
LogsNotLogged("Jogador: IP: %s"Ip[id])
        
LogsNotLogged("Jogador: SteamID: %s"SteamID[id])
        
LogsNotLogged("------------------------------------------------------------------------------------------------------------------------")
    }
}

////////////////////////////////////////////////////////////////////////////
///////////////////////// Hooks Select Team & Motd /////////////////////////
////////////////////////////////////////////////////////////////////////////

public message_ShowMenu(iMsgIDiDestiReceiver)
{
    new const 
Team_Select[] = "#Team_Select"
    
    
new szMenu[sizeof(Team_Select)]
    
get_msg_arg_string(4szMenucharsmax(szMenu))
    
    if(!
equal(szMenuTeam_Select))
    {
        return 
PLUGIN_CONTINUE
    
}
    
set_pdata_int(iReceiverm_iMenuCode0)
    
    return 
PLUGIN_HANDLED
}

public 
message_VGUIMenu(iMsgIDiDestiReceiver)
{
    if(
get_msg_arg_int(1) != 2)
    {
        return 
PLUGIN_CONTINUE
    
}
    return 
PLUGIN_HANDLED;
}

public 
message_MOTD(msgiddestid)
{
    if(!
g_bSawMotd[id])
    {
        if(
get_msg_arg_int(MOTD_FLAG_ARG) == MOTD_FLAG_END)
        {
            
g_bSawMotd[id] = true
        
}
        return 
PLUGIN_HANDLED
    
}
    return 
PLUGIN_CONTINUE
}

/////////////////////////////////////////////////////////////////////
///////////////////////// Events First Round/////////////////////////
/////////////////////////////////////////////////////////////////////

public round_first()
{
    
set_cvar_num("mp_limitteams"0)
    
set_cvar_num("mp_autoteambalance"0)
    
set_cvar_num("sv_restartround"1)
}

///////////////////////////////////////////////////////////////////////
///////////////////////// Sistema de Registro /////////////////////////
///////////////////////////////////////////////////////////////////////

public cmd_register_menu(id)
{
    if(
get_pcvar_num(cvar_menustyle) == 1)
    {
        static 
menu[240], len
        len 
0
        
        len 
+= formatex(menu[len], charsmax(menu) - len"%L^n^n"id"MENU_REGISTER_SYSTEM")
        if(
loggedin[id] == true)
            
len += formatex(menu[len], charsmax(menu) - len"\d1. %L^n"id"MENU_REGS_REGISTER")
        else
            
len += formatex(menu[len], charsmax(menu) - lenloggedin[id] ? "\d1. %L^n" "\r1. \w%L^n"id"MENU_REGS_REGISTER")
        
len += formatex(menu[len], charsmax(menu) - lenloggedin[id] ? "\d2. %L^n^n"    "\r2. \w%L^n^n"id"MENU_REGS_LOGAR")
        
len += formatex(menu[len], charsmax(menu) - lenloggedin[id] ? "\r3. \w%L^n"    "\d3. %L^n",     id"MENU_REGS_CHANGE_LOGIN-NAME")
        
len += formatex(menu[len], charsmax(menu) - lenloggedin[id] ? "\r4. \w%L^n^n"    "\d4. %L^n^n"id"MENU_REGS_CHANGE_LOGIN-PW")
        
len += formatex(menu[len], charsmax(menu) - lenloggedin[id] ? "\r5. \w%L^n^n"    "\d5. %L^n^n"id"MENU_REGS_ACCOUNT_EXIT")
        
len += formatex(menu[len], charsmax(menu) - lenloggedin[id] ? "\r0. \w%L^n"    "\d0. %L^n",     id"MENU_REGS_EXIT")

        
show_menu(idKEYSMENUmenu, -1"Register")
    }
    else if(
get_pcvar_num(cvar_menustyle) == 2)
    {
        
formatex(szTextcharsmax(szText), "%L"id"MENU_REGISTER_SYSTEM")
        new 
menu menu_create(szText"cmd_register_menu_handler2")
        if(
loggedin[id] == true)
            
formatex(szTextcharsmax(szText), "%L"id"MENU_REGS_REGISTER")
        else
            
formatex(szTextcharsmax(szText), loggedin[id] ? "\d%L" "\w%L"id"MENU_REGS_REGISTER")
        
menu_additem(menuszText"1"0)
        
formatex(szTextcharsmax(szText), loggedin[id] ? "\d%L^n" "\w%L^n",    id"MENU_REGS_LOGAR")
        
menu_additem(menuszText"2"0)
        
formatex(szTextcharsmax(szText), loggedin[id] ? "\w%L"   "\d%L",    id"MENU_REGS_CHANGE_LOGIN-NAME")
        
menu_additem(menuszText"3"0)
        
formatex(szTextcharsmax(szText), loggedin[id] ? "\w%L^n" "\d%L^n",    id"MENU_REGS_CHANGE_LOGIN-PW")
        
menu_additem(menuszText"4"0)
        
formatex(szTextcharsmax(szText), loggedin[id] ? "\w%L"   "\d%L",    id"MENU_REGS_ACCOUNT_EXIT")
        
menu_additem(menuszText"5"0)

        
menu_display(idmenu0)
    }
}

public 
cmd_register_menu_handler1(idkey)
{
    if(
get_pcvar_num(cvar_menustyle) == 1)
    {
        switch(
key)
        {
            case 
0cmd_register_check(id)
            case 
1cmd_login_check(id)
            case 
2cmd_register_menu(id)
            case 
3cmd_register_menu(id)
            case 
4cmd_logout(id)
            case 
9check_login(id)
        }
        if(
key != && key != && key != && key != && key != && key != 9)
        {
            
cmd_register_menu(id)
            return 
PLUGIN_HANDLED
        
}
    }
    return 
PLUGIN_HANDLED
}

public 
cmd_register_menu_handler2(idmenuitem)
{
    if(
get_pcvar_num(cvar_menustyle) == 2)
    {
        new 
data[6], iName[64], accesscallback
        menu_item_getinfo
(menuitemaccessdata5iName63callback)
        new 
key str_to_num(data)

        switch(
key)
        {
            case 
1cmd_register_check(id)
            case 
2cmd_login_check(id)
            case 
3cmd_register_menu(id)
            case 
4cmd_register_menu(id)
            case 
5cmd_logout(id)
            case 
0check_login(id)
        }
        if(
key != && key != && key != && key != && key != && key != 0)
        {
            
cmd_register_menu(id)
            return 
PLUGIN_HANDLED
        
}
    }
    return 
PLUGIN_HANDLED
}

public 
cmd_register_check(id)
{
    if(
loggedin[id] == true)
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_YOU_ARE_LOGGED")
        
EmitSound(idREGS_LOCKED)

        
cmd_register_menu(id)
    }
    else
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_TYPE_REGISTER_LOGIN_ACCOUNT")
        
EmitSound(idREGS_ACCEPTED)

        
client_cmd(id"messagemode [Registrar]Login_Nome")
    }
}

public 
cmd_register_loginname_check(id)
{
    
read_args(name[id], 99)
    
remove_quotes(name[id])
    new 
name2[33][100]

    if(
loggedin[id] == true)
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_YOU_ARE_LOGGED")
        
EmitSound(idREGS_LOCKED)

        
cmd_register_menu(id)
    }
    else
    {
        if(
fvault_get_data(register_dadosname[id], name2[id], 99) == && containi(name[id], " ") == -1)
        {
            
set_dhudmessage(02550, -1.00.005.00.011.51.5)
            
show_dhudmessage(id"%L"LANG_PLAYER"REGS_TYPE_REGISTER_PASS_ACCOUNT")
            
EmitSound(idREGS_ACCEPTED)

            
client_cmd(id"messagemode [Registrar]Login_Senha")           
        }
        else if(
fvault_get_data(register_dadosname[id], name2[id], 99) == 1)
        {
            
set_dhudmessage(02550, -1.00.007.00.012.02.0)
            
show_dhudmessage(id"%L^n%L"LANG_PLAYER"REGS_REGISTER_LOGIN_INVALID"LANG_PLAYER"TRY_AGAIN")
            
EmitSound(idREGS_LOCKED)

            
cmd_register_menu(id)
        }
    }
}

public 
cmd_register_loginpw_check(id)
{
    
read_args(password[id], 99)
    
remove_quotes(password[id])

    if(
loggedin[id] == true)
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_YOU_ARE_LOGGED")
        
EmitSound(idREGS_LOCKED)

        
cmd_register_menu(id)
    }
    else
    {
        if(
containi(password[id], " ") == -1)
        {
            
EmitSound(idREGS_ACCEPTED)

            
fvault_set_data(register_dadosname[id], password[id])

            
loggedin[id] = true
            g_name
[id] = name[id]

            
remove_task(id)

            
client_cmd(id"jointeam 5")

            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"REGS_ACCOUNTNEW_CREATED")
            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"REGS_ACCOUNTNEW_LOGIN"name[id])
            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"REGS_ACCOUNTNEW_PASSWORD"password[id])

            
LogsRegister("------------------------------------------------------------------------------------------------------------------------")
            
LogsRegister("Registro: Novos Dados Adcionados")
            
LogsRegister("Login: %s"name[id])
            
LogsRegister("Senha: %s"password[id])
            
LogsRegister("------------------------------------------------------------------------------------------------------------------------")
        }            
        else
        {
            
set_dhudmessage(02550, -1.00.007.00.012.02.0)
            
show_dhudmessage(id"%L^n%L"LANG_PLAYER"REGS_REGISTER_PASS_INVALID"LANG_PLAYER"TRY_AGAIN")
            
EmitSound(idREGS_LOCKED)

            
client_cmd(id"messagemode [Registrar]Login_Senha")
        }
    }
}

public 
cmd_login_check(id)
{
    if(
loggedin[id] == false)
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_TYPE_LOGIN_ACCOUNT")

        
client_cmd(id"messagemode [Logar]Login_Nome")
    }
    else if(
loggedin[id] == true)
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_YOU_ARE_LOGGED")
        
EmitSound(idREGS_LOCKED)

        
cmd_register_menu(id)
    }
}

public 
cmd_login_loginname_check(id)
{
    
read_args(name_log[id], 99)
    
remove_quotes(name_log[id])
    new 
name2[33][100]

    if(
loggedin[id] == false)
    {
        if(
fvault_get_data(register_dadosname_log[id], name2[id], 99) == 0)
        {
            
EmitSound(idREGS_LOCKED)
            
cmd_register_menu(id)

            
set_dhudmessage(02550, -1.00.007.00.012.02.0)
            
show_dhudmessage(id"%L^n%L"LANG_PLAYER"REGS_LOGIN_NAME_INVALID"LANG_PLAYER"TRY_AGAIN")
        }
        else
        {
            
EmitSound(idREGS_ACCEPTED)
            
client_cmd(id"messagemode [Logar]Login_Senha")

            
set_dhudmessage(02550, -1.00.005.00.011.51.5)
            
show_dhudmessage(id"%L"LANG_PLAYER"REGS_TYPE_REGISTER_PASS_ACCOUNT")
        }
    }
    else if(
loggedin[id] == true)
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_YOU_ARE_LOGGED")
        
EmitSound(idREGS_LOCKED)

        
cmd_register_menu(id)
    }
}

public 
cmd_login_loginpw_check(id)
{
     
read_args(password2[id], 99)
    
remove_quotes(password2[id])
    new 
data[140]

    if(
loggedin[id] == false)
    {
        
fvault_get_data(register_dadosname_log[id], data139)

        if(
equali(datapassword2[id]))
        {
            
EmitSound(idREGS_ACCEPTED)

            
loggedin[id] = true
            g_name
[id] = name_log[id]

            
remove_task(id)

            
client_cmd(id"jointeam 5")

            new 
Nick[33], Ip[13], SteamID[51]

            
get_user_ip(idIp[id], 12)
            
get_user_authid(idSteamID[id], 50)
            
get_user_name(idNick[id], 32)
        }
        else
        {
            
EmitSound(idREGS_LOCKED)
            
cmd_register_menu(id)
            
g_tentativas[id]++
            
check_punish(id)

            
set_dhudmessage(02550, -1.00.007.00.012.02.0)
            
show_dhudmessage(id"%L^n%L"LANG_PLAYER"REGS_LOGIN_PASS_INVALID"LANG_PLAYER"TRY_AGAIN")
        }
    }
    else if(
loggedin[id] == true)
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_YOU_ARE_LOGGED")
        
EmitSound(idREGS_LOCKED)

        
cmd_register_menu(id)
    }
}

public 
check_punish(id)
{   
    if(
g_tentativas[id] >= get_pcvar_num(cvar_tentativas))
    {
        new 
punish get_pcvar_num(cvar_punhish)
        if(
punish <= || punish >= 3)
            return 
PLUGIN_HANDLED

        
new Nick[33], Ip[13], SteamID[51];

        
get_user_ip(idIp[id], 12)
        
get_user_authid(idSteamID[id], 50)
        
get_user_name(idNick[id], 32)

        if(
punish == 1)
        {
            
server_cmd("kick #%i foi kickado por errar a senha muitas vezes"get_user_userid(id))
            
LogsErrorPass("------------------------------------------------------------------------------------------------------------------------")
            
LogsErrorPass("Registro: Jogador Kickado | Motivo: Errou A Senha Muitas Vezes.")
            
LogsErrorPass("Jogador: Nome: %s"Nick[id])
            
LogsErrorPass("Jogador: IP: %s"Ip[id])
            
LogsErrorPass("Jogador: SteamID: %s"SteamID[id])
            
LogsErrorPass("------------------------------------------------------------------------------------------------------------------------")
            return 
PLUGIN_HANDLED
        
}
        if(
punish == 2)
        {
            
server_cmd("amx_banip #%i %i ^"foi banido %d minutos por errar a senha %s vezes^""get_user_userid(id), get_pcvar_num(cvar_bantime), get_pcvar_num(cvar_bantime), get_pcvar_num(cvar_tentativas))
            
LogsErrorPass("------------------------------------------------------------------------------------------------------------------------")
            
LogsErrorPass("Registro: Jogador Banido | Motivo: Errou A Senha Muitas Vezes.")
            
LogsErrorPass("Jogador: Nome: %s"Nick[id])
            
LogsErrorPass("Jogador: IP: %s"Ip[id])
            
LogsErrorPass("Jogador: SteamID: %s"SteamID[id])
            
LogsErrorPass("------------------------------------------------------------------------------------------------------------------------")
        }
    }
    return 
PLUGIN_CONTINUE
}

public 
cmd_logout(id)
{
    if(
loggedin[id] == false)
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_YOU_ARE_NOT_LOGGED")
        
EmitSound(idREGS_LOCKED)

        
cmd_register_menu(id)
    }
    else
    {
        
set_dhudmessage(02550, -1.00.005.00.011.51.5)
        
show_dhudmessage(id"%L"LANG_PLAYER"REGS_LOGOUT_SUCESS")
        
EmitSound(idREGS_ACCEPTED)

        
user_silentkill(id)
        
cs_set_user_team(idCS_TEAM_UNASSIGNED)

        
loggedin[id] = false
        g_name
[id] = "Nao esta Logado"

        
check_status(id)
    }
}

////////////////////////////////////////////////////////////////////
///////////////////////// Sistema de Banco /////////////////////////
////////////////////////////////////////////////////////////////////

public cmd_bank_menu(id)
{
    if(
loggedin[id] == true && get_pcvar_num(cvar_menustyle) == 1)
    {
        static 
menu[240], len
        len 
0

        
new data1[30]
        
fvault_get_data(bank_dadosg_name[id], data1charsmax(data1))

        
len += formatex(menu[len], charsmax(menu) - len"%L^n^n"id"MENU_BANK_SYSTEM")
        if(
equal(data1 ""))
            
len += formatex(menu[len], charsmax(menu) - len"%L^n%L^n^n",    id"MENU_BANK_ACCOUNT"g_name[id], id"MENU_BANK_BALANCE0")
        else
            
len += formatex(menu[len], charsmax(menu) - len"%L^n%L^n^n",    id"MENU_BANK_ACCOUNT"g_name[id], id"MENU_BANK_BALANCE"data1)
        
len += formatex(menu[len], charsmax(menu) - len"\r1. \w%L^n",        id"MENU_BANK_TAKE_AMOUNT")
        
len += formatex(menu[len], charsmax(menu) - len"\r2. \w%L^n^n",    id"MENU_BANK_TAKE_ALL")
        
len += formatex(menu[len], charsmax(menu) - len"\r3. \w%L^n",        id"MENU_BANK_SAVE_AMOUNT")
        
len += formatex(menu[len], charsmax(menu) - len"\r4. \w%L^n^n",    id"MENU_BANK_SAVE_ALL")
        
len += formatex(menu[len], charsmax(menu) - len"\r0. \w%L",        id"MENU_BANK_EXIT")

        
show_menu(idKEYSMENUmenu, -1"Bank")
    }
    else if(
loggedin[id] == true && get_pcvar_num(cvar_menustyle) == 2)
    {
        new 
szText[100]

        new 
data1[30]
        
fvault_get_data("zp_rba_bank"g_name[id], data1charsmax(data1))
           
        if(
equal(data1 ""))
            
formatex(szTextcharsmax(szText), "%L^n^n%L^n%L"id"MENU_BANK_SYSTEM" id"MENU_BANK_ACCOUNT"g_name[id], id"MENU_BANK_BALANCE0")
        else
            
formatex(szTextcharsmax(szText), "%L^n^n%L^n%L"id"MENU_BANK_SYSTEM" id"MENU_BANK_ACCOUNT"g_name[id], id"MENU_BANK_BALANCE"data1)
        new 
menu menu_create(szText"cmd_bank_menu_handler2")       
        
formatex(szTextcharsmax(szText), "\w%L",   id"MENU_BANK_TAKE_AMOUNT")
        
menu_additem(menuszText"1"0)
        
formatex(szTextcharsmax(szText), "\w%L^n"id"MENU_BANK_TAKE_ALL")
        
menu_additem(menuszText"2"0)
        
formatex(szTextcharsmax(szText), "\w%L",   id"MENU_BANK_SAVE_AMOUNT")
        
menu_additem(menuszText"3"0)
        
formatex(szTextcharsmax(szText), "\w%L",   id"MENU_BANK_SAVE_ALL")
        
menu_additem(menuszText"4"0)
        
menu_display(idmenu0)
    }
}

public 
cmd_bank_menu_handler1(idkey)
{
    if(
loggedin[id] == true && get_pcvar_num(cvar_menustyle) == 1)
    {
        switch(
key)
        {
            case 
0client_cmd(id"messagemode [Banco]Sacar_Quantidade")
            case 
1cmd_bank_withdrawall(id)
            case 
2client_cmd(id"messagemode [Banco]Depositar_Quantidade")
            case 
3cmd_bank_depositall(id)
        }
        if(
key != && key != && key != && key != && key != 9)
        {
            
cmd_bank_menu(id)
            return 
PLUGIN_HANDLED
        
}
    }
    else
    {
        
cmd_register_menu(id)
        
EmitSound(idREGS_LOCKED)
    }
    return 
PLUGIN_HANDLED
}

public 
cmd_bank_menu_handler2(idmenuitem)
{
    if(
loggedin[id] == true && get_pcvar_num(cvar_menustyle) == 2)
    {
        new 
data[6], iName[64], accesscallback
        menu_item_getinfo
(menuitemaccessdata5iName63callback)
        new 
key str_to_num(data)

        switch(
key)
        {
            case 
1client_cmd(id"messagemode [Banco]Sacar_Quantidade")
            case 
2cmd_bank_withdrawall(id)
            case 
3client_cmd(id"messagemode [Banco]Depositar_Quantidade")
            case 
4cmd_bank_depositall(id)
        }
        if(
key != && key != && key != && key != && key != 4)
        {
            
cmd_bank_menu(id)
            return 
PLUGIN_HANDLED
        
}
    }
    else
    {
        
cmd_register_menu(id)
        
EmitSound(idREGS_LOCKED)
    }
    return 
PLUGIN_HANDLED
}

public 
cmd_bank_withdrawamount_check(id)
{
    if(
loggedin[id] == true)
    {
        new 
amout[30]
        
read_args(amoutcharsmax(amout))
        
remove_quotes(amout)

        if(!
valid_ammt(amoutstrlen(amout)))
        {
            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_QUANTITY_INVALID")
            
EmitSound(idBANK_LOCKED)

            return 
PLUGIN_HANDLED
        
}

        new 
data1[30]; fvault_get_data(bank_dadosg_name[id], data1charsmax(data1))

        new 
want str_to_num(amout)
        new 
have str_to_num(data1)

        if(
want have)
        {
            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_NOT_HAVE_AP_BANK"want)
            
EmitSound(idBANK_LOCKED)

            return 
PLUGIN_HANDLED
        
}

        
zp_set_user_ammo_packs(idzp_get_user_ammo_packs(id) + want)
   
        
num_to_str(have wantamoutcharsmax(amout))
        
fvault_set_data(bank_dadosg_name[id], amout)

        
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_TAKE_AP"want)
        
EmitSound(idBANK_ACCEPTED)
    }
    else
    {
        
cmd_register_menu(id)
    }
    return 
PLUGIN_HANDLED
}

public 
cmd_bank_withdrawall(id)
{
    if(
loggedin[id] == true)
    {
        new 
data1[30]; fvault_get_data(bank_dadosg_name[id], data1charsmax(data1))

        new 
have_hand  zp_get_user_ammo_packs(id)
        new 
have str_to_num(data1)

        if(
have 0)
        {
            
zp_set_user_ammo_packs(idhave_hand have)

            new 
string1[30]
             
formatex(string1charsmax(string1), "0")
            
fvault_set_data(bank_dadosg_name[id], string1)

            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_TAKE_AP"have)
            
EmitSound(idBANK_ACCEPTED)
        }
        else
        {
            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_HAVE_0AP_BANK")
            
EmitSound(idBANK_LOCKED)
        }
    }
    else
    {
        
cmd_register_menu(id)
    }
}

public 
cmd_bank_depositamount_check(id)
{
    if(
loggedin[id] == true)
    {
        new 
amout[30]
        
read_args(amoutcharsmax(amout))
        
remove_quotes(amout)

        if(!
valid_ammt(amoutstrlen(amout)))
        {
            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_QUANTITY_INVALID")
            
EmitSound(idBANK_LOCKED)

            return 
PLUGIN_HANDLED
        
}
       
        new 
want str_to_num(amout)
        new 
aps zp_get_user_ammo_packs(id)

        if(
want aps)
        {
            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_NOT_HAVE_AP"want)
            
EmitSound(idBANK_LOCKED)

            return 
PLUGIN_HANDLED
        
}

        new 
data1[30]; fvault_get_data(bank_dadosg_name[id], data1charsmax(data1))
        new 
aps_bank str_to_num(data1)

        new 
save_aps aps_bank want

        num_to_str
(save_apsamoutcharsmax(amout))
        
fvault_set_data(bank_dadosg_name[id], amout)
        
zp_set_user_ammo_packs(idzp_get_user_ammo_packs(id) - want)
    
        
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_SAVE_AP"want)
        
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_BALANCE_BANK"aps_bank want)
        
EmitSound(idBANK_ACCEPTED)
    }
    else
    {
        
cmd_register_menu(id)
    }
    return 
PLUGIN_HANDLED
}    

public 
cmd_bank_depositall(id)
{
    if(
loggedin[id] == true)
    {
        new 
aps zp_get_user_ammo_packs(id)

        if(
aps == 0)
        {
            
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_HAVE_0AP")
            
EmitSound(idBANK_LOCKED)

            return 
PLUGIN_HANDLED
        
}

        new 
aps_have[30]; fvault_get_data(bank_dadosg_name[id], aps_have29)
           
        new 
result aps str_to_num(aps_have)

        new 
aps2[30]
        
formatex(aps2charsmax(aps2), "%i"result)
        
fvault_set_data(bank_dadosg_name[id], aps2)
        
zp_set_user_ammo_packs(id0)
    
        
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_SAVE_AP"aps)
        
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_BALANCE_BANK"result)
        
EmitSound(idBANK_ACCEPTED)
    }
    else
    {
        
cmd_register_menu(id)
    }
    return 
PLUGIN_HANDLED
}

bool:valid_ammt(const ammt[], len)
{
    static const 
valid_chars[][] = { "0" ,"1" ,"2" ,"3" ,"4" ,"5" ,"6" ,"7" ,"8" ,"9" }
    static 
iavalids;
       
    
valids 0

    
for(0leni++)
    {
        for(
0sizeof(valid_chars); a++)
        {
            if(
ammt[i] == valid_chars[a][0])
            {
                
valids++
                break
            }
        }
    }
    if(
valids != len)
        return 
false
    
return true
}

/////////////////////////////////////////////////////////////////////
///////////////////////// Hook Say Commands /////////////////////////
/////////////////////////////////////////////////////////////////////

public cmdsave(id)
{
    new 
aps zp_get_user_ammo_packs(id)
          
    if(
aps == 0)
    {
        return 
PLUGIN_HANDLED;
    }

    new 
aps_have[30]
    
fvault_get_data(bank_dadosg_name[id], aps_have29)
          
    new 
result aps str_to_num(aps_have)

    new 
aps2[30]
    
formatex(aps2charsmax(aps2), "%i"result)
    
fvault_set_data(bank_dadosg_name[id], aps2)

    
zp_set_user_ammo_packs(id0)

    return 
PLUGIN_CONTINUE
}

public 
HookSayCommands(idvalueamout)
{
    new 
text[70], arg1[32], arg2[32], arg3[6];
    
read_args(textsizeof(text) - 1);
    
remove_quotes(text);
    
arg1[0] = '^0';
    
arg2[0] = '^0';
    
arg3[0] = '^0';
    
parse(textarg1sizeof(arg1) - 1arg2sizeof(arg2) - 1arg3sizeof(arg3) - 1);

    if (
equali(arg1"/"1) || equali(arg1"."1) || equali(arg1"!"1))
        
format(arg131arg1[1]);

    if (
arg3[0])
        return 
PLUGIN_CONTINUE;

    if (
equali(arg1"conta") || equali(arg1"account") || equali(arg1"registro")
    || 
equali(arg1"register") || equali(arg1"reg") || equali(arg1"login"))
    {
        
cmd_register_menu(id)

        return 
PLUGIN_HANDLED
    
}
    if (
equali(arg1"admin") || equali(arg1"adm"))
    {
        if (
equali(arg2"menus") || equali(arg2"menu")
        || 
equali(arg2"comandos") || equali(arg2"comando")
        || 
equali(arg2"commands") || equali(arg2"command")
        || 
equali(arg2"cmds") || equali(arg2"cmd"))
        {
            
cmd_admin_menu(id)

            return 
PLUGIN_HANDLED
        
}
        return 
PLUGIN_CONTINUE
    
}
    if(
loggedin[id] == true)
    {
        if (
equali(arg1"banco") || equali(arg1"bank"))
        {
            
cmd_bank_menu(id)

            return 
PLUGIN_HANDLED
        
}
        else if (
equali(arg1"sacar") || equali(arg1"take"))
        {
            if (
isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
            {
                
cmd_bank_withdrawamount_check(id)

                return 
PLUGIN_HANDLED
            
}
            else if (
equali(arg2"tudo") || equali(arg2"all"))
            {
                
cmd_bank_withdrawall(id)

                return 
PLUGIN_HANDLED
            
}
            return 
PLUGIN_CONTINUE
        
}
        else if (
equali(arg1"depositar") || equali(arg1"deposit") || equali(arg1"save"))
        {
            if (
isdigit(arg2[0]) || arg2[0] == '-' && isdigit(arg2[1]))
            {
                
cmd_bank_depositamount_check(id)

                return 
PLUGIN_HANDLED
            
}
            else if (
equali(arg2"tudo") || equali(arg2"all"))
            {
                
cmd_bank_depositall(id)

                return 
PLUGIN_HANDLED
            
}
            return 
PLUGIN_CONTINUE
        
}
        else if (
equali(arg1"saldo"))
        {
            if (!
arg2[0])
            {
                new 
data1[30]
                
fvault_get_data(bank_dadosg_name[id], data1charsmax(data1))
                
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_BALANCE_M3"data1);
            }
            else
            {
                new 
id2 cmd_target(idarg22)
                if (!
id2)
                    return 
PLUGIN_CONTINUE

                
static id2name[32]
                
get_user_name(id2id2name31)
                new 
data1[30]
                
fvault_get_data(bank_dadosg_name[id2], data1[id2], charsmax(data1))
                
client_printcolor(id"%L %L"LANG_PLAYER"TAG"LANG_PLAYER"BANK_BALANCE_PLAYER"id2namedata1[id2])

                return 
PLUGIN_HANDLED
            
}
            return 
PLUGIN_CONTINUE
        
}
        return 
PLUGIN_CONTINUE
    
}
    else
    {
        
cmd_register_menu(id)
    }
    return 
PLUGIN_CONTINUE
}

//////////////////////////////////////////////////////////
///////////////////////// Stocks /////////////////////////
//////////////////////////////////////////////////////////

stock EmitSound(indexsound)
{
        switch(
sound)
        {
                case 
REGS_ACCEPTEDclient_cmd(index"spk GuhRDS/regs_accepted_v2")
                case 
REGS_LOCKEDclient_cmd(index"spk GuhRDS/regs_locked_v2")
                case 
BANK_ACCEPTEDclient_cmd(index"spk GuhRDS/bank_accepted_v2")
                case 
BANK_LOCKEDclient_cmd(index"spk GuhRDS/bank_locked_v2")
        }
}

stock client_printcolor(target, const message[], any:...)
{
    static 
buffer[512], iargscount;
    
argscount numargs();

    static 
g_msgSayTextg_MaxPlayers;
    if(!
g_msgSayText)
    {
        
g_msgSayText get_user_msgid("SayText");
        }
    if(!
g_MaxPlayers)
    {
        
g_MaxPlayers get_maxplayers();
        }
        if (!
target)
        {
        static 
player;
        for (
player 1player <= g_MaxPlayersplayer++)
        {
            if (!
is_user_connected(player))
                continue;

            static 
changed[5], changedcount;
            
changedcount 0;

            for (
2argscounti++)
            {
                if (
getarg(i) == LANG_PLAYER)
                {
                    
setarg(i0player);
                    
changed[changedcount] = i;
                    
changedcount++;
                }
            }
            
vformat(buffercharsmax(buffer), message3);

            
replace_all(buffercharsmax(buffer), "!g""^4");
            
replace_all(buffercharsmax(buffer), "!y""^1");
            
replace_all(buffercharsmax(buffer), "!t""^3");

            
message_begin(MSG_ONE_UNRELIABLEg_msgSayText_player);
            
write_byte(player);
            
write_string(buffer);
            
message_end();
            for (
0changedcounti++)
            
setarg(changed[i], 0LANG_PLAYER);
        }
    }
        else
        {
        
vformat(buffercharsmax(buffer), message3);

        
replace_all(buffercharsmax(buffer), "!g""^4");
        
replace_all(buffercharsmax(buffer), "!y""^1");
        
replace_all(buffercharsmax(buffer), "!t""^3");

        
message_begin(MSG_ONEg_msgSayText_target);
        
write_byte(target);
        
write_string(buffer);
        
message_end();
    }
}

////////////////////////////////////////////////////////
///////////////////////// Logs /////////////////////////
////////////////////////////////////////////////////////

LogsRegister(const message_fmt[], any:...)
{
    static 
message[500]
    
vformat(messagesizeof(message) - 1message_fmt2)

    static 
filename[96]
    new 
base[51], fr_data[51]
    
get_basedir(base50)

    if(!
filename[0])
    {
        
get_basedir(filenamesizeof(filename) - 1)
        
add(filenamesizeof(filename) - 1"logs/register_history.log")
    }
    
format_time(fr_datasizeof(filename) - 1"%d-%m-%Y")
    
format(filenamesizeof(filename) - 1"%s/logs/register_history_%s.log"basefr_data)

    
log_to_file(filename"%s"message)
    
log_to_file(filename"%s"message)
}

LogsErrorPass(const message_fmt[], any:...)
{
    static 
message[500]
    
vformat(messagesizeof(message) - 1message_fmt2)

    static 
filename[96]
    new 
base[51], fr_data[51]
    
get_basedir(base50)

    if(!
filename[0])
    {
        
get_basedir(filenamesizeof(filename) - 1)
        
add(filenamesizeof(filename) - 1"logs/login-pass_error_history.log")
    }
    
format_time(fr_datasizeof(filename) - 1"%d-%m-%Y")
    
format(filenamesizeof(filename) - 1"%s/logs/login-pass_error_history_%s.log"basefr_data)
   
    
log_to_file(filename"%s"message);
}


LogsNotLogged(const message_fmt[], any:...)
{
    static 
message[500]
    
vformat(messagesizeof(message) - 1message_fmt2)
   
    static 
filename[96]
    new 
base[51], fr_data[51]
    
get_basedir(base50)

    if(!
filename[0])
    {
        
get_basedir(filenamesizeof(filename) - 1)
        
add(filenamesizeof(filename) - 1"logs/not_loggedkick_history.log")
    }
    
format_time(fr_datasizeof(filename) - 1"%d-%m-%Y")
    
format(filenamesizeof(filename) - 1"%s/logs/not_loggedkick_history_%s.log"basefr_data)
   
    
log_to_file(filename"%s"message)


This would save user's ammopacks in round end if it is bigger than this cvar value
zpbank_max_ammopacks - default value "100"
In other meaning, if the ammopacks number that the user is holding is bigger than that cvar value, ammopacks will get saved and the user will have zpbank_max_ammopacks value

hopefully google translate will translate what I said correctly :P


By the way, I coudln't compile plugin as I didn't have this function
PHP Code:

cmd_admin_menu(id

Maybe you forgot to copy it when you have put the plugin

arcadecs 09-18-2012 17:39

Re: [ZP BANK + REGISTER FVAULT] Help Please
 
no friend, you did wrong ..

When the server changes the map, resets the panel, or when the player disconnects from the server .. the ammopacks saves perfectly.

the ammopacks are not saved when the server goes down, and ammopacks are out of stock, what you did not have much sense.

plazma 01-08-2017 18:47

Re: [ZP BANK + REGISTER FVAULT] Help Please
 
Anyone fix this ?


All times are GMT -4. The time now is 08:15.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.