Customization
mic_boosting has two layers. A short config.lua holds the handful of things decided once — framework, how the tablet opens, who is an admin, the language. Everything about gameplay lives in the database and is edited live from the admin panel (/boostingconfig), with no restart.
Which file decides what
Section titled “Which file decides what”| Where | What it decides | Open to edit |
|---|---|---|
config.lua | Framework, tablet item/command, admin access, language, interaction system, police jobs, test pins | Yes |
shared/prices.lua | Starting values for six economy settings — read only on the very first start (see below) | Yes |
locales/*.lua | Every notification and every tablet string, one file per language; locales/locale.lua is the loader | Yes |
bridge/server_bridge.lua | Framework, money, items, usable item, police count, admin check, giving a car to a garage | Yes |
bridge/client_bridge.lua | Notifications, the text prompt, target interactions, the police dispatch alert | Yes |
items/ | Item definitions for ox_inventory, QBCore and ESX, and the seven item images | Yes |
ui/ | The tablet itself (HTML, CSS, JS) | Escrowed |
client/, server/ | The game logic and the admin panel back end | Escrowed |
Admin panel (/boostingconfig) | Spots, drop-offs, classes, cars, guards, minigames, tool shop, progression, economy | In game |
The open files are the ones listed in escrow_ignore in fxmanifest.lua: config.lua, locales/, shared/ and bridge/.
config.lua
Section titled “config.lua”Framework and language
Section titled “Framework and language”| Option | What it does | Default |
|---|---|---|
Config.Framework | 'auto' checks for qb-core, then es_extended, else standalone. QBox is found as qb-core, through its QBCore compatibility. Or force 'qbcore' (also for QBox), 'esx', 'standalone' | 'auto' |
Config.CoreResource | In the file, but not read by this version: detection always looks for resources named qb-core and es_extended | '' |
Config.Locale | Language for notifications and the tablet. Falls back to English | 'en' |
Opening the tablet
Section titled “Opening the tablet”| Option | What it does | Default |
|---|---|---|
Config.TabletOpenMode | 'item', 'command' or 'both' | 'item' |
Config.TabletItem | The usable item that opens it | mic_boosting_tablet |
Config.TabletCommand | The command that opens it, in command or both mode | boosting |
Admin access
Section titled “Admin access”| Option | What it does | Default |
|---|---|---|
Config.AdminCommand | Command that opens the admin panel | boostingconfig |
Config.AdminGroups | Ranks that count as admin. ESX compares the player’s group; QBCore asks HasPermission for each name | admin, superadmin, god |
Config.AdminAce | An ACE that also makes you admin. The only route on standalone. false turns it off | command |
The same check decides who sees the Admin tab inside the tablet. More in ⌨️ Commands & permissions.
Interaction and police
Section titled “Interaction and police”| Option | What it does | Default |
|---|---|---|
Config.InteractionSystem | How the lockpick prompt appears on the car: 'ox_target', 'qb_target' or 'drawtext' (press E) | 'ox_target' |
Config.PoliceJobs | Jobs counted for each class’s minimum police online | police, sheriff, lspd, bcso |
With ox_target the car also shows a separate EMP Jammer option to anyone carrying one. In the other modes the jammer is still used — automatically, when the lockpick starts.
Testing
Section titled “Testing”| Option | What it does | Default |
|---|---|---|
Config.ForceDropoffId | Sends every contract to this drop-off | nil (random) |
Config.ForceLocationId | Spawns every contract at this pickup spot | nil (random) |
Locations.BlipRadius | Radius in metres of the search circle around the target car | 150.0 |
shared/prices.lua — the first start only
Section titled “shared/prices.lua — the first start only”This file seeds six economy values into the database the first time the resource starts (when the settings table is empty). After that, editing it does nothing — change them in the admin panel’s Settings tab.
Prices.Tools in the same file is not what the tool shop sells: the shop reads its catalogue from the admin panel’s Market tab.
The admin panel
Section titled “The admin panel”/boostingconfig opens it on Locations. Add a tab to open it somewhere else: locations, dropoffs, classes, vehicles, setups, progression, minigames, market or settings — for example /boostingconfig classes.
| Tab | What you manage there |
|---|---|
| Locations | Pickup spots: a car position and four guard positions each, the allowed classes and the guard setup per class. Teleport, reorder, edit, delete, or place a new one in the world |
| Drop-Offs | Where cars are delivered. Place new ones in the world, teleport, delete |
| Classes | Everything per class (table below) |
| Vehicles | The car pool each class draws its targets from |
| NPC Setups | Named guard loadouts and their weapons |
| Progression | Challenges, milestones, achievements and perks |
| Minigames | Each minigame, its difficulty settings, on/off, and which classes use it |
| Market | The tool shop: items and buffs, price, currency (MB or cash), value, minimum class, on/off |
| Settings | Economy, heat, the Tools tab and the drop-off marker |
Placing in the world. New spots and drop-offs are placed with a ghost: E confirms, the mouse wheel rotates, Backspace aborts. A pickup spot is the car first, then four guards, then a name.
Classes
Section titled “Classes”Six ship: D, C, B, A, S and S+.
| Setting | What it does |
|---|---|
| Label, minimum level | The name shown and the level needed to take it (D 0, C 3, B 6, A 10, S 15, S+ 20) |
| XP range, payout range | What a delivered car gives, rolled between the two values |
| Time limit | Minutes to deliver |
| Cooldown | Seconds before the same player can take another |
| Queue min / max | How long the queue takes to find a contract |
| Daily limits | Contracts per player and per crew per day (0 = unlimited) |
| Max lockpick attempts | Tries before the lock gives up |
| Police alert | Whether police get a dispatch alert for this class |
| Heat gain | Heat added per job |
| Min police online | Police needed online to join or accept. Ships at 2 for every class |
| Wanted stars | Wanted level given to the thief once the car is open (D 1 … S+ 5) |
Settings
Section titled “Settings”| Setting | What it does | Shipped value |
|---|---|---|
| VIN Scratch Multiplier | The VIN-scratch fee is 35% of the payout × this value, paid in MB | 4.0 |
| XP per Level | XP needed for the next level = level × this value | 500 |
| Heat Decay per Minute | Heat removed every minute from players who are online | 2 |
| Max Heat | At this heat, contracts are refused until it cools | 100 |
| Hide Locked Items | Hides tool-shop items above the player’s class | Off |
| Dropoff marker | On/off, marker type, colour (RGBA) and size | On, type 2, red |
| Queue Fee, Crypto Rate | Listed in the panel. In this version joining the queue is free and a delivery credits its full payout in MB | 0, 0.10 |
Starting over
Section titled “Starting over”boostingseed, typed in the server console, wipes the configuration tables and puts the shipped defaults back. Player data — profiles, levels, MB, crews, contracts, market listings — is not touched.
Languages
Section titled “Languages”Eleven ship in locales/: en, es, fr, pt (Brazilian), de, tr, it, nl, pl, cs, ru. Set Config.Locale to one of them. A key missing from a language falls back to English.
To add one:
- Copy
locales/en.luatolocales/<code>.luaand change the language code at the top of the table. - Translate the values in both halves:
script(notifications — keep%sand%d) andui(the tablet — keep the{name}placeholders).date.intl_localesets the date format on the lock screen. - Add the file to
shared_scriptsinfxmanifest.lua, afterlocales/en.lua, thenrefresh. - Set
Config.Localeto the new code.
The bridge
Section titled “The bridge”Both bridge files are open, and they are where a custom framework, inventory, notification or dispatch gets plugged in.
bridge/server_bridge.lua
| Function | What it is for |
|---|---|
| Framework detection | Picks qbcore, esx or standalone and prints it |
GetPlayerIdentifier | citizenid on QBCore, identifier on ESX, license: on standalone |
GetPlayerJob, GetPoliceCount | Job names, and how many players hold a job in Config.PoliceJobs |
AddMoney, RemoveMoney | Cash rewards and cash purchases use the money account |
AddItem, RemoveItem, HasItem | ox_inventory first when it is running, otherwise the framework |
RegisterUsableItem | Makes the tablet item usable (ESX and QBCore; nothing on standalone) |
GiveVehicle | Puts a VIN-scratched car in the garage: owned_vehicles on ESX, player_vehicles in pillboxgarage on QBCore |
IsAdmin | The ACE, then Config.AdminGroups |
Notify | Framework notification from the server |
bridge/client_bridge.lua
| Function | What it is for |
|---|---|
Notify | QBCore or ESX notification, native feed on standalone |
ShowTextUI, HideTextUI | The prompt in drawtext mode. Commented examples for okokTextUI and cd_drawtextui |
ClientHasItem | Client item check, used by the EMP option on the car |
AddEntityInteraction, RemoveEntityInteraction | ox_target / qb-target / drawtext on the car |
PoliceDispatch | Runs on each police client when an alert fires. Default: a notification and a flashing blip for 60 seconds. Commented examples for cd_dispatch and ps-dispatch |
Most notifications a player sees come from inside the tablet as its own toasts, not through the framework.