//DO NOT EDIT THIS FILE UNLESS YOU ARE AN ADVANCED SCRIPTER
//ALL CONFIGURATION OPTIONS CAN BE FOUND IN THE CONFIG FOLDER

block load
{
    es_xmakepublic ba_bank_version
    
    es_xloadevents declare addons/eventscripts/ba_bank/data/es_ba_bank.res
    
    es_xsql open ba_bank |ba_bank/data
    es_xsql query ba_bank "CREATE TABLE IF NOT EXISTS accounts (steamid VARCHAR(20) UNIQUE NOT NULL,name VARCHAR(40) NOT NULL,balance INTEGER NOT NULL,deposits INTEGER NOT NULL,withdrawals INTEGER NOT NULL,transfers INTEGER NOT NULL,autowithdraw BOOLEAN NOT NULL,time INTEGER NOT NULL);"
    
    es_xset bank_max_balance 0
    es_xset bank_start_balance 0
    es_xset bank_max_withdrawals 0
    es_xset bank_max_deposits 0
    es_xset bank_max_transfers 0
    es_xset bank_min_deposit 0
    es_xset bank_allow_autowithdrawal 0
    es_xset bank_pistol_round 0
    es_xset bank_buyzone_disable 0
    es_xset bank_inactive_days 0
    es_xset bank_interest_allow 0
    es_xset bank_interest_per_round 0
    es_xset bank_interest_amount 0
    es_xset bank_admins 0
    es_xset bank_menu_amount 0
    es_xset bank_userid 0
    es_xset bank_steamid 0
    es_xset bank_temp 0
    es_xset bank_transaction_allowed 0
    es_xset bank_denial_reason 0
    es_xset bank_round 0
    es_xset bank_output_text 0
    es_xset bank_transaction_amount 0
    es_xset bank_cash 0
    es_xset bank_balance 0
    es_xset bank_name 0
    es_xset bank_receiver_userid 0
    es_xset bank_receiver_steamid 0
    es_xset bank_player_time 0
    es_xset bank_current_time 0
    es_xset bank_temp_userid 0
    es_xset bank_interest_gained 0
    es_xset bank_disable 0
    es_xset bank_admin_check 0
    es_xset bank_commands "depositwithdrawtransferadmin"
    es_xset bank_auto_clear_inactive 0
    es_xset bank_query 0
    es_xset bank_count 0
    
    es_xexists bank_temp script popup
    ifx false(bank_temp) do
    {
        es_xload popup
    }
    
    es_xexists bank_temp script keymenu
    ifx false(bank_temp) do
    {
        es_xload keymenu
    }
    
    es_xexists bank_temp keygroup bank_menu_actions
    ifx false(bank_temp) do
    {
        es_xkeygroupcreate bank_menu_actions
    }
    else do
    {
        es_xkeygroupdelete bank_menu_actions
        es_xkeygroupcreate bank_menu_actions
    }

    es_xexists bank_temp keygroup bank_interest
    ifx false(bank_temp) do
    {
        es_xkeygroupcreate bank_interest
    }
    else do
    {
        es_xkeygroupdelete bank_interest
        es_xkeygroupcreate bank_interest
    }

    es_xexists bank_temp keygroup bank_admins
    ifx false(bank_temp) do
    {
        es_xkeygroupload bank_admins |ba_bank/config
    }
    
    es_xexists bank_temp saycommand bank
    ifx false(bank_temp) do
    {
        es_xregsaycmd bank ba_bank/bank "Opens the bank menu"
    }
    
    es_xexists bank_temp clientcommand bank
    ifx false(bank_temp) do
    {
        es_xregclientcmd bank ba_bank/bank "Opens the bank menu"
    }
    
    popup create bank_main
    popup addline bank_main "[ БАНК ] Главное Меню"
    popup addline bank_main "-------------------------------------"
    popup addline bank_main "->1. Положить деньги"
    popup addline bank_main "->2. Взять деньги"
    popup addline bank_main "->3. Послать деньги другу"
    popup addline bank_main "->4. Узнать сколько у вас денег"
    popup addline bank_main "->5. Автовыдача денег"
    popup addline bank_main "->6. 10-ка самых богатых"
    popup addline bank_main "-------------------------------------"
    popup addline bank_main "0. Выход"
    popup menuselect bank_main ba_bank/main_menuselect
    
    es_xexists bank_temp keygroup bank_deposit_amounts
    ifx false(bank_temp) do
    {
        es_xkeygroupload bank_deposit_amounts |ba_bank/config/menus
    }
    keymenu create bank_deposit bank_menu_amount ba_bank/bank_action bank_deposit_amounts #keyvalue text #key [ Положить денги ] Меню
    es_xkeygroupdelete bank_deposit_amounts
    
    es_xexists bank_temp keygroup bank_withdraw_amounts
    ifx false(bank_temp) do
    {
        es_xkeygroupload bank_withdraw_amounts |ba_bank/config/menus
    }
    keymenu create bank_withdraw bank_menu_amount ba_bank/bank_action bank_withdraw_amounts #keyvalue text #key [ Взять деньги ] Меню
    es_xkeygroupdelete bank_withdraw_amounts
    
    es_xexists bank_temp keygroup bank_transfer_amounts
    ifx false(bank_temp) do
    {
        es_xkeygroupload bank_transfer_amounts |ba_bank/config/menus
    }
    keymenu create bank_transfer bank_menu_amount ba_bank/bank_action bank_transfer_amounts #keyvalue text #key [ Послать деньги другу ] Меню
    es_xkeygroupdelete bank_transfer_amounts
    
    es_xexists bank_temp keygroup bank_admin_amounts
    ifx false(bank_temp) do
    {
        es_xkeygroupload bank_admin_amounts |ba_bank/config/menus
    }
    keymenu create bank_admin_cash bank_menu_amount ba_bank/bank_action bank_admin_amounts #keyvalue text #key [ Дать денег ] Меню
    es_xkeygroupdelete bank_admin_amounts
    
    popup create bank_settings
    popup addline bank_settings "[ Автовыдача денег ] Меню"
    popup addline bank_settings "-----------------------------------------"
    popup addline bank_settings "->1. Автовыдача денег"
    popup addline bank_settings "-----------------------------------------"
    popup addline bank_settings "0. Выход"
    popup prepuser bank_settings ba_bank/settings_prepuser
    popup menuselect bank_settings ba_bank/settings_menuselect
    
    popup create bank_admin
    popup addline bank_admin "[ Админ ] Меню"
    popup addline bank_admin "-----------------------------------------"
    popup addline bank_admin "->1. Дать денег"
    popup addline bank_admin "->2. Удалить все деньги у игрока"
    popup addline bank_admin "-----------------------------------------"
    popup addline bank_admin "0. Выход"
    popup menuselect bank_admin ba_bank/admin_menuselect
    
    es_xmexec ../addons/eventscripts/ba_bank/config/ba_bank_settings.cfg
    
    es_xmath bank_inactive_days * 86400
}

