NR_Management

A boss menu and management panel with a custom React tablet UI, employee management, society banking, bonus payments, group chat, job applications, duty tracking, and a Job Center NPC.

Features

Dependencies

Resource Description Required
ox_lib Notifications and shared utilities Yes
oxmysql MySQL database for all management data Yes
ESX / QBCore / QBX Any supported framework (auto-detected) Yes
Banking resource Renewed-Banking, qb-banking, fd_banking, tgg-banking, kartik-banking, or okokBanking (auto-detected) Yes
ox_target / qb-target Third-eye interaction for Job Center NPC Optional
NR_Tablet Opens as a tablet app instead of standalone Optional

Supported Banking Systems

The script auto-detects the first running banking resource from this list:

Renewed-Banking, qb-banking, fd_banking,
tgg-banking, kartik-banking, okokBanking

If no banking resource is detected, a fallback system is used that stores society funds directly in the database.

Installation

Step 1: Download

Download NR_Management from your Tebex purchase and extract it to your resources folder:

server/
  └── resources/
      └── [echo]/
          └── NR_Management/

Step 2: server.cfg

Add the resource to your server configuration. ox_lib, oxmysql, and your banking resource must start before NR_Management:

ensure oxmysql
ensure ox_lib
ensure ox_target    # or qb-target (optional, for Job Center NPC)
ensure NR_Management

Step 3: Database

The database tables are created automatically on first start. No manual SQL setup required. Seven tables are created:

Step 4: Configuration

Edit config.lua to add your jobs, set the theme color, and configure the Job Center NPC location.

Step 5: Restart

Restart your server to load the resource.

How It Works

1. Opening the Panel

Press F6 (default keybind) to open the management panel. If using NR_Tablet, the app opens from within the tablet interface. You must have a job listed in Config.Jobs to access it.

2. Dashboard

The dashboard shows an overview of your organization: a list of all employees with their online/offline and on-duty status, the society fund balance, recent transactions, total duty hours per employee, and the number of pending job applications.

3. Employee Management

Managers (employees at or above minGrade) can:

4. Society Banking

Managers can manage the organization's society funds:

All transactions are logged with the employee name, amount, type, and timestamp.

5. Bonus Payments

Managers can pay bonuses to any online employee from the society fund. The amount is deducted from society funds and deposited directly into the employee's bank account.

6. Group Chat

Every job has its own group chat visible to all employees of that job. Messages are persisted to the database so chat history is available across sessions. New messages trigger real-time notifications for online employees.

7. Job Applications

The application system works in two parts:

Managers can add or remove custom questions per job. When an application is approved, the player is automatically hired into the job (whether they are online or offline).

8. Duty Tracking

The system automatically tracks when employees clock in and out of duty. Total duty minutes are displayed per employee on the dashboard. If a player disconnects while on duty, their session is automatically closed.

9. Job Center NPC

A configurable ped spawns at the location defined in Config.JobCenter. Players interact with it using ox_target or qb-target to open a job browser where they can view available positions and submit applications. A map blip marks the location.

Configuration

General Settings

Config.Debug = false          -- Enable debug mode
Config.Theme = '#00ffff'      -- UI accent color (any hex)
Config.Keybind = 'F6'         -- Open keybind (standalone mode)
Config.UsingNRTablet = true   -- Open as NR_Tablet app

Job Definitions

Config.Jobs = {
    ['police'] = {
        label = 'Police Department',
        minGrade = 3,   -- Grade required for full management access
    },
    ['ambulance'] = {
        label = 'Emergency Medical Services',
        minGrade = 2,
    },
    ['mechanic'] = {
        label = 'Mechanic Shop',
        minGrade = 1,
    },
}

Add any job that exists in your framework. The minGrade controls which grade level and above can hire, fire, promote, manage banking, and handle applications. Employees below minGrade can still view the dashboard, chat, and see their own duty hours.

Job Center NPC

Config.JobCenter = {
    enabled = true,
    ped = {
        model = 's_f_y_airhostess_01',   -- Ped model
        coords = vec4(-265.09, -963.0, 31.22, 206.28),
        scenario = 'WORLD_HUMAN_CLIPBOARD',
    },
    blip = {
        enabled = true,
        sprite = 408,
        color = 3,
        scale = 0.7,
        label = 'Job Center',
    },
}

Set enabled = false to disable the Job Center NPC entirely. Change the ped model, coordinates, and blip settings to match your server's layout.

Access Control

The management panel uses a two-tier access system:

Access Level Requirement Permissions
Employee Any grade in a configured job View dashboard, group chat, own duty hours
Manager Grade ≥ minGrade All employee permissions plus hire, fire, promote, banking, bonuses, applications

Multi-Banking Support

NR_Management auto-detects your banking resource and uses its API for society fund operations. The following systems are supported:

Banking Resource Detection
Renewed-BankingAuto-detected (with column auto-detection for amount vs money)
qb-bankingAuto-detected
fd_bankingAuto-detected
tgg-bankingAuto-detected
kartik-bankingAuto-detected
okokBankingAuto-detected

If no banking resource is found, society funds are managed via the nr_management_funds database table as a fallback.

Database

NR_Management uses oxmysql with seven auto-created tables:

nr_management_funds

Stores society fund balances per job (used by fallback banking only).

nr_management_transactions

Logs all banking operations — deposits, withdrawals, transfers, and bonus payments with employee name, amount, and timestamp.

nr_management_duty

Tracks duty sessions with clock-in time, clock-out time, and total minutes per session. Handles disconnects gracefully.

nr_management_chat

Per-job group chat messages with sender name, message content, and timestamp.

nr_management_app_questions

Custom application questions per job, added and removed by managers.

nr_management_applications

Submitted applications with applicant info, answers (JSON), and status (pending/approved/denied).

nr_management_app_messages

Messages exchanged between applicants and managers on specific applications.

Localization

All UI text is configurable in locales.lua. Override any string to change labels, notifications, and button text. Example:

Locales.HireSuccess = 'Successfully hired %s'
Locales.FireSuccess = 'Successfully fired %s'
Locales.PromoteSuccess = 'Successfully promoted %s to grade %s'
Locales.DepositSuccess = 'Deposited $%s into society fund'
Locales.WithdrawSuccess = 'Withdrew $%s from society fund'
Locales.BonusPaid = 'Paid $%s bonus to %s'
Locales.ApplicationApproved = 'Application approved - %s has been hired'
Locales.ApplicationDenied = 'Application denied'
Locales.NoAccess = 'You do not have access to this panel'

Exports

NR_Management provides a client-side export to open the panel programmatically:

exports['NR_Management']:OpenManagementPanel()

This can be used from other scripts or custom keybinds to open the management UI.

Troubleshooting

UI not opening

No access to management features

Banking not working

Job Center NPC not spawning

Employees showing wrong status

Database errors

Applications not showing

Support

For paid script support, open a ticket in our Discord server for priority assistance.