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.