block unload
{
    es_xsql close ba_bank
    
    es_xunregsaycmd bank
    es_xunregclientcmd bank
    
    popup unsendname bank_main #all
    popup unsendname bank_settings #all
    popup unsendname bank_admin #all
    popup unsendname bank_top10 #all
    popup delete bank_main
    popup delete bank_settings
    popup delete bank_admin
    popup delete bank_top10
    
    keymenu delete bank_deposit
    keymenu delete bank_withdraw
    keymenu delete bank_transfer
    keymenu delete bank_admin_cash
    
    keymenu exists bank_temp bank_transfer_playerlist 
    ifx true(bank_temp) do
    {
        keymenu delete bank_transfer_playerlist
    }

    keymenu exists bank_temp bank_admin_playerlist 
    ifx true(bank_temp) do
    {
        keymenu delete bank_admin_playerlist
    }
     
    es_xkeygroupdelete bank_menu_actions
    es_xkeygroupdelete bank_interest
    es_xkeygroupdelete bank_admins
}

block main_menuselect
{
    if(server_var(_popup_choice) == 1) do
    {
        es_set bank_userid server_var(_popup_userid)
        es_xdoblock ba_bank/deposit_checks
       
        if(server_var(bank_transaction_allowed) == 1) do
        {
            es_keycreate bank_menu_actions server_var(_popup_userid)
            es_keysetvalue bank_menu_actions server_var(_popup_userid) action "deposit"
            es keymenu send bank_deposit server_var(_popup_userid)
        }
        else do
        {
            es_tell server_var(_popup_userid) #multi #green[ БАНК ]#lightgreen server_var(bank_denial_reason)
        }
    }
    if(server_var(_popup_choice) == 2) do
    {
        es_set bank_userid server_var(_popup_userid)
        es_xdoblock ba_bank/withdraw_checks
       
        if(server_var(bank_transaction_allowed) == 1) do
        {
            es_keycreate bank_menu_actions server_var(_popup_userid)
            es_keysetvalue bank_menu_actions server_var(_popup_userid) action "withdraw"
            es keymenu send bank_withdraw server_var(_popup_userid)
        }
        else do
        {
            es_tell server_var(_popup_userid) #multi #green[ БАНК ]#lightgreen server_var(bank_denial_reason)
        }
    }
    if(server_var(_popup_choice) == 3) do
    {
        es_set bank_userid server_var(_popup_userid)
        es_xdoblock ba_bank/transfer_checks
       
        if(server_var(bank_transaction_allowed) == 1) do
        {
            es_keycreate bank_menu_actions server_var(_popup_userid)
            es_keysetvalue bank_menu_actions server_var(_popup_userid) action "transfer"
            es keymenu send bank_transfer server_var(_popup_userid)
        }
        else do
        {
            es_tell server_var(_popup_userid) #multi #green[ БАНК ]#lightgreen server_var(bank_denial_reason)
        }
    }
    if(server_var(_popup_choice) == 4) do
    {
        es_getplayersteamid bank_steamid server_var(_popup_userid)
        es_xformatqv bank_query "SELECT balance FROM accounts WHERE steamid='%1';" bank_steamid
        es_sql queryvalue ba_bank bank_balance server_var(bank_query)
        es_xformatv bank_output_text "$%1" bank_balance
        es_tell server_var(_popup_userid) #multi #green[ БАНК ]#lightgreen Ваш счет составляет: server_var(bank_output_text)
    }   
    if(server_var(_popup_choice) == 5) then popup send bank_settings server_var(_popup_userid)
    if(server_var(_popup_choice) == 6) then es_xdoblock ba_bank/top10
}

