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 Files

Customize only: server/sv_bossmenu_public.lua

Banking System Setup

Set BossMenuPublic.BankingSystem to one of the supported values.

BossMenuPublic.BankingSystem = "esx_society"

-- Available values:
-- "auto"
-- "esx_society"
-- "qb_management"
-- "qb-banking"
-- "okok-banking"
-- "snipe-banking"
-- "tgg-banking"
-- "custom_sql"
Tip: with "auto" the script detects framework + available resources.

Banking Resource Configuration

Adjust only the section related to your selected banking type.

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.

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 database.

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.

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 is started before activitymanager
  • If using custom SQL, test getBalance query manually on DB
  • Ensure custom queries return expected aliases (identifier, job_grade, grade_label)
  • Restart resource and check server console logs for detected banking mode