Features
💎 PAID | Purchase on Tebex
Detailed explanation of all nc-atm features.
3D NUI Overlay
The ATM interface is rendered as a NUI element positioned directly over the in-game ATM screen — not as a separate HUD popup. Buttons, PIN pad, and all UI live on the ATM model itself.
- Left buttons — Balance, Deposit, Withdraw, Transfer
- Right buttons — PIN change, History, Cancel
- PIN pad — Rendered at the physical keypad position on the model
- Model-specific layouts — Different key grid layouts per ATM model (3-column vs 4-column)
The fallback screen position and button positions are defined in Config.ATMNUI. For precise placement, use the Calibration system.
PIN Security
Every player has a 4-digit (configurable) PIN stored as a SHA-256 hash in nc_atm_pins. Plain text is never written to the database.
PIN Flow
- Player approaches ATM → presses E (or target)
- Camera zooms in with depth-of-field blur
- Player enters PIN on the physical keypad
- On success → ATM menu is shown
- Sensitive actions (withdraw, transfer) require PIN re-verification mid-session
PIN Lockout
After Config.MaxPinAttempts consecutive failures, the PIN is locked for Config.PinLockoutTime seconds. The player receives a notification with the remaining lockout time.
Change PIN
Players can change their PIN directly at the ATM:
- Press the PIN button on the right side
- Enter current PIN → new PIN → confirm new PIN
- New PIN is hashed and saved immediately
Legacy Upgrade
If a player has a plaintext PIN in the database (from an older system), it is automatically upgraded to SHA-256 on the next successful login.
Deposit & Withdraw
Preset Amounts
A grid of quick-select amounts is shown. Press any preset to confirm immediately.
Custom Amount
Press Other → enter any amount via the keypad → press ENTER to confirm.
Cash Animation
A cash bundle animation plays on successful deposit/withdraw, rendered at the ATM cash slot position using calibrated coordinates.
Withdraw PIN Verification
Withdrawals require the player to re-enter their PIN (action PIN phase) before the transaction is processed.
Transfer
Send money directly to another online player.
- Mode: Server ID — Enter the target player's current server ID
- Transfer is only possible to online players (
Config.ATMTransferMode = 'serverid') - Configurable cooldown between transfers (
Config.TransferCooldown) - Min/max transfer amount enforced server-side
- Full server-side validation — source balance, target existence
Transaction History
Players can view recent transactions on the ATM screen:
- Type (deposit, withdraw, transfer in/out)
- Amount with color coding (green = credit, red = debit)
- Description and timestamp
Camera System
Each ATM model has a calibrated camera preset:
| Setting | Description |
|---|---|
distance |
How far the camera sits from the ATM |
height |
Camera height offset |
lookAtHeight |
Where the camera looks vertically |
fov |
Field of view |
transitionMs |
Smooth transition duration |
dof |
Depth-of-field blur enabled |
dofNear/Far/Strength |
Blur parameters |
Two default presets ship out of the box: default (prop_atm_01) and fleeca (all Fleeca/multi-panel models). Add custom presets for modded ATM props via Config.ATMCameraPresets.
ATM Calibration
The /atmcalibrate command opens an interactive calibration panel for the nearest ATM. This lets you precisely position:
- Screen overlay area
- Left/right button positions
- PIN pad grid position
- Card slot and cash slot positions
Calibration data is saved per model to atm_coords.json and loaded automatically on server start. Calibrated positions override the fallback values in Config.ATMNUI.
Calibration permission is controlled by
Config.ATMCalibration.permission.
Admin ATM Spawner
Admins can place custom ATMs anywhere in the world.
Commands
| Command | Description |
|---|---|
/atmspawn [model] |
Enter 3D placement mode |
/atmdelete |
Remove the nearest spawned ATM |
Placement Mode
Uses object_gizmo for real-time 3D dragging and rotation. When placement is confirmed:
- ATM props is spawned at final position
- Coordinates saved to
nc_atm_spawnedtable - ATM persists across server restarts
Spawned ATM Blip
Optional map blip for all ATMs (Config.ATMSpawnBlip).
Supported Spawn Models
Any valid GTA V prop model name. Default: prop_atm_01. Change default with Config.ATMSpawnModel.
Multi-Framework Support
nc-atm auto-detects the active framework at startup. All money operations go through the bridge, which maps to the framework's built-in bank balance functions.
| Framework | Detection |
|---|---|
| QBCore | qb-core resource check |
| QBox | qbx_core resource check |
| ESX | es_extended resource check |
| OX Core | ox_core resource check |
Multi-Language (i18n)
Server-side notifications use locales/en.lua. NUI text uses locales/nui_en.lua / locales/nui_en.json.
To add a language, duplicate the en locale files and translate the strings:
locales/
en.lua ← server-side messages
nui_en.lua ← NUI text (Lua table, sent to client)
nui_en.json ← NUI text (JSON fallback)
Set the active locale with Config.Locale = 'en'.