block top10
{
    popup exists bank_top10 bank_temp
    ifx true(bank_temp) do
    {
        popup delete bank_top10
    }
    es_xsql query ba_bank bank_top10 "SELECT name,balance FROM accounts ORDER BY balance DESC LIMIT 10;"
    popup create bank_top10
    popup addline bank_top10 "[ БАНК ] 10-ка самых богатых"
    popup addline bank_top10 "--------------------------------------------"
    es_xset bank_count 0
    es_xforeachkey bank_temp in bank_top10 "es_xdoblock ba_bank/build_top10"
    popup addline bank_top10 "--------------------------------------------"
    popup addline bank_top10 "0. Выход"
    es_xkeygroupdelete bank_top10
    es popup send bank_top10 server_var(_popup_userid)
}

block build_top10
{
    es_keygetvalue bank_name bank_top10 server_var(bank_temp) name
    es_keygetvalue bank_balance bank_top10 server_var(bank_temp) balance
    es_xmath bank_count + 1
    popup addlinef bank_top10 "->%1. %2 - $%3" bank_count bank_name bank_balance
}

block settings_prepuser
{
    ifx false(bank_allow_autowithdrawal) do
    {
        popup modline bank_settings 3 "->1. Autowithdraw [Disabled]"
    }
    else do
    {
        es_set bank_userid server_var(_popup_userid)
        es_getplayersteamid bank_steamid server_var(bank_userid)
        es_xformatqv bank_query "SELECT autowithdraw FROM accounts WHERE steamid='%1';" bank_steamid
        es_sql queryvalue ba_bank bank_temp server_var(bank_query)
        
        ifx true(bank_temp) do
        {
            popup modline bank_settings 3 "->1. Автовыдача денег (вкл.)"
        }
        else do
        {
            popup modline bank_settings 3 "->1. Автовыдача денег (выкл.)"
        }
    }
}

block settings_menuselect
{
    if(server_var(_popup_choice) == 1) do
    {
        es_set bank_userid server_var(_popup_userid)
        es_getplayersteamid bank_steamid server_var(bank_userid)
        
        ifx false(bank_allow_autowithdrawal) do
        {
            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen The autowithdraw feature has been disabled
        }
        else do
        {
            es_xformatqv bank_query "SELECT autowithdraw FROM accounts WHERE steamid='%1';" bank_steamid
            es_sql queryvalue ba_bank bank_temp server_var(bank_query)
   
            ifx true(bank_temp) do
            {
                es_xformatqv bank_query "UPDATE accounts SET autowithdraw='0' WHERE steamid='%1';" bank_steamid
                es_sql query ba_bank server_var(bank_query)
                es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You have turned autowithdraw OFF
            }
            else do
            {
                es_xformatqv bank_query "UPDATE accounts SET autowithdraw='1' WHERE steamid='%1';" bank_steamid
                es_sql query ba_bank server_var(bank_query)
                es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You have turned autowithdraw ON
            }
        }
        
    }
}

block bank_action
{
    es_keysetvalue bank_menu_actions server_var(_popup_userid) amount server_var(bank_menu_amount)
    es_keygetvalue bank_temp bank_menu_actions server_var(_popup_userid) action
    
    if(server_var(bank_temp) == "deposit") then es_xdoblock ba_bank/menu_deposit
    if(server_var(bank_temp) == "withdraw") then es_xdoblock ba_bank/menu_withdraw
    if(server_var(bank_temp) == "transfer") do
    {
        keymenu exists bank_temp bank_transfer_playerlist 
        ifx true(bank_temp) do
        {
            keymenu delete bank_transfer_playerlist
        }
        es_xcreateplayerlist bank_players
        keymenu create bank_transfer_playerlist bank_menu_player ba_bank/menu_transfer bank_players #keyvalue name #key [ БАНК ] Player List
        es_xkeygroupdelete bank_players
        es keymenu send bank_transfer_playerlist server_var(_popup_userid)
    }
    if(server_var(bank_temp) == "admin") do
    {
        keymenu exists bank_temp bank_admin_playerlist 
        ifx true(bank_temp) do
        {
            keymenu delete bank_admin_playerlist
        }
        es_xcreateplayerlist bank_players
        keymenu create bank_admin_playerlist bank_menu_player ba_bank/admin_cash bank_players #keyvalue name #key [ БАНК ] Player List
        es_xkeygroupdelete bank_players
        es keymenu send bank_admin_playerlist server_var(_popup_userid)
    }
}

block admin_menuselect
{
    if(server_var(_popup_choice) == 1) do
    {
        es_set bank_userid server_var(_popup_userid)
        es_getplayersteamid bank_steamid server_var(bank_userid)
        es_keygetvalue bank_admin_check bank_admins server_var(bank_steamid) givecash
        
        ifx true(bank_admin_check) do
        {
            es_keycreate bank_menu_actions server_var(_popup_userid)
            es_keysetvalue bank_menu_actions server_var(_popup_userid) action "admin"
            es keymenu send bank_admin_cash server_var(_popup_userid)
        }
        else do
        {
            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You are not authorised to use this function!
        }
    }
    
    if(server_var(_popup_choice) == 2) do
    {
        es_set bank_userid server_var(_popup_userid)
        es_getplayersteamid bank_steamid server_var(bank_userid)
        es_keygetvalue bank_admin_check bank_admins server_var(bank_steamid) clearbank
        
        ifx true(bank_admin_check) do
        {
            es_xdoblock ba_bank/clear_inactive
            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen All inactive accounts hav been deleted
        }
        else do
        {
            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You are not authorised to use this function!
        }
    }
}

