๐ Script Flow
What is this?
The License System lets your server issue, carry, verify, and manage in-game licenses and IDs. Admins design license templates in a visual creator; players pick licenses up from a city clerk, carry them in a card holder, show them to others, and get them checked. There is also an optional underground "fake ID" path with crafting stations and a delivery mission.
Opening the interfaces
Every interface can be opened by a chat command, a usable inventory item, an event, or an optional
keybind โ configured in sh.main.lua under Config.Usage. By default:
- License MDT โ
/licenseMdtor thedevhub_licensesmdtitem. The management tablet (dashboard, lookup, profiles, and the license creator for admins). - Card Holder โ
/licensesor thedevhub_licenseholderitem. Shows the licenses you carry. - Favorites Hand โ
/favoritesor thedevhub_favlicensesitem. Shows your favorite licenses in hand to display them quickly.
With Config.UsePhysicalLicenses = true, licenses are physical inventory items and the /licenses
and /favorites commands are disabled โ players use the items instead.
Getting a license
Visit the License Pickup NPC
Head to the city clerk (the License Pickup blip on the map). Their location is set by
Config.LicensePickUp.
Choose a license and pay
Pick the license you want. If it has a price, choose your payment method (cash or card, per the template's settings). Some licenses may be free or auto-issued on first join.
Receive and carry it
The license is added to your card holder. Lost, expired, or revoked licenses can be picked up again
(controlled by Config.RetakeableLicenseStatus).
You can also buy holder/MDT/favorites items from the same NPC (Config.ItemShop).
Showing & checking licenses
- Show your license โ from the card holder, choose Show. Nearby players within
Config.LicenseShowDistancesee it on screen. Use the on-screen controls to focus, edit its display position, or close it. A cooldown (Config.LicenseShowCooldown) prevents spam. - Check someone else โ target another player and choose Check Licenses (enabled via
Config.PlayerTarget). A search animation plays and you view their card holder. IfallowTakeLicenseis on, you can take a license from them; players can also Give licenses to nearby players.
Managing licenses (MDT)
Open the License MDT to:
- View the dashboard stats and recent activity.
- Look up a license by ID or owner, and search profiles.
- Grant or revoke license permissions (subject to job/grade rules on the template).
- Change a license status (active, suspended, lost, expired, revoked) with a reason.
The built-in License Creator (opened from the MDT) is where templates are designed โ layout,
background, texture, components, icons, data fields, pricing, expiration, and item integration. By
default it is admin-only (Config.CreatorOnlyForAdmins).
The fake ID path (underground)
Find the hideout
Enter the underground hideout (Config.HideoutLocations) and speak to John, the underground
contact (Config.UndergroundNpc).
Buy supplies and take an order
Buy the fake-license supplies John sells (Config.UndergroundItemShop), and optionally take a
fake ID delivery order.
Craft the fake license
Use the crafting stations in the hideout โ the Paper Cutter, Foil Tipper, and Embosser
(Config.Papercutter, Config.Foiltipper, Config.Embosser) โ to forge a fake version of an
eligible license. Pick an avatar photo from Config.FakeIdPhotos.
Deliver it
If you took an order, deliver the finished fake to the buyer at the marked drop-off
(Config.FakeIdMissionConfig) to get paid. Use /cancelMission to abandon an active order.
Scanning at a terminal
Licenses can be verified at a scan terminal. Players drag and hold a license to scan it; the result (verified / failed) is shown. Other resources can open a terminal with a custom scan callback via the exports โ see the Exports page.