👮FINGERPRINT SCANNER

This documentation covers all configuration options available to server owners. The script automatically detects your framework (ESX, QBCore, QBox) and requires oxmysql to function properly.

1) Item Setup

Before configuring the script, you need to add the item to your inventory system. Choose the section that matches your server setup.

ESX (items.lua / database)

Method 1 — items.lua (if your server uses a file-based item list):

['fingerprint_scanner'] = {
    label = 'Fingerprint Scanner',
    weight = 500,
    stack = false,
    close = true,
    description = 'A portable fingerprint scanning device used by law enforcement.'
},

Method 2 — SQL (direct database insert):

INSERT INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) 
VALUES ('fingerprint_scanner', 'Fingerprint Scanner', 1, 0, 1);

Method 3 — ESX Legacy (es_extended/config/items.lua):

{name = 'fingerprint_scanner', label = 'Fingerprint Scanner', weight = 1, stack = false, degrade = 0},

QBCore (qb-core/shared/items.lua)


QBox (qbx_core/data/items.lua)


ox_inventory (ox_inventory/data/items.lua)


Giving Item In-Game (for testing)

ESX:

QBCore:

ox_inventory:

⚠️ IMPORTANT: Make sure your item image is placed in the correct inventory folder. For QBCore: qb-inventory/html/images/. For ox_inventory: ox_inventory/web/images/. Name the file fingerprint_scanner.png.


2) Overview

Risk Fingerprint Scanner is a law enforcement tool allowing officers to scan civilian fingerprints and retrieve identity information featuring:

  • 🔍 Real-time fingerprint scanning system

  • 👮 Job-restricted access (configurable per department)

  • 📋 Scan history per officer (stored in database)

  • 🎭 Animated scanning interaction

  • 🖥️ Modern MDT-style UI

  • 📡 Item or command-based activation

  • 🌐 Full localization support

  • ⚙️ ESX, QBCore, and QBox compatibility


3) Dependencies

The following resources must be installed and started before risk-fingerprint:

Required:

Optional:

  • risk-notify — Only if using custom notifications


4) Basic Configuration

Command Activation

  • UseCommand: true = players can open scanner via command

  • Command: The command name (used as /fingerprint)

Disable command (item-only):

Custom command name:

Item Activation

  • UseItem: true = scanner opens when using item from inventory

  • ItemName: Must match exactly the item name added in Section 1

Disable item (command-only):

Both command AND item active simultaneously:


5) Scanning Settings

Scan Hold Duration

Time in milliseconds the target must hold the scanner button

Quick scan:

Standard scan:

Long scan:

Maximum Distance

Maximum distance in meters between officer and target

Close proximity (realistic):

Standard:

Relaxed:


6) Animation Settings

How it works:

  • When officer initiates scan, animation plays automatically

  • Animation stops when scan completes or is cancelled

  • Set UseAnimation = false to disable

Disable animation:

Alternative animations:

Animation flags:

  • 49 — Loop and hold animation (recommended)

  • 1 — Loop

  • 0 — Play once


7) Allowed Jobs

Only players with these jobs can use the fingerprint scanner

How to find your job names:

  • ESX: Check your jobs table in the database

  • QBCore: Check qb-core/shared/jobs.lua

Adding/removing jobs:

Police only:

Multiple law enforcement:

Include federal agencies:

⚠️ NOTE: Job names must match exactly as they appear in your framework (case-sensitive). Test with /fingerprint in-game to verify.


8) UI Customization

Department Display

  • DepartmentName: Main title shown in the MDT UI header

  • DepartmentSub: Subtitle shown under the main title

Examples per department:

Los Santos Police:

Blaine County:

State Police:

Generic:


9) Localization / Strings

All UI and notification text can be customized:

German translation:

Spanish translation:


10) Notification System

To use default GTA notifications:

ox_lib:

mythic_notify:


11) Database

The script automatically creates the following table on first start — no manual setup required:

What is stored:

  • Officer's license identifier

  • Officer's full name

  • Target's first name, last name, gender, date of birth

  • Timestamp of each scan

History limits:

  • Each officer sees their own last 50 scans

  • Officers can delete individual history entries from the UI

  • History is per-officer (not shared between officers)


12) Complete Configuration Examples

Example 1: Minimal Setup (Command Only)

Example 2: Full RP Setup (Item + Animation)