block admin_cash
{
    es_keygetvalue bank_transaction_amount bank_menu_actions server_var(_popup_userid) amount
    es_keydelete bank_menu_actions server_var(_popup_userid)
    
    es_getplayersteamid bank_receiver_steamid server_var(bank_menu_player)
    es_xformatqv bank_query "SELECT balance FROM accounts WHERE steamid='%1';" bank_receiver_steamid
    es_sql queryvalue ba_bank bank_balance server_var(bank_query)
    es_math bank_balance + server_var(bank_transaction_amount)
    if(server_var(bank_max_balance) > "0") do
    {
        if(server_var(bank_balance) > server_var(bank_max_balance)) then es_xmathparse bank_transaction_amount "bank_transaction_amount-(bank_balance-bank_max_balance)"
    }    
    es_xevent initialize bank_admin_cash
	es_event setint bank_admin_cash userid server_var(_popup_userid)
	es_event setint bank_admin_cash receiver server_var(bank_menu_player)
	es_event setint bank_admin_cash amount server_var(bank_transaction_amount)
	es_xevent fire bank_admin_cash
}

block menu_deposit
{
    es_set bank_userid server_var(_popup_userid)
    es_keygetvalue bank_transaction_amount bank_menu_actions server_var(_popup_userid) amount
    if(server_var(bank_transaction_amount) == "all") then es_xgetplayerprop bank_transaction_amount server_var(bank_userid) CCSPlayer.m_iAccount    
    es_xdoblock ba_bank/deposit
    es_keydelete bank_menu_actions server_var(_popup_userid)
}

block menu_withdraw
{
    es_set bank_userid server_var(_popup_userid)
    es_keygetvalue bank_transaction_amount bank_menu_actions server_var(_popup_userid) amount
    
    if(server_var(bank_transaction_amount) == "fill") do
    {
        es_getplayerprop bank_cash server_var(bank_userid) CCSPlayer.m_iAccount
        es_xmathparse bank_transaction_amount "16000-bank_cash"
    }
    
    es_xdoblock ba_bank/withdraw
    es_keydelete bank_menu_actions server_var(_popup_userid)
}

block menu_transfer
{    
    es_set bank_userid server_var(_popup_userid)
    es_keygetvalue bank_transaction_amount bank_menu_actions server_var(_popup_userid) amount
    
    if(server_var(bank_transaction_amount) == "all") do
    {
        es_getplayersteamid bank_steamid server_var(bank_userid)
        es_xformatqv bank_query "SELECT balance FROM accounts WHERE steamid='%1';" bank_steamid
        es_sql queryvalue ba_bank bank_transaction_amount server_var(bank_query)
    }

    es_set bank_receiver_userid server_var(bank_menu_player)
    
    es_xdoblock ba_bank/transfer    
    es_keydelete bank_menu_actions server_var(_popup_userid)
}

block bank
{
    es_xgetcmduserid bank_userid
    ifx false(bank_disable) do
    {
        es_xgetargc bank_temp
        if(server_var(bank_temp) <= "4") do
        {
            es_xgetargv bank_temp 1
            if(server_var(bank_temp) in server_var(bank_commands)) do
            {
                if(server_var(bank_temp) == "deposit") do
                {
                    es_xgetargc bank_temp
                    if(server_var(bank_temp) == "3") do
                    {
                        es_xdoblock ba_bank/deposit_checks
                        if(server_var(bank_transaction_allowed) == 1) do
                        {
                            es_xgetargv bank_transaction_amount 2
                            if(server_var(bank_transaction_amount) == "all") then es_xgetplayerprop bank_transaction_amount server_var(bank_userid) CCSPlayer.m_iAccount
                            es_xdoblock ba_bank/deposit
                        }
                        else do
                        {
                            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen server_var(bank_denial_reason)
                        }
                    }
                    else do
                    {
                        es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen Syntax: bank deposit <amount>
                    }
                }
                if(server_var(bank_temp) == "withdraw") do
                {
                    es_xgetargc bank_temp
                    if(server_var(bank_temp) == "3") do
                    {
                        es_xdoblock ba_bank/withdraw_checks
                        if(server_var(bank_transaction_allowed) == 1) do
                        {
                            es_xgetargv bank_transaction_amount 2
                            if(server_var(bank_transaction_amount) == "fill") do
                            {
                                es_getplayerprop bank_cash server_var(bank_userid) CCSPlayer.m_iAccount
                                es_xmathparse bank_transaction_amount "16000-bank_cash"
                            }
                            es_xdoblock ba_bank/withdraw
                        }
                        else do
                        {
                            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen server_var(bank_denial_reason)
                        }
                    }
                    else do
                    {
                        es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen Syntax: bank withdraw <amount>
                    }
                }
                if(server_var(bank_temp) == "transfer") do
                {
                    es_xgetargc bank_temp
                    if(server_var(bank_temp) == "4") do
                    {
                        es_xdoblock ba_bank/transfer_checks
                        if(server_var(bank_transaction_allowed) == 1) do
                        {
                            es_xgetargv bank_temp 2
                            es_getuserid bank_receiver_userid server_var(bank_temp)
                            if(server_var(bank_receiver_userid) != "0") do
                            {
                                es_xgetargv bank_transaction_amount 3
                                if(server_var(bank_transaction_amount) == "all") do
                                {
                                    es_getplayersteamid bank_steamid server_var(bank_userid)
                                    es_xformatqv bank_query "SELECT balance FROM accounts WHERE steamid='%1';" bank_steamid
                                    es_sql queryvalue ba_bank bank_transaction_amount server_var(bank_query)
                                }
                                es_xdoblock ba_bank/transfer
                            }
                            else do
                            {
                                es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen That player does not exist on the server
                            }
                        }
                        else do
                        {
                            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen server_var(bank_denial_reason)
                        }
                    }
                    else do
                    {
                        es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen Syntax: bank transfer <player> <amount>
                    }
                }
                if(server_var(bank_temp) == "admin") do
                {
                    es_xgetargc bank_temp
                    if(server_var(bank_temp) == "2") do
                    {
                        es_getplayersteamid bank_steamid server_var(bank_userid)
                        es_exists bank_admin_check key bank_admins server_var(bank_steamid)
                        if(server_var(bank_admin_check) == 1) do
                        {
                            es popup send bank_admin server_var(bank_userid)
                        }
                        else do
                        {
                            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You are not an admin!
                        }
                    }
                    else do
                    {
                        es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen Syntax: bank admin
                    }
                }
            }
            else do
            {
                if(server_var(bank_temp) == "0") do
                {
                    es_xdoblock ba_bank/check_account
                    es popup send bank_main server_var(bank_userid)
            }
                else do
                {
                    es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen Unknown command
                }
            }
        }
        else do
        {
            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen Incorrect Syntax
        }
    }
    else do
    {
        es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen The bank has been disabled because this map has no buyzones
    }
}

