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

  1. Player approaches ATM → presses E (or target)
  2. Camera zooms in with depth-of-field blur
  3. Player enters PIN on the physical keypad
  4. On success → ATM menu is shown
  5. 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:

  1. Press the PIN button on the right side
  2. Enter current PINnew PINconfirm new PIN
  3. 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:

  1. ATM props is spawned at final position
  2. Coordinates saved to nc_atm_spawned table
  3. 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'.

Last updated 1 month ago