Driving School Job Configuration

2 min read

Configuration

config.lua is bootstrap only. It holds the few values that must be known before the database exists or the client finishes loading: which framework and target to use, who counts as an admin, the inventory item names, and where school money is held.

Everything else is a runtime setting (prices, ped models, opening hours, the course flow, attempt limits, exam parameters, blips). Their defaults live in shared/defaults.lua and you edit them in-game through the Creator, which stores your changes in the dmv_settings table. You should not need to edit either file.

Core

Config.Framework = 'auto'       -- 'auto' detects ESX / QBCore / QBox
Config.Target    = 'ox_target'  -- 'ox_target' | 'qb-target' | 'none' (E-key + 3D text)
Config.Debug     = false        -- console prints; keep false in production

Admin gating (who may open the Creator)

-- LEAVE false ON A LIVE SERVER. true bypasses every admin gate.
Config.DevOpenAdmin = false

Config.CreatorAce = 'group.admin'          -- ACE permission that passes the gate
Config.CreatorIds = { --[[ 'license:...', 'steam:...' ]] }  -- explicit identifiers
Config.AdminGroups = { 'admin', 'superadmin' }  -- framework groups that also pass
Config.CreatorPermission = 'dmv.creator'   -- ACE for the /dmvtrack editor

Config.DevOpenAdmin = true opens the whole Creator to every player: server-wide settings, creating and deleting schools (and their framework jobs), firing staff, and deleting routes. It exists only for solo testing without an ACE. Never distribute a build with it on.

Money and staff pay

-- Where a school's balance is held. An INSTALL decision, not a runtime one.
Config.SchoolBank = 'internal'  -- 'internal' | 'renewed' | 'qb' | 'esx'

-- Let a player-run school's boss edit their own job's grade pay. OFF by default.
Config.SalaryEditing = { enabled = true, min = 0, max = 5000 }  -- per grade, not per person

See Dependencies: banking before changing SchoolBank.

Items

Item names the resource registers handlers for. Full definitions on the Items page.

Config.TheorySheetItem  = 'dmv_sheet_theory'       -- blank theory paper
Config.TheoryDoneItem   = 'dmv_sheet_theory_done'  -- completed paper
Config.TheoryBookItem   = 'dmv_theory_book'
Config.EyeTestPaperItem = 'dmv_eyetest_paper'
Config.LicenceCardItem  = 'dmv_licence_card'
Config.ConeItem         = 'cone'
Config.EyeTestEmsJobs   = { 'ambulance', 'ems', 'doctor' }  -- who can sign off an eye test

Supplies and vehicle props

Config.Supplies = { --[[ theory papers, books, eyesight forms, cones, blank cards ]] }
Config.VehicleProps = {
    { id = 'sign',  model = 'wx_drivingschool_roof_sign',  label = 'Roof sign' },  -- STUDENT DRIVER
    { id = 'plate', model = 'wx_drivingschool_learn_sign', label = 'L plate'   },
}

Where each prop sits on a given car model is configured in-game with /dmvvehprops and stored per model.