block check_account
{
    es_getplayersteamid bank_steamid server_var(bank_userid)
    es_xformatqv bank_query "SELECT steamid FROM accounts WHERE steamid='%1';" bank_steamid
    es_sql queryvalue ba_bank bank_temp server_var(bank_query)
    ifx false(bank_temp) do
    {
        es_getplayername bank_name server_var(bank_userid)
        es_xgettime bank_player_time
        es_xformatqv bank_query "INSERT INTO accounts VALUES ('%1','%2','%3','0','0','0','0','%4');" bank_steamid bank_name bank_start_balance bank_player_time
        es_sql query ba_bank server_var(bank_query)
        es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen Your bank account has been set up
    }
}

block deposit_checks
{
    es_xgetplayercount bank_temp 3
           
    if(server_var(bank_temp) > 0) do
    {
        es_xgetplayercount bank_temp 2
        
        if(server_var(bank_temp) > 0) do
        {
            if(server_var(bank_max_deposits) > 0) do
            {
                es_getplayersteamid bank_steamid server_var(bank_userid)
                es_xformatqv bank_query "SELECT deposits FROM accounts WHERE steamid='%1';" bank_steamid
                es_sql queryvalue ba_bank bank_temp server_var(bank_query)
                if(server_var(bank_temp) < server_var(bank_max_deposits)) do
                {
                    es_xset bank_transaction_allowed 1
                }
                else do
                {
                    es_xset bank_transaction_allowed 0
                    es_xset bank_denial_reason "You have exceeded the maximum number of deposits for this round"
                }
            }
            else do
            {
                es_xset bank_transaction_allowed 1
            }
        }
        else do
        {
            es_xset bank_transaction_allowed 0
            es_xset bank_denial_reason "There needs to be a minimum of 1 CT and 1 T to deposit cash"
        }
    }
    else do
    {
        es_xset bank_transaction_allowed 0
        es_xset bank_denial_reason "There needs to be a minimum of 1 CT and 1 T to deposit cash"
    }
}

block deposit
{
    if(server_var(bank_transaction_amount) > "0") do
    {
        if(server_var(bank_transaction_amount) >= server_var(bank_min_deposit)) do
        {
            es_getplayerprop bank_cash server_var(bank_userid) CCSPlayer.m_iAccount
            if(server_var(bank_transaction_amount) <= server_var(bank_cash)) do
            {
                es_getplayersteamid bank_steamid server_var(bank_userid)
                es_xformatqv bank_query "SELECT balance FROM accounts WHERE steamid='%1';" bank_steamid
                es_sql queryvalue ba_bank bank_balance server_var(bank_query)
                es_math bank_balance + server_var(bank_transaction_amount)
                if(server_var(bank_max_balance) > "0") do
                {
                    if(server_var(bank_balance) > server_var(bank_max_balance)) then es_xmathparse bank_transaction_amount "bank_transaction_amount-(bank_balance-bank_max_balance)"
                }
                es_xevent initialize bank_deposit
			    es_event setint bank_deposit userid server_var(bank_userid)
			    es_event setint bank_deposit amount server_var(bank_transaction_amount)
			    es_xevent fire bank_deposit
            }
            else do
            {
                es_xformatv bank_output_text "$%1" bank_transaction_amount
                es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You do not have server_var(bank_output_text) to deposit!
            }
            }
        else do
        {
            es_xformatv bank_output_text "$%1" bank_min_deposit
            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen Minimum deposit is server_var(bank_output_text)
        }
    }
    else do
    {
        es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You cannot deposit a negative amount!
    }
}

block withdraw_checks
{
    if(server_var(bank_max_withdrawals) > 0) do
    {
        es_getplayersteamid bank_steamid server_var(bank_userid)
        es_xformatqv bank_query "SELECT withdrawals FROM accounts WHERE steamid='%1';" bank_steamid
        es_sql queryvalue ba_bank bank_temp server_var(bank_query)
        if(server_var(bank_temp) < server_var(bank_max_withdrawals)) do
        {
            if(server_var(bank_pistol_round) == 1) do
            {
                if(server_var(bank_round) == 0) do
                {
                    es_xset bank_transaction_allowed 0
                    es_xset bank_denial_reason "No withdrawals allowed during the pistol round"
                }
                else do
                {
                    es_xset bank_transaction_allowed 1
                }
            }
            else do
            {
                es_xset bank_transaction_allowed 1
            }
        }
        else do
        {
            es_xset bank_transaction_allowed 0
            es_xset bank_denial_reason "You have exceeded the maximum number of withdrawals for this round"
        }
    }
    else do
    {
        if(server_var(bank_pistol_round) == 1) do
        {
            if(server_var(bank_round) == 0) do
            {
                es_xset bank_transaction_allowed 0
                es_xset bank_denial_reason "No withdrawals allowed during the pistol round"
            }
            else do
            {
                es_xset bank_transaction_allowed 1
            }
        }
        else do
        {
            es_xset bank_transaction_allowed 1
        }
    }
}

block withdraw
{
    if(server_var(bank_transaction_amount) > "0") do
    {
        es_getplayersteamid bank_steamid server_var(bank_userid)
        es_xformatqv bank_query "SELECT balance FROM accounts WHERE steamid='%1';" bank_steamid
        es_sql queryvalue ba_bank bank_balance server_var(bank_query)
        if(server_var(bank_transaction_amount) <= server_var(bank_balance)) do
        {
            es_getplayerprop bank_cash server_var(bank_userid) CCSPlayer.m_iAccount
            es_math bank_cash + server_var(bank_transaction_amount)
            if(server_var(bank_cash) > "16000") then es_xmathparse bank_transaction_amount "bank_transaction_amount-(bank_cash-16000)"
            es_xevent initialize bank_withdraw
		    es_event setint bank_withdraw userid server_var(bank_userid)
		    es_event setint bank_withdraw amount server_var(bank_transaction_amount)
		    es_xevent fire bank_withdraw
        }
        else do
        {
            es_xformatv bank_output_text "$%1" bank_transaction_amount
            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You do not have server_var(bank_output_text) to withdraw!
        }
    }
    else do
    {
        es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You cannot withdraw a negative amount!
    }
}

block transfer_checks
{
    if(server_var(bank_max_transfers) > 0) do
    {
        es_getplayersteamid bank_steamid server_var(bank_userid)
        es_xformatqv bank_query "SELECT transfers FROM accounts WHERE steamid='%1';" bank_steamid
        es_sql queryvalue ba_bank bank_temp server_var(bank_query)
        if(server_var(bank_temp) < server_var(bank_max_transfers)) do
        {
            es_xset bank_transaction_allowed 1
        }
        else do
        {
            es_xset bank_transaction_allowed 0
            es_xset bank_denial_reason "You have exceeded the maximum number of transfers for this round"
        }
    }
    else do
    {
        es_xset bank_transaction_allowed 1
    }
}

block transfer
{
    if(server_var(bank_transaction_amount) > "0") do
    {
        es_getplayersteamid bank_receiver_steamid server_var(bank_receiver_userid)
        es_xformatqv bank_query "SELECT steamid FROM accounts WHERE steamid='%1';" bank_receiver_steamid
        es_sql queryvalue ba_bank bank_temp server_var(bank_query)
        if(server_var(bank_temp) != "0") do
        {
            es_getplayersteamid bank_steamid server_var(bank_userid)
            es_xformatqv bank_query "SELECT balance FROM accounts WHERE steamid='%1';" bank_steamid
            es_sql queryvalue ba_bank bank_balance server_var(bank_query)
            if(server_var(bank_transaction_amount) <= server_var(bank_balance)) do
            {
                es_xformatqv bank_query "SELECT balance FROM accounts WHERE steamid='%1';" bank_receiver_steamid
                es_sql queryvalue ba_bank bank_balance server_var(bank_query)
                if(server_var(bank_max_balance) > "0") do
                {
                    if(server_var(bank_balance) > server_var(bank_max_balance)) then es_xmathparse bank_transaction_amount "bank_transaction_amount-(bank_balance-bank_max_balance)"
                }
                es_xevent initialize bank_transfer
			    es_event setint bank_transfer userid server_var(bank_userid)
			    es_event setint bank_transfer receiver server_var(bank_receiver_userid)
			    es_event setint bank_transfer amount server_var(bank_transaction_amount)
			    es_xevent fire bank_transfer
            }
            else do
            {
                es_xformatv bank_output_text "$%1" bank_transaction_amount
                es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You do not have server_var(bank_output_text) to transfer!
            }
        }
        else do
        {
            es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen That player has not set up a bank account
        }
    }
    else do
    {
        es_tell server_var(bank_userid) #multi #green[ БАНК ]#lightgreen You cannot transfer a negative amount!
    }
}

block clear_inactive
{
    es_xgettime bank_temp
    es_math bank_temp - server_var(bank_inactive_days)
    es_xformatqv bank_query "DELETE FROM accounts WHERE time<'%1';" bank_temp
    es_sql query ba_bank server_var(bank_query)
}