Example 3: Multi-Department Server


13) How It Works

Officer Flow

  1. Officer uses item or command → Scanner UI opens

  2. Officer clicks "Authenticate" → Job is verified server-side

  3. Access Granted → Officer can see MDT and scan history

  4. Officer clicks "Scan Fingerprint" → Finds nearest player within MaxDistance

  5. Animation plays → Server opens scanner UI for target

  6. Target holds button for ScanHoldDuration milliseconds

  7. Scan completes → Officer sees full identity (name, gender, DOB)

  8. Result saved to officer's personal scan history

Target Flow

  1. Officer initiates scan → Target receives UI prompt

  2. Target holds the fingerprint button for required duration

  3. Target can cancel at any time (officer is notified)

  4. If target moves too far → scan auto-cancels for both players

Security Features

  • ✅ Job verified server-side (cannot be spoofed from client)

  • ✅ Distance checked server-side before scan starts

  • ✅ Distance monitored continuously during scan

  • ✅ Resource name verification (must be named risk-fingerprint)

  • ✅ History entries can only be deleted by the officer who created them

  • ✅ Player disconnect handled (active sessions cleaned up automatically)


14) Troubleshooting

❌ "You do not have permission to use this"

Cause: Player's job not in Config.AllowedJobs Solution:

  • Check job name in database/framework files

  • Add job to Config.AllowedJobs with exact spelling

  • Job names are case-sensitive

❌ "No player nearby"

Cause: No player within Config.MaxDistance Solution:

  • Increase Config.MaxDistance

  • Stand directly next to the target player

  • Default is 3.0 meters

❌ Scanner opens but shows "Access Denied"

Cause: Job check failed Solution:

  • Verify Config.AllowedJobs includes your exact job name

  • Check server console for framework detection message

  • Restart resource and relog

❌ Item doesn't work

Possible causes:

  • Item not added to inventory database

  • Config.UseItem = false

  • Wrong Config.ItemName

Solution:

  • Follow item setup in Section 1

  • Set Config.UseItem = true

  • Ensure Config.ItemName = 'fingerprint_scanner' (exact match)

❌ Target never receives scan prompt

Possible causes:

  • Officer not close enough

  • Server-side distance check failed

  • baseevents not started

Solution:

  • Officer must be within Config.MaxDistance

  • Check server console for errors

  • Ensure both players are on the server

❌ Scan history not saving

Possible causes:

  • oxmysql not started

  • Database table creation failed

  • Wrong table structure

Solution:

  • Ensure oxmysql is started before risk-fingerprint

  • Check server console for database errors

  • Verify ensure oxmysql is above ensure risk-fingerprint in server.cfg

❌ Animation not playing

Cause: Invalid animation dictionary or clip name Solution:

  • Set Config.UseAnimation = false to disable

  • Use a valid AnimDict and AnimName

  • Check FiveM animation list for valid entries

❌ "Resource must be named 'risk-fingerprint'" warning

Cause: Resource folder renamed Solution:

  • Rename the resource folder back to risk-fingerprint

  • Update server.cfg to ensure risk-fingerprint

  • Restart server


15) Best Practices

Use item activation for RP servers — More immersive than command ✅ Keep MaxDistance realistic — 2.0-3.0 meters feels natural ✅ Set ScanHoldDuration based on server type — Longer for RP, shorter for action ✅ Customize department name/sub — Match your server's lore ✅ Test with correct job names — Case-sensitive, must match exactly ✅ Only give item to authorized staff — Don't give to all players ✅ Customize UI text for your language — Full localization supported ✅ Keep oxmysql running — Required for history and identity lookup


16) Quick Start Checklist

  • [ ] Add item to your inventory system (Section 1)

  • [ ] Set Config.AllowedJobs to your police job names

  • [ ] Set Config.DepartmentName and Config.DepartmentSub

  • [ ] Configure Config.UseCommand and/or Config.UseItem

  • [ ] Set Config.ScanHoldDuration to your preference

  • [ ] Configure notification system

  • [ ] Add ensure oxmysql above ensure risk-fingerprint in server.cfg

  • [ ] Restart server and test with a police player

  • [ ] Verify scan history saves correctly


Version: 1.0.0 Framework Support: ESX, QBCore, QBox Database: oxmysql (required) Dependencies: oxmysql

Last updated