Orbit StudiosOrbit Studios
Orbit Studios Resourcesorbit-lib

Configuration

Complete orbit-lib config.lua reference for frameworks, standalone adapters, targets, inventories, notifications, progress bars, Text UI, and skill checks.

Configuration

Edit resources/[orbit]/orbit-lib/config.lua. This is the only orbit-lib file server owners should modify.

Each selector tells all dependent Orbit resources which integration to call. Values are case-sensitive and must match the keys documented below. After changing a selector or adapter, restart orbit-lib and every resource that depends on it.

Use the public config only

Orbit Lib is escrowed. Configure integrations in config.lua; do not rename the resource, edit runtime files, or copy internal bridge code into dependent resources.

File map

config.lua

Configuration map

Prop

Type

Config.Debug and Config.Gangs are not valid settings. Use Config.CustomGang for the optional custom gang adapter.

Full config file

The current public config has this overall structure. Choose values that match the resources installed on your server; do not blindly keep the example selections.

resources/[orbit]/orbit-lib/config.lua
Config = {}

-- Supported frameworks: qb, esx, qbx, standalone
Config.Framework = 'qbx'

-- Used only when Config.Framework is 'standalone'.
Config.Standalone = {
    identifierType = 'license',
    playerDataCache = 1000,

    defaultMoney = {
        cash = 0,
        bank = 0,
        dirty = 0
    },

    defaultJob = {
        name = 'unemployed',
        label = 'Unemployed',
        grade = {
            name = 'Unemployed',
            level = 0
        }
    },

    fetchName = nil,
    fetchCharInfo = nil,
    fetchMoney = nil,
    fetchJob = nil,
    createUsableItem = nil
}

-- Optional custom gang data for ESX and standalone.
Config.CustomGang = {
    enabled = false,
    fetchGang = function(playerState, source)
        return {
            name = playerState.gangName or '',
            label = playerState.gangName or '',
            grade = {
                name = playerState.gangRankName or '',
                level = 1
            }
        }
    end
}

Config.TargetResource = 'ox_target'
Config.Inventory = 'ox_inventory'

-- Used only with qb-like or ox-like.
Config.CustomInventory = ''
Config.CustomExport = ''

Config.Notify = 'orbit-dynamichud'
Config.Progress = 'orbit-dynamichud'
Config.TextUI = 'orbit-dynamichud'
Config.SkillCheck = 'orbit-dynamichud'

Framework presets

Select the tab for your framework. The target and inventory pair shown is a common starting point, not a requirement; change either when your server uses another supported resource.

resources/[orbit]/orbit-lib/config.lua
Config.Framework = 'esx'
Config.TargetResource = 'ox_target'
Config.Inventory = 'ox_inventory'

es_extended must start before orbit-lib. With Config.Notify = 'framework', notifications use the ESX notification event. With Config.Progress = 'framework', esx_progressbar must be installed and started.

resources/[orbit]/orbit-lib/config.lua
Config.Framework = 'qb'
Config.TargetResource = 'qb-target'
Config.Inventory = 'qb-inventory'

qb-core must start before orbit-lib. With Config.Notify = 'framework', notifications use QBCore. With Config.Progress = 'framework', the QB progressbar resource must be installed and started.

resources/[orbit]/orbit-lib/config.lua
Config.Framework = 'qbx'
Config.TargetResource = 'ox_target'
Config.Inventory = 'ox_inventory'

qbx_core must start before orbit-lib. Framework notifications and progress bars fall back to ox_lib on QBX, so selecting ox_lib directly makes that requirement clearer.

resources/[orbit]/orbit-lib/config.lua
Config.Framework = 'standalone'
Config.TargetResource = 'ox_target'
Config.Inventory = 'ox_inventory'

Standalone mode has no framework resource. Configure the adapters described under Standalone mode. Framework notifications and progress bars fall back to ox_lib.

Interface providers

The four interface selectors are independent. For example, a server can use Orbit Dynamic HUD 2.0 notifications and Text UI while keeping ox_lib progress bars and skill checks.

Use DynamicHUD for every supported interface:

resources/[orbit]/orbit-lib/config.lua
Config.Notify = 'orbit-dynamichud'
Config.Progress = 'orbit-dynamichud'
Config.TextUI = 'orbit-dynamichud'
Config.SkillCheck = 'orbit-dynamichud'

The provider selector intentionally remains orbit-dynamichud for bridge compatibility. The FiveM resource folder and ensure entry are orbit-dynamichud-v2.

Start orbit-lib before orbit-dynamichud-v2, because the HUD depends on the library. DynamicHUD must be fully started before another resource calls one of these bridges. The bridge passes normalized notification, progress-bar, Text UI, and skill-check data to the corresponding DynamicHUD interface.

See DynamicHUD Interface APIs for supported interface options.

Use ox_lib for every interface:

resources/[orbit]/orbit-lib/config.lua
Config.Notify = 'ox_lib'
Config.Progress = 'ox_lib'
Config.TextUI = 'ox_lib'
Config.SkillCheck = 'ox_lib'

ox_lib is already a required orbit-lib dependency and must start first. Progress uses the ox_lib progress-bar shape, Text UI uses the ox_lib show/hide/status functions, and skill checks use the ox_lib-compatible difficulty and input format.

Only notifications and progress bars accept the framework value:

resources/[orbit]/orbit-lib/config.lua
Config.Notify = 'framework'
Config.Progress = 'framework'
Config.TextUI = 'ox_lib'
Config.SkillCheck = 'ox_lib'

