Items
The script uses a small set of ox_inventory items. Four are usable (their client.export drives the script's own logic), the rest are plain props. All item names are set in config.lua.
Item reference
| Item | Usable | Role |
|---|---|---|
dmv_sheet_theory | ✅ export | blank theory paper (an enrolled candidate uses it to sit the exam) |
dmv_sheet_theory_done | ✅ export | completed theory paper (an instructor uses it to mark) |
dmv_eyetest_paper | ✅ export | eyesight form (an on-duty EMS or doctor fills it in; everyone else reads it) |
cone | ✅ export | practice cone (used to place a cone; picking one back up returns it) |
dmv_theory_book | No | theory study book (handed out on enrolment) |
dmv_licence_card | No | blank license card (consumed when a license is granted, if used) |
driver_license | No | the physical license (an ox_inventory default; carries the categories held) |
ox_inventory
Add these to ox_inventory/data/items.lua. The four usable items must carry a client.export pointing at the resource, or "use" does nothing:
['dmv_sheet_theory'] = { label = 'Theory Paper (Blank)', weight = 10, stack = true, close = true,
consume = 0, client = { export = 'vs-dmvjob.dmv_sheet_theory' } },
['dmv_sheet_theory_done'] = { label = 'Theory Paper (Completed)', weight = 10, stack = false, close = true,
consume = 0, client = { export = 'vs-dmvjob.dmv_sheet_theory_done' } },
['dmv_eyetest_paper'] = { label = 'Eyesight Test Form', weight = 10, stack = false, close = true,
consume = 0, client = { export = 'vs-dmvjob.dmv_eyetest_paper' } },
['cone'] = { label = 'Cone', weight = 50, stack = true, close = true,
consume = 0, client = { export = 'vs-dmvjob.cone' } },
['dmv_theory_book'] = { label = 'Driving Theory Book', weight = 400, stack = false },
['dmv_licence_card'] = { label = 'Blank Licence Card', weight = 5, stack = true },
Every usable item needs consume = 0 and the matching client.export. Without them, using the theory paper, eyesight form, or cone silently does nothing.
The physical license: driver_license
The license card ox_inventory hands players is driver_license, an ox_inventory default you likely already have. It carries metadata with the categories held, which the script writes and reads directly. If your inventory does not define it, add it, or the card silently fails to issue while the license record itself is still granted.
Usable-item exports
| Export | Item | Behaviour |
|---|---|---|
vs-dmvjob.dmv_sheet_theory | dmv_sheet_theory | an enrolled candidate sits the theory exam; anyone else is told to enrol |
vs-dmvjob.dmv_sheet_theory_done | dmv_sheet_theory_done | an on-duty instructor of the candidate's school marks it; everyone else reads it |
vs-dmvjob.dmv_eyetest_paper | dmv_eyetest_paper | an on-duty EMS or doctor records a vision result; everyone else reads it |
vs-dmvjob.cone | cone | opens the cone placer (placing one removes it from the inventory) |
Item images
Give every item an image in ox_inventory/web/images/ (matching the item name) so it does not render as a blank box.
On a player-run school these items are consumable supplies: staff hand papers, books, and forms out of the school stash, and the owner restocks them for money from the tablet. See Running a school.