Configuration
All configuration is done through data/config.lua. This file is not escrowed and can be freely edited.
Main Config
return {
-- Language: 'en', 'es' (add your own in locales/)
language = 'en',
-- Framework override: 'qbox', 'qbcore', 'esx', 'standalone'
-- Leave as false for auto-detection (recommended)
frameworkOverride = false,
-- Money type used by your framework
-- 'cash', 'bank', or 'black_money' (depends on your framework)
moneyType = 'cash',
-- HUD control while the customs UI is open (see HUD section below)
hud = {
enabled = true,
onOpen = {}, -- client events fired when the UI opens
onClose = {}, -- client events fired when the UI closes
onOpenExports = {}, -- exports called when the UI opens
onCloseExports = {}, -- exports called when the UI closes
},
-- Maximum concurrent customization sessions
maxBuckets = 100,
-- Starting bucket ID (avoid conflicts with other resources)
baseBucketId = 1000,
-- Hide the player ped inside customs so it never blocks the camera
hidePlayer = true,
-- Developer-only live camera tuning (press F6 in the bay). Leave false for release.
cameraTuning = false,
-- Interior location where players are teleported
customizationLocation = vector4(991.91, -2995.17, -40.7, 90.68),
}Config Options
`language`
Sets the UI language. Ships with 'en' (English) and 'es' (Spanish). Add your own by creating a new file in locales/ following the existing format.
`frameworkOverride`
Leave as false to let the bridge auto-detect your framework. Set manually only if auto-detection fails. Valid values: 'qbcore', 'qbox', 'esx', 'standalone'.
`moneyType`
The currency type to charge players. Must match your framework's money system. Valid values: 'cash', 'bank', or 'black_money' (availability depends on your framework). Under standalone mode this is ignored — all modifications are free.
`hud`
Controls how the server's HUD is handled while the customs UI is open. The native GTA HUD and minimap are always hidden every frame so the minimap can't re-appear over the UI. Custom NUI HUDs (ps-hud, ox_hud, qs-hud, hud_apx, esx_hud, and more) are auto-detected and toggled through their own API — no edits to your HUD resource are required. The hooks below are only an escape hatch for HUDs that aren't auto-supported.
`hidePlayer`
When true (default), the player ped is hidden while inside the customs UI so it never blocks the camera — especially the interior shots (steering wheel, dashboard, seats).
`cameraTuning`
Developer-only tool. When true, press F6 inside the customs UI (after selecting a part) to nudge that part's camera and copy the exact values for fine-tuning per server. Leave this false for release builds.
`maxBuckets`
Maximum number of players that can be customizing simultaneously. Each player is placed in an isolated routing bucket. Default 100 is suitable for most servers.
`baseBucketId`
The first routing bucket ID used. Set this higher if you have other resources that use routing buckets to avoid ID conflicts.
`customizationLocation`
The vector4 coordinates of the interior where vehicles are teleported for customization. The default location is an underground tunnel that ships with GTA V.
Pricing Configuration
All prices are configured in individual data files:
Performance Pricing (`data/performance.lua`)
-- Engine upgrades: base price + (level * levelPrice)
-- Example: Level 3 engine = $5000 + (3 * $2500) = $12,500
['Engine'] = {
id = 11,
price = 5000,
levelPrice = 2500,
}Body Mod Pricing (`data/decals.lua`)
Each body mod category has a price field. The price scales across available options:
['Spoiler'] = {
id = 0,
price = 2000, -- Highest option costs $2000
}Paint Pricing (`data/colors.lua`)
Individual colors have their own price:
{ label = 'Metallic Black', id = 0, price = 200 },Free Zones
Set free = true on any location in the config to make all modifications free at that location. Useful for mechanic job shops.
Localization
Create a new file in locales/ (e.g., locales/de.lua) following the English template:
return {
notify_title = 'Orb Customs',
shop_full = 'Customs shop is full, please wait',
help_text = 'Press ~INPUT_TALK~ to open Customs',
vehicle_fixed = 'Vehicle fixed!',
already_fixed = 'Vehicle is fixed already',
cant_afford_repair = 'You cannot afford this repair',
already_owned = 'You have this mod already',
cant_afford = 'You can\'t afford this',
repair_first = 'Please repair your car!',
preview_on = 'Preview Mode: On',
preview_off = 'Preview Mode: Off',
stance_applied = 'Stance modifications applied!',
stance_cant_afford = 'You cannot afford these stance modifications',
stance_applied_price = 'Stance modifications applied! ($%d)',
ui_load_error = 'Could not load UI, did you download the release?',
}Then set language = 'de' in data/config.lua.