QB uses QBCore notifications and the progressbar resource. ESX uses its notification event and esx_progressbar. QBX and standalone fall back to ox_lib. Text UI and skill checks do not have a framework option; select ox_lib or orbit-dynamichud for each.

SettingSupported valuesMissing or invalid provider behavior
Config.Notifyframework, ox_lib, orbit-dynamichudLogs Unmatching Notify Resource; no notification is shown.
Config.Progressframework, ox_lib, orbit-dynamichudLogs Unmatching Progress Resource and runs the cancellation callback when supplied.
Config.TextUIox_lib, orbit-dynamichudLogs Unmatching Text UI Resource; show/hide returns false.
Config.SkillCheckox_lib, orbit-dynamichudLogs Unmatching Skill Check Resource; the check returns false and uses the cancellation callback when supplied.

Provider names are exact

Do not use older values such as ox, qb, esx, or qbx for the interface selectors. Use framework, ox_lib, or orbit-dynamichud exactly as listed for that setting.

Targets

Config valueResourcePurpose
ox_targetoverextended/ox_targetCreates OX-style entity, model, zone, and global interactions.
qb-targetqbcore-framework/qb-targetCreates QB-style entity, model, zone, and global interactions.
resources/[orbit]/orbit-lib/config.lua
Config.TargetResource = 'ox_target'

The selected target resource must start before orbit-lib. Restart dependent resources after switching target systems so their interactions are registered again.

Inventories

Config valueResource or adapterNotes
ox_inventoryoverextended/ox_inventoryBuilt-in OX inventory adapter.
qb-inventoryqbcore-framework/qb-inventoryBuilt-in current QB inventory adapter.
ps-inventoryProject-Sloth/ps-inventoryBuilt-in Project Sloth adapter.
lj-inventoryloljoshie/lj-inventoryBuilt-in LJ inventory adapter.
qb-likeCustom inventoryRequires exports compatible with the QB-style adapter.
ox-likeCustom inventoryRequires exports compatible with the OX-style adapter.

For a built-in inventory, leave both custom values empty:

resources/[orbit]/orbit-lib/config.lua
Config.Inventory = 'ox_inventory'
Config.CustomInventory = ''
Config.CustomExport = ''

For a compatible custom inventory, select its API family and provide its real resource name:

resources/[orbit]/orbit-lib/config.lua
Config.Inventory = 'ox-like'
Config.CustomInventory = 'my_inventory'
Config.CustomExport = ''

Config.CustomExport is normally empty. Set it only when the name used in exports[...] differs from the folder/resource name:

resources/[orbit]/orbit-lib/config.lua
Config.Inventory = 'qb-like'
Config.CustomInventory = 'custom_inventory_resource'
Config.CustomExport = 'inventory_api'

Selecting qb-like or ox-like does not make an arbitrary inventory compatible. Its exports and argument/return shapes must match the corresponding built-in bridge.

Standalone mode

Standalone mode builds normalized player data without ESX, QB, or QBX. Defaults keep calls from failing, but production servers should replace placeholder money, job, and character data with adapters tied to their own systems.

SettingArgumentsExpected result
identifierTypeNot a functionIdentifier prefix used as citizenid, such as license, steam, discord, or fivem.
playerDataCacheNot a functionClient cache duration in milliseconds. Use 0 to disable reuse of cached server data.
fetchNamesource, playerStatePlayer or character display name string.
fetchCharInfosource, playerState, defaultsCharacter table containing fields needed by your Orbit resources.
fetchMoneysource, playerState, defaultsMoney table, normally including cash, bank, and dirty.
fetchJobsource, playerState, defaultsJob table containing name, label, and a grade table.
createUsableItemitem, callbackRegister the supplied item name with your item-use system.

Use the provided defaults as a safe base and return the same data shape:

resources/[orbit]/orbit-lib/config.lua
Config.Standalone.fetchMoney = function(source, playerState, defaults)
    defaults.cash = playerState.cash or 0
    defaults.bank = playerState.bank or 0
    defaults.dirty = playerState.dirtyMoney or 0
    return defaults
end

Config.Standalone.fetchJob = function(source, playerState, defaults)
    defaults.name = playerState.jobName or 'unemployed'
    defaults.label = playerState.jobLabel or 'Unemployed'
    defaults.grade = {
        name = playerState.jobGradeName or 'Unemployed',
        level = playerState.jobGrade or 0
    }
    return defaults
end

Adapter failures are caught and logged by name. When an adapter returns nil or fails, orbit-lib uses its configured/default fallback value.

Custom gang data

Config.CustomGang is read only by ESX and standalone bridges. QB and QBX already obtain gang data from their framework player data.

resources/[orbit]/orbit-lib/config.lua
Config.CustomGang = {
    enabled = true,
    fetchGang = function(playerState, source)
        return {
            name = playerState.gangName or '',
            label = playerState.gangLabel or playerState.gangName or '',
            grade = {
                name = playerState.gangRankName or '',
                level = playerState.gangRank or 0
            }
        }
    end
}

Leave enabled = false when your Orbit resources do not use a custom gang system. The callback must return a gang table with name, label, and grade when enabled.

Apply and verify

  1. Save resources/[orbit]/orbit-lib/config.lua.
  2. Confirm ox_lib, oxmysql, the selected framework, inventory, and target have started.
  3. Start or restart orbit-lib.
  4. Start or restart Orbit Dynamic HUD 2.0 if any interface selector uses it.
  5. Restart every dependent Orbit resource so it reloads the bridge selection.
  6. Test one inventory action, target interaction, notification, progress bar, Text UI prompt, and skill check used by your installed resources.

On this page