ActivityManager

Boss Menu

Guide for configuring sv_bossmenu_public.lua: company bank integration, employee SQL queries, and how to add new/custom systems safely.

Public vs private filesCustomize only server/sv_bossmenu_public.lua. The private file holds the protected logic and should not be edited.

Banking system setup

Set BossMenuPublic.BankingSystem to one of the supported values.

sv_bossmenu_public.lua
BossMenuPublic.BankingSystem = "esx_society"

-- Available values:
-- "auto"
-- "esx_society"
-- "qb_management"
-- "qb-banking"
-- "okok-banking"
-- "snipe-banking"
-- "tgg-banking"
-- "custom_sql"
Auto detectionWith "auto" the script detects the framework and the available banking resources.

Banking resource configuration

Adjust only the section related to your selected banking type.

sv_bossmenu_public.lua
BossMenuPublic.BankingConfig = {
    esx_society = {
        accountPrefix = "society_", -- society_police, society_mechanic...
    },

    qb_management = {
        resourceName = "qb-management", -- or "qbx_management"
    },

    ["qb-banking"] = {},
    ["okok-banking"] = {},
    ["snipe-banking"] = {},
    ["tgg-banking"] = {}
}

Add a new banking system (custom SQL)

If your banking is not in the built-in list, use "custom_sql" and map your table/columns.

sv_bossmenu_public.lua
BossMenuPublic.BankingSystem = "custom_sql"

BossMenuPublic.BankingConfig.custom_sql = {
    getBalance    = "SELECT amount FROM jobs WHERE name = '{job_name}' LIMIT 1",
    balanceColumn = "amount",
    addMoney      = "UPDATE jobs SET amount = amount + {amount} WHERE name = '{job_name}'",
    removeMoney   = "UPDATE jobs SET amount = amount - {amount} WHERE name = '{job_name}'",
}

Supported placeholders: {job_name}, {amount}.

Employee SQL presets

Configure how hire/fire/grade/offline payments are saved in the database.

sv_bossmenu_public.lua
BossMenuPublic.QueryPreset = "esx_legacy"

-- Available presets:
-- "esx_legacy"
-- "qbcore"
-- "custom"

Add a new SQL schema (custom queries)

Use QueryPreset = "custom" and define all required operations.

sv_bossmenu_public.lua
BossMenuPublic.QueryPreset = "custom"

BossMenuPublic.Queries = {
    hire           = "UPDATE my_users SET job = '{job_name}', rank = {grade} WHERE id = '{identifier}'",
    fire           = "UPDATE my_users SET job = 'unemployed', rank = 0 WHERE id = '{identifier}'",
    changeGrade    = "UPDATE my_users SET rank = {grade} WHERE id = '{identifier}'",
    listEmployees  = "SELECT id as identifier, name, rank as job_grade, rank_name as grade_label FROM my_users WHERE job = '{job_name}'",
    listGrades     = "SELECT grade, label FROM my_grades WHERE job = '{job_name}' ORDER BY grade ASC",
    offlinePayment = "UPDATE my_users SET bank = bank + {amount} WHERE id = '{identifier}'",
}

Required keys: hire, fire, changeGrade, listEmployees, listGrades, offlinePayment.

Query placeholders

  • {identifier} → player identifier (license/citizenid)
  • {job_name} → job name (police, mechanic...)
  • {grade} → numeric grade
  • {grade_label} → grade text label
  • {amount} → money amount
Verification checklist
  • Set one banking type only in BankingSystem
  • Verify your target resource starts before activitymanager
  • If using custom SQL, test the getBalance query manually on the DB
  • Ensure custom queries return the expected aliases (identifier, job_grade, grade_label)
  • Restart the resource and check console logs for the detected banking mode