DND Docs

Resourcesdnd_phoneInstallation

Configuration

Last updated on

All configuration lives in config/ and is kept open (escrow_ignore) for server owners, even if the rest of the resource is sold under escrow.

FilePurpose
config.luaDebug, locale, open key/command, Config.Features master toggles
frameworks.luaFramework selection/auto-detection (Qbox/QBCore/ESX/custom)
inventory.lua · voice.lua · media.luaCore integrations (ox_inventory, pma-voice, Fivemanage)
banking.lua · garage.lua · housing.luaOptional integrations (Renewed, JG, BCS)
charging.lua · camera.luaBattery/charging stations, Service Station repair, camera
props.luaPhone models (iOS/Android/custom), dimensions, hand props
apps.luaApp registry — built-in + custom (internal or iframe) apps, job/grade gating
locales.luaUI strings / supported languages
advanced.luaRate limits, input limits, caching, logging
admin.luaAdmin Dashboard — command, ACE permission, nearby-filter radius (see Commands)
advertise.lua · birdie.lua · cab.lua · darkchat.lua · dataplan.lua · economy.lua · gps.lua · jobs.lua · mail.lua · notepad.lua · currency.lua · customization.luaPer-app settings

General (config.lua)

Config.Debug = true              -- verbose [dnd_phone] logs, client+server — set false in production
Config.Locale = 'en'             -- default UI language (must exist in config/locales.lua)
Config.OpenKey = 'F1'            -- keybind to open the phone
Config.OpenCommand = 'phone'     -- command to open the phone (false to disable)

Config.Features = {
    contacts = true, calls = true, messages = true, gallery = true, camera = true,
    charging = true, banking = true, garage = true, housing = true, jobs = true,
    darkchat = true, ecomarket = true, mail = true, birdie = true, cab = true,
    gps = true, notepad = true, calculator = true, advertise = true,
    simcard = true, store = true,
    -- disable a feature to hide its app and skip its server logic entirely
}

Framework (frameworks.lua)

Config.Framework = 'auto'   -- 'auto' | 'qbox' | 'esx' | 'custom'
Config.FrameworkDetect = {
    { resource = 'qbx_core',    bridge = 'qbox' },
    { resource = 'qb-core',     bridge = 'qbox' },
    { resource = 'es_extended', bridge = 'esx'  },
}

'auto' checks each entry in order and uses the first bridge whose target resource is running. Provide your own logic in client/bridge/framework/custom.lua + server/bridge/framework/custom.lua for anything else.

Media / Fivemanage (media.lua)

Config.Media = {
    Bridge = 'auto',                                    -- 'fivemanage' | 'custom' | 'auto'
    FivemanageKey = GetConvar('dnd_phone:fivemanage_key', ''),
    FivemanageUrl = 'https://api.fivemanage.com/api/image',
    MaxSizeKb = 8192,
}

Set the key via convar (server.cfg) rather than committing it to media.lua:

set dnd_phone:fivemanage_key "YOUR_KEY"

See FiveManage Setup.

Banking (banking.lua)

Config.Banking = {
    Enabled = true,
    Bridge = 'auto',              -- 'renewed' | 'custom' | 'auto'
    Resource = 'Renewed-Banking',
    MinTransfer = 1,
    MaxTransfer = 1000000,
    StoreHistory = true,          -- mirror into dnd_phone_bank_history
    JobAccounts = {
        Enabled = true,
        MinWithdrawGrade = 0,
        MinWithdrawGradeByJob = { -- ambulance = 7, police = 9 },
        },
    },
    GangAccounts = { Enabled = true, --[[ same shape as JobAccounts ]] },
    -- CustomAccounts: server-owner-curated shared "Business" accounts, gated
    -- by an identifier allow-list and/or job/gang.
}

Job / Dark Chat / Economy soft-integrations

Config.JobApps = { Resource = 'dnd_jobmanagement' }   -- server/modules/jobmanagement.lua
Config.DarkChat = { Resource = 'dnd_blackmarketplace' } -- server/modules/darkchat.lua
Config.EcoMarket = { Resource = 'dnd_economy' }         -- server/modules/economy.lua

All three wrap their export calls in pcall — if the target resource isn't running, the related tabs/apps just report themselves unavailable instead of erroring.

Locale / i18n

config/locales.lua defines the Lua/server-side notification strings per language. The web UI has its own parallel dictionary (web/src/lib/i18n.ts) driving every app's on-screen text. See Locale Guide for how the two connect.

Escrow strategy

fxmanifest.lua's escrow_ignore {} block keeps config/*.lua, both bridges' custom.lua files, install/database.sql, README.md, LICENSE, and docs/**/* open even under FiveM's escrow encryption, so buyers can still configure/extend the resource without needing the source.

On this page