Skip to main content

Supported Scripts

XR-MDT dynamically embraces a highly versatile bridge architecture in editable/ to conform natively with your stack.

🛠️ Framework Support

FrameworkResourceStatus
Qboxqbx_core✅ Full — Uses exports.qbx_core:GetPlayer(), CreateUseableItem()
QB-Coreqb-core✅ Full — Uses QBCore.Functions.*, QBCore.Commands.Add()
ESX Legacyes_extended✅ Full — ESX.GetPlayerFromId(), RegisterUsableItem(), server callbacks
[!NOTE] Framework is detected automatically at startup. Priority: qbx_coreqb-corees_extended. You can override this with Config.Framework = 'qb' in config.main.lua.

💼 Inventory Support

InventoryResourceIntegration Level
Ox Inventoryox_inventory⭐ Best — Uses registerHook('useItem') to prevent item consumption; supports item metadata for documents and bodycam states
QB Inventoryqb-inventory✅ Full — Via QBCore.Functions.CreateUseableItem()
Quasar Inventoryqs-inventory✅ Full — Overlapped against QB inventory structure
OtherVia manual item registration in sv_items.lua
[!TIP] When ox_inventory is detected, the Bridge automatically uses OxInventory:GetItemCount(), AddItem(), and RemoveItem() instead of framework-specific methods. This overrides all other inventory methods.

💵 Finance / Banking Integrations

The Bridge.Bank in editable/server/main.lua auto-detects your banking resource:
ResourceFrameworkDetection Method
Renewed-BankingAllGetResourceState('Renewed-Banking')
xr-bankAllGetResourceState('xr-bank')
qbx_managementQboxGetResourceState('qbx_management')
qb-bankingQBGetResourceState('qb-banking')
qb-managementQBGetResourceState('qb-management')
esx_addonaccountESXSociety accounts via GetSharedAccount()
[!IMPORTANT] All banking transactions (fines paid via LSPD, medical bills via EMS, bonuses via Business) are automatically recorded in the bank_statements table. This powers the BizPad financial dashboard. Make sure this table exists in your database.

🚔 Jail Integrations

The Bridge.JailPlayer() function in editable/server/main.lua auto-detects your jail resource:
ResourceFrameworkMethod
xr-jailQB / Qboxexports['xr-jail']:JailPlayer(source, time)
qb-prisonQBTriggerEvent('qb-prison:server:SetJailStatus', source, time)
esx_jailESXTriggerEvent('esx_jail:sendToJail', source, time * 60)
For a custom jail resource, override EditTable.LSPD.Events.JailPlayer in editable/server/lspd.lua:
EditTable.LSPD.Events.JailPlayer = function(source, targetSource, citizenId, time)
    if targetSource and targetSource > 0 then
        exports['my-custom-jail']:SendToJail(targetSource, time)
    end
end

🎯 Targeting System (ox_target / qb-target)

Used for physical interaction zones (printer zones, armory zones etc.):
ResourcePriority
ox_target1st choice
qbx_target2nd choice
qb-target3rd choice
The Bridge.AddBoxZone() function handles all three automatically. No configuration needed.

🛰️ Optional Synergies

ResourceIntegration
XR-HUDHUD scaling adapts around MDT; dispatch syncs to HUD status.
XR-JailNative jail integration via export JailPlayer.
FiveManageMugshot uploads via Config.FivemanageToken.

[!NOTE] Have a bespoke architecture you need integrated? Safely configure all events and integrations via the editable/ folder without breaking the escrow. Navigate to the EditTable Reference for a complete API breakdown.