# nova\_bank

NOVA Framework banking system for FiveM. Provides deposits, withdrawals, transfers, and transaction history at bank locations and ATMs.

## Features

* **Deposits** — Transfer cash from pocket to bank account
* **Withdrawals** — Transfer money from bank to cash
* **Transfers** — Send money to other players by server ID
* **Transaction History** — View the last 20 transactions
* **Bank Locations** — Multiple banks across the map with blips
* **ATM Locations** — Standalone ATMs for quick access

## Configuration

Edit `config.lua` to customize bank behavior:

```lua
BankConfig = {
    TransferLimit = 1000000,   -- Maximum transfer amount per transaction
    HistoryLimit = 20,        -- Number of transactions shown in history

    Banks = {
        { coords = vector3(149.95, -1040.46, 29.37), label = 'Banco Pillbox Hill' },
        -- Add more banks...
    },

    ATMs = {
        { coords = vector3(24.59, -945.54, 29.37) },
        -- Add more ATMs...
    },

    InteractDistance = 1.5,   -- Distance to interact (meters)
    BlipSprite = 108,         -- Map blip sprite ID
    BlipColor = 2,            -- Blip color
    BlipScale = 0.7,          -- Blip size
}
```

### Configuration Options

| Option             | Type   | Description                              |
| ------------------ | ------ | ---------------------------------------- |
| `TransferLimit`    | number | Max amount per transfer                  |
| `HistoryLimit`     | number | Transactions shown in history tab        |
| `Banks`            | table  | Bank locations with `coords` and `label` |
| `ATMs`             | table  | ATM locations (coords only)              |
| `InteractDistance` | number | Interaction range in meters              |
| `BlipSprite`       | number | GTA blip sprite ID                       |
| `BlipColor`        | number | Blip color ID                            |
| `BlipScale`        | number | Blip scale                               |

## NUI

The bank interface uses a **dark theme with lime green accents** (`#84cc16`):

* Dark background: `rgb(18, 18, 24)`
* Accent color: `#84cc16` (lime green)
* Cash highlight: `#22c55e` (green)
* Tab-based layout: Deposit, Withdraw, Transfer, History

## Usage

Bank data (cash, bank balance) is accessible through the `nova_core` player object. Use `player:GetMoney()` and `player:GetBank()` server-side exports to retrieve financial data.

## Notes

* Uses `nova_core` for player money (`AddPlayerMoney`, `RemovePlayerMoney`)
* Notifications use `nova:client:notify` event
* Transfer requires the target's **server ID** (not citizenid)
* Self-transfers are blocked
* All amounts are validated server-side

## Security

* All operations are validated server-side
* Internal event names are not disclosed in this documentation for security purposes
