Complete documentation

LCK Boss Menu

Install and configure the secure boss-management system, portable tablet, themes, framework bridges, grade salaries, society accounts, and audit history.

ESXQBCoreoxmysqlLua 5.4Server-authoritative
01 / Installation

Installation

  • Keep the folder name exactly lck-bossmenu.
  • Import sql/install.sql into the framework database.
  • Configure the framework, boss locations, and at least one authorized grade in config.lua.
  • Configure and create the society account when society accounts are enabled.
  • Start the resource after oxmysql, the framework, and any optional society provider.
ensure oxmysql
ensure qb-core        # or es_extended
ensure qb-banking     # optional, or esx_addonaccount
ensure lck-bossmenu
No grade is authorized by default

Add explicit grade permissions before first use. This prevents accidental boss access on a fresh installation.

Requirements

  • FiveM with Lua 5.4
  • oxmysql
  • qb-core or es_extended
  • Optional ox_lib, ox_target, or qb-target
02 / Boss tablet

Portable boss tablet

The usable bossmenu_tablet item works alongside command, target, marker, and custom opening methods. Create the item in your framework or inventory definitions before using it.

Config.Tablet = {
    enabled = true,
    item = 'bossmenu_tablet',
    allowOutsideBossLocation = true,
    verifyItemOwnership = true,
    sessionDurationSeconds = 900
}

The resource registers the item through the detected framework and does not consume it. Portable use creates a short-lived server session; item ownership, current job, grade, and permissions are revalidated for every protected request.

Location policy

Set allowOutsideBossLocation = false when tablet users must still be at a configured boss location. Disable ownership verification only for a custom inventory that cannot expose the framework's standard lookup API.

03 / NUI themes

NUI themes

Select a named theme in config.lua. Yellow Black is the default and uses primary #FDFD96 with secondary #000000.

Config.Theme = 'yellow_black'

Config.Themes.custom_name = {
    label = 'Custom Name',
    primary = '#FDFD96',
    secondary = '#000000'
}
yellow_blackmidnight_blueemerald_noiremberpaper_cobalt

Only primary and secondary are required. Optional surface, text, border, status, hover, and focus tokens can override the derived palette. Invalid names and malformed colors safely fall back to Yellow Black.

04 / Framework & database

Framework and canonical data

Config.Framework = 'auto' -- auto, qb, esx
Config.AutoFrameworkPriority = { 'qb', 'esx' }

Auto mode chooses the first started framework in the configured priority. Use a manual value when both frameworks exist. Framework-specific behavior remains isolated in the client and server bridge files.

QB-Core

players

Defaults to citizenid, charinfo, and job. Standard job and character JSON shapes are expected.

ESX Legacy

users

Defaults to identifier, firstname, lastname, job, and job_grade.

Adjust Config.Database for framework forks. SQL identifiers are validated at startup, runtime values use placeholders, and employee data continues to come from the framework's canonical player tables.

05 / Access control

Locations and permissions

Configure every organization's boss locations and grade permissions. The shipped example is commented out so it cannot grant access accidentally.

Config.BossLocations = {
    police = {
        { coords = vector3(440.0, -975.0, 30.0), radius = 2.0 }
    }
}

Config.GradePermissions = {
    police = {
        [4] = {
            view_employees = true,
            hire_employee = true,
            fire_employee = true,
            change_employee_grade = true,
            view_society_balance = true,
            deposit_society_money = true,
            withdraw_society_money = true,
            view_audit_logs = true,
            manage_permissions = false,
            manage_salaries = true
        }
    }
}
Server-authoritative by design

Every protected request rechecks the player, current job and grade, permission, boss location, target organization, grade ceiling, request shape, limits, and cooldown. Stale employee data cannot overwrite a newer job change.

Opening the interface

Config.OpenMethod = 'command' -- command, target, marker, custom
Config.Command = 'bossmenu'
Config.Keybind = 'F6'
Config.Target = 'auto' -- auto, ox_target, qb-target, none

Custom resources can call exports['lck-bossmenu']:OpenBossMenu() or trigger lck-bossmenu:client:open. Both only request the interface and never bypass server authorization.

06 / Grade salaries

Grade salary management

The Grade Salaries page edits salary values only. Amounts are validated against Config.SalaryManagement.minimum and maximum. By default, only the highest framework grade can save salaries and may edit every grade, including its own.

ESX

Supported mapping

Updates the configured job_grades mapping with a parameterized query, refreshes ESX jobs, and updates affected online employees.

QB-Core

Custom hook required

Configure the server-only qbUpdateSalary hook for the exact installed job provider. Without it, the resource returns salary_update_unsupported.

Grade names and grade creation remain framework-owned. Adjust requireHighestGrade and allowOwnGrade only when your organization hierarchy requires different behavior.

07 / Society accounts

Society account providers

01

ESX addon account

Uses the installed shared account export and its account object's addMoney and removeMoney functions. The account must already exist.

02

QB banking

Uses documented GetAccountBalance, AddMoney, and RemoveMoney exports only while the configured resource is started.

03

Custom provider

Supply verified IsAvailable, balance, credit, and debit hooks for another economy resource.

The society page refreshes balance and transaction history every Config.SocietyAccount.refreshIntervalMs milliseconds, which defaults to 3000. Refresh pauses while the transaction form is focused.

No fake balances

If no compatible provider is available, mutations are disabled with society_provider_unavailable. Deposits and withdrawals use compensation logic to avoid silently duplicating or destroying money when a later step fails.

08 / Audit & localization

Audit logs and locales

Successful sensitive actions, rejected unauthorized requests, and failed high-risk actions are stored in lck_bossmenu_audit_logs. Logs and transactions use server-side pagination; full identifiers stay on the server.

Config.AuditLogs.enabled = true
Config.AuditLogs.retentionDays = 90
Config.AuditLogs.pageSize = 25
Config.AuditLogs.maxPageSize = 100

Expired audit rows are removed at startup and once daily. Permission overrides live in lck_bossmenu_permissions, while the append-only society ledger lives in lck_bossmenu_transactions.

Localization

Config.Language = 'en'

Language files live in locales/. Copy locales/en.lua, rename the locale table, and translate every value while preserving keys and placeholders. Missing languages or keys fall back to English.

Need help setting up your boss menu?

Join the LCKSCRIPTS Discord for installation, framework, society provider, and configuration help.

Join Discord