block check_buyzone
{
   es_xcreateentitylist bank_buyzone func_buyzone
   es_xset bank_buyzone_count 0
   es_xforeachkey bank_temp in bank_buyzone "es_xmath bank_buyzone_count + 1"
   if(server_var(bank_buyzone_count) > 0) do
   {
      es_xset bank_disable 0
   }
   else do
   {
      es_xset bank_disable 1
   }
   es_xkeygroupdelete bank_buyzone
}

event es_map_start
{
    es_xloadevents addons/eventscripts/ba_bank/data/es_ba_bank.res
    
    ifx true(bank_interest_allow) do
    {
        es_xkeygroupdelete bank_interest
        es_xkeygroupcreate bank_interest
    }

    es_xkeygroupdelete bank_menu_actions
    es_xkeygroupcreate bank_menu_actions
    
    es_xset bank_round 0
    es_xset bank_disable 0
    
    ifx true(bank_buyzone_disable) then es_xdelayed 5 es_xdoblock ba_bank/check_buyzone
    ifx true(bank_auto_clear_inactive) then es_xdoblock ba_bank/clear_inactive
}

event player_activate
{
    es_format bank_query "SELECT time FROM accounts WHERE steamid='%1';" event_var(es_steamid)
    es_sql queryvalue ba_bank bank_temp server_var(bank_query)
    if(server_var(bank_temp) != "0") do
    {
        es_format bank_query "SELECT name FROM accounts WHERE steamid='%1';" event_var(es_steamid)
        es_sql queryvalue ba_bank bank_temp server_var(bank_query)
        if(server_var(bank_temp) != event_var(es_username)) do
        {
            es_format bank_query "UPDATE accounts SET name='%1' WHERE steamid='%2';" event_var(es_username) event_var(es_steamid)
            es_sql query ba_bank server_var(bank_query)
        }
        es_xgettime bank_temp
        es_format bank_query "UPDATE accounts SET time='%1' WHERE steamid='%2';" server_var(bank_temp) event_var(es_steamid)
        es_sql query ba_bank server_var(bank_query)
    }
}

event player_spawn
{
    if(event_var(es_userteam) > "1") do
    {
        es_format bank_query "SELECT steamid FROM accounts WHERE steamid='%1';" event_var(es_steamid)
        es_sql queryvalue ba_bank bank_temp server_var(bank_query)
        if(server_var(bank_temp) != "0") do
        {
            ifx true(bank_interest_allow) do
            {
                es_exists bank_temp key bank_interest event_var(userid)
                ifx false(bank_temp) do
                {
                    es_keycreate bank_interest event_var(userid)
                    es_format bank_query "SELECT balance FROM accounts WHERE steamid='%1';" event_var(es_steamid)
                    es_sql queryvalue ba_bank bank_balance server_var(bank_query)
                    es_xmathparse bank_interest_gained "rint((bank_balance/100)*bank_interest_amount)"
                    es_math bank_balance + server_var(bank_interest_gained)
                    if(server_var(bank_max_balance) > "0") do
                    {
                        if(server_var(bank_balance) > server_var(bank_max_balance)) do
                        {
                            es_xmathparse bank_temp "bank_interest_gained-(bank_balance-bank_max_balance)"
                            es_math bank_balance - server_var(bank_interest_gained)
                            es_set bank_interest_gained server_var(bank_temp)
                            es_math bank_balance + server_var(bank_interest_gained)
                        }
                    }
                    if(server_var(bank_interest_gained) > "0") do
                    {
                        es_format bank_query "UPDATE accounts SET balance='%1' WHERE steamid='%2';" server_var(bank_balance) event_var(es_steamid)
                        es_sql query ba_bank server_var(bank_query)
                        es_xformatv bank_output_text "$%1" bank_interest_gained
                        es_tell event_var(userid) #multi #green[ БАНК ]#lightgreen Из расчета ваших накоплений вы получаете + server_var(bank_output_text) (0.6%)
                    }
                }
            }
            ifx true(bank_allow_autowithdrawal) do
            {
                es_format bank_query "SELECT autowithdraw FROM accounts WHERE steamid='%1';" event_var(es_steamid)
                es_sql queryvalue ba_bank bank_temp server_var(bank_query)
                ifx true(bank_temp) do
                {
                    es_set bank_userid event_var(userid)
                    es_xdoblock ba_bank/withdraw_checks
                    ifx true(bank_transaction_allowed) do
                    {
                        es_getplayerprop bank_cash event_var(userid) CCSPlayer.m_iAccount                        
                        es_xmathparse bank_transaction_amount "16000-bank_cash"
                        if(server_var(bank_transaction_amount) > 0) do
                        {
                            es_format bank_query "SELECT balance FROM accounts WHERE steamid='%1';" event_var(es_steamid)
                            es_sql queryvalue ba_bank bank_balance server_var(bank_query)
                            if(server_var(bank_balance) >= server_var(bank_transaction_amount)) do
                            {
                                es_xevent initialize bank_withdraw
		                        es_event setint bank_withdraw userid event_var(userid)
		                        es_event setint bank_withdraw amount server_var(bank_transaction_amount)
		                        es_xevent fire bank_withdraw
		                    }
                        }
                    }
                }
            }
        }
    }
}

