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

block load
{
    es_xset ba_bank_version "2.1"
    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 "Oeffnet das Bank Menue"
    }
    
    es_xexists bank_temp clientcommand !bank
    ifx false(bank_temp) do
    {
        es_xregclientcmd !bank ba_bank/bank "Oeffnet das Bank Menue"
    }
    
    popup create bank_main
    popup addline bank_main "[BA_BANK] Hauptmenue"
    popup addline bank_main "-----"
    popup addline bank_main "->1. Einzahlen"
    popup addline bank_main "->2. Auszahlen"
    popup addline bank_main "->3. Uebertragen"
    popup addline bank_main "->4. Ausgleichen"
    popup addline bank_main "->5. Einstellungen"
    popup addline bank_main "->6. Top 10"
    popup addline bank_main "0. Verlassen"
    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 [BA_BANK] Einzahlungs Menue
    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 [BA_BANK] Auszahlungs Menue
    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 [BA_BANK] Uebertragungs Menue
    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 [BA_BANK] Geld geben
    es_xkeygroupdelete bank_admin_amounts
    
    popup create bank_settings
    popup addline bank_settings "[BA_BANK] Einstellungs Menue"
    popup addline bank_settings "-----"
    popup addline bank_settings "->1. Automatisches Auszahlen"
    popup addline bank_settings "0. Verlassen"
    popup prepuser bank_settings ba_bank/settings_prepuser
    popup menuselect bank_settings ba_bank/settings_menuselect
    
    popup create bank_admin
    popup addline bank_admin "[BA_BANK] Admin Menue"
    popup addline bank_admin "-----"
    popup addline bank_admin "->1. Geld geben"
    popup addline bank_admin "->2. Loesche inatkive Accounts"
    popup addline bank_admin "0. Verlassen"
    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[BA_BANK]#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[BA_BANK]#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[BA_BANK]#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[BA_BANK]#lightgreen Du hast noch server_var(bank_output_text) auf der Bank
    }   
    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 "[BA_BANK] Top 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. Verlassen"
    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. Automatisches Auszahlen [Deaktiviert]"
    }
    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. Automatisches Auszahlen [AN]"
        }
        else do
        {
            popup modline bank_settings 3 "->1. Automatisches Auszahlen [AUS]"
        }
    }
}

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[BA_BANK]#lightgreen Die Automatisches Auszahlen Funktion wurde deaktiviert!
        }
        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[BA_BANK]#lightgreen Sie haben Automatisches Auszahlen deaktiviert.
            }
            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[BA_BANK]#lightgreen Sie haben Automatisches Auszahlen aktiviert.
            }
        }
        
    }
}

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 [BA_BANK] Spieler Liste
        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 [BA_BANK] Spieler Liste
        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[BA_BANK]#lightgreen Sie haben nicht die Rechte fuer diese Funktion!
        }
    }
    
    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[BA_BANK]#lightgreen Alle inaktiven Spieler wurden geloescht!
        }
        else do
        {
            es_tell server_var(bank_userid) #multi #green[BA_BANK]#lightgreen Sie haben nicht die Rechte fuer diese Funktion!
        }
    }
}

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[BA_BANK]#lightgreen server_var(bank_denial_reason)
                        }
                    }
                    else do
                    {
                        es_tell server_var(bank_userid) #multi #green[BA_BANK]#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[BA_BANK]#lightgreen server_var(bank_denial_reason)
                        }
                    }
                    else do
                    {
                        es_tell server_var(bank_userid) #multi #green[BA_BANK]#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[BA_BANK]#lightgreen Der Spieler exisitiert nicht!
                            }
                        }
                        else do
                        {
                            es_tell server_var(bank_userid) #multi #green[BA_BANK]#lightgreen server_var(bank_denial_reason)
                        }
                    }
                    else do
                    {
                        es_tell server_var(bank_userid) #multi #green[BA_BANK]#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[BA_BANK]#lightgreen Sie sind kein Admin!
                        }
                    }
                    else do
                    {
                        es_tell server_var(bank_userid) #multi #green[BA_BANK]#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[BA_BANK]#lightgreen Unbekannte Eingabe
                }
            }
        }
        else do
        {
            es_tell server_var(bank_userid) #multi #green[BA_BANK]#lightgreen Incorrect Syntax
        }
    }
    else do
    {
        es_tell server_var(bank_userid) #multi #green[BA_BANK]#lightgreen Die Bank wurde deaktiviert da diese Map keine Kaufzonen hat
    }
}

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[BA_BANK]#lightgreen Ihr Bank Account wurde eingerichtet
    }
}

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 "Sie haben das Limit des Einzahlens fr diese Runde erreicht!"
                }
            }
            else do
            {
                es_xset bank_transaction_allowed 1
            }
        }
        else do
        {
            es_xset bank_transaction_allowed 0
            es_xset bank_denial_reason "Es mssen in jedem Team 1 Spieler sein damit sie Einzahlen knnen"
        }
    }
    else do
    {
        es_xset bank_transaction_allowed 0
        es_xset bank_denial_reason "Es mssen in jedem Team 1 Spieler sein damit sie Einzahlen knnen"
    }
}

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[BA_BANK]#lightgreen Sie haben keine server_var(bank_output_text) zum Einzahlen!
            }
            }
        else do
        {
            es_xformatv bank_output_text "$%1" bank_min_deposit
            es_tell server_var(bank_userid) #multi #green[BA_BANK]#lightgreen Minimum zum Einzahlen sind server_var(bank_output_text)
        }
    }
    else do
    {
        es_tell server_var(bank_userid) #multi #green[BA_BANK]#lightgreen Sie koennen keine negativen Betraege einzahlen!
    }
}

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 "Keine Auszahlung in dieser Runde moeglich"
                }
                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 "Sie haben das Auszahlungslimit diese Runde bereits erreicht"
        }
    }
    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 "Keine Auszahlung in dieser Runde erlaubt"
            }
            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[BA_BANK]#lightgreen Sie haben keine server_var(bank_output_text) zum Auszahlen!
        }
    }
    else do
    {
        es_tell server_var(bank_userid) #multi #green[BA_BANK]#lightgreen Sie koennen keine negativen Betraege auszahlen!
    }
}

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 "Sie haben ihr Transfer Limit erreicht"
        }
    }
    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[BA_BANK]#lightgreen Sie haben keine server_var(bank_output_text) zum Uebertragen!
            }
        }
        else do
        {
            es_tell server_var(bank_userid) #multi #green[BA_BANK]#lightgreen Dieser Spieler hat keinen Bank Account
        }
    }
    else do
    {
        es_tell server_var(bank_userid) #multi #green[BA_BANK]#lightgreen Sie koennen keine negativen Betraege Uebertragen!
    }
}

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[BA_BANK]#lightgreen Ihr Account hat server_var(bank_output_text) Interesse
                    }
                }
            }
            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[BA_BANK]#lightgreen Sie haben server_var(bank_output_text) Eingezahlt
}

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[BA_BANK]#lightgreen Sie haben server_var(bank_output_text) Ausgezahlt
}

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[BA_BANK]#lightgreen Sie haben server_var(bank_output_text) an server_var(bank_name) Uebertragen
    
    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[BA_BANK]#lightgreen Sie haben server_var(bank_output_text) von event_var(es_username) erhalten
}

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[BA_BANK]#lightgreen Ein Admin hat Ihnen server_var(bank_output_text) gegeben
}

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';"
}