event bank_deposit
{
    es_format bank_query "SELECT balance FROM accounts WHERE steamid='%1';" event_var(es_steamid)
    es_sql queryvalue ba_bank bank_balance server_var(bank_query)
    es_format bank_query "SELECT deposits FROM accounts WHERE steamid='%1';" event_var(es_steamid)
    es_sql queryvalue ba_bank bank_temp server_var(bank_query)
    es_math bank_balance + event_var(amount)
    es_math bank_temp + 1
    es_format bank_query "UPDATE accounts SET balance='%1',deposits='%2' WHERE steamid='%3';" server_var(bank_balance) server_var(bank_temp) event_var(es_steamid)
    es_sql query ba_bank server_var(bank_query)
    
    es_getplayerprop bank_cash event_var(userid) CCSPlayer.m_iAccount
    es_math bank_cash - event_var(amount)
    es_setplayerprop event_var(userid) CCSPlayer.m_iAccount server_var(bank_cash)
    
    es_format bank_output_text "$%1" event_var(amount)
    es_tell event_var(userid) #multi #green[ БАНК ]#lightgreen Вы положили на свой счет server_var(bank_output_text)
}

event bank_withdraw
{
    es_format bank_query "SELECT balance FROM accounts WHERE steamid='%1';" event_var(es_steamid)
    es_sql queryvalue ba_bank bank_balance server_var(bank_query)
    es_format bank_query "SELECT withdrawals FROM accounts WHERE steamid='%1';" event_var(es_steamid)
    es_sql queryvalue ba_bank bank_temp server_var(bank_query)
    es_math bank_balance - event_var(amount)
    es_math bank_temp + 1
    es_format bank_query "UPDATE accounts SET balance='%1',withdrawals='%2' WHERE steamid='%3';" server_var(bank_balance) server_var(bank_temp) event_var(es_steamid)
    es_sql query ba_bank server_var(bank_query)
    
    es_getplayerprop bank_cash event_var(userid) CCSPlayer.m_iAccount
    es_math bank_cash + event_var(amount)
    es_setplayerprop event_var(userid) CCSPlayer.m_iAccount server_var(bank_cash)
    
    es_format bank_output_text "$%1" event_var(amount)
    es_tell event_var(userid) #multi #green[ БАНК ]#lightgreen Вы сняли со своего счета server_var(bank_output_text)
}

event bank_transfer
{
    es_format bank_query "SELECT balance FROM accounts WHERE steamid='%1';" event_var(es_steamid)
    es_sql queryvalue ba_bank bank_balance server_var(bank_query)
    es_format bank_query "SELECT transfers FROM accounts WHERE steamid='%1';" event_var(es_steamid)
    es_sql queryvalue ba_bank bank_temp server_var(bank_query)
    es_math bank_balance - event_var(amount)
    es_math bank_temp + 1
    es_format bank_query "UPDATE accounts SET balance='%1',transfers='%2' WHERE steamid='%3';" server_var(bank_balance) server_var(bank_temp) event_var(es_steamid)
    es_sql query ba_bank server_var(bank_query)
    es_format bank_output_text "$%1" event_var(amount)
    es_getplayername bank_name event_var(receiver)
    es_tell event_var(userid) #multi #green[ БАНК ]#lightgreen You have transferred server_var(bank_output_text) to server_var(bank_name)
    
    es_getplayersteamid bank_steamid event_var(receiver)
    es_format bank_query "SELECT balance FROM accounts WHERE steamid='%1';" server_var(bank_steamid)
    es_sql queryvalue ba_bank bank_balance server_var(bank_query)
    es_math bank_balance + event_var(amount)
    es_format bank_query "UPDATE accounts SET balance='%1' WHERE steamid='%2';" server_var(bank_balance) server_var(bank_steamid)
    es_sql query ba_bank server_var(bank_query)
    es_format bank_output_text "$%1" event_var(amount)
    es_tell event_var(receiver) #multi #green[ БАНК ]#lightgreen You have received server_var(bank_output_text) from event_var(es_username)
}

event bank_admin_cash
{
    es_getplayersteamid bank_receiver_steamid event_var(receiver)
    es_format bank_query "SELECT balance FROM accounts WHERE steamid='%1';" server_var(bank_receiver_steamid)
    es_sql queryvalue ba_bank bank_balance server_var(bank_query)
    es_math bank_balance + event_var(amount)
    es_format bank_query "UPDATE accounts SET balance='%1' WHERE steamid='%2';" server_var(bank_balance) server_var(bank_receiver_steamid)
    es_sql query ba_bank server_var(bank_query)
    es_format bank_output_text "$%1" event_var(amount)
    es_tell event_var(receiver) #multi #green[ БАНК ]#lightgreen An admin has given you server_var(bank_output_text)
}

event round_end
{
    ifx true(bank_interest_allow) do
    {
        ifx true(bank_interest_per_round) do
        {
            es_xkeygroupdelete bank_interest
            es_xkeygroupcreate bank_interest
        }
    }

    if (event_var(reason) = 16) do
    {
        es_xset bank_round 0
    }
    else do
    {
        es_xexists bank_temp variable bank_round
        ifx true(bank_temp) do
        {
            es_xmath bank_round + 1
        }
        else do
        {
            es_xset bank_round 1
        }
    }
   
    es_xsql query ba_bank "UPDATE accounts SET deposits='0',withdrawals='0',transfers='0';"
}
