DND Docs

Resourcesdnd_phoneReference

Commands

Last updated on

Player commands

CommandPurpose
/phone (configurable via Config.OpenCommand)Open/close the phone (also bound to Config.OpenKey, default F1)

Set Config.OpenCommand = false in config/config.lua to disable the command and rely on the keybind only.

Debug / test commands

Only meant for development — not gated behind Config.Debug, so remove or restrict them on a live server if you don't want players triggering test notifications/calls themselves.

CommandFilePurpose
/dnd_testnotif [kind]client/notifications.luaFire a sample in-phone push notification
/dnd_testcallclient/modules/calls.luaSimulate an incoming call to yourself

Job command (Billing / EDC)

CommandDefault keybindPurpose
/billing_edc (Config.Billing.Command)F7 (Config.Billing.DefaultKey)Opens the standalone EDC (payment terminal) tool for jobs listed in Config.Billing.Jobs — bills a typed phone number or a live nearby player, plays the same phone-open emote as opening the phone normally

Keybinds

ActionDefaultConfig
Open/close phoneF1Config.OpenKey (config/config.lua)
Billing / EDCF7Config.Billing.DefaultKey (config/billing.lua)
Camera shutter / flash / etc.rebindable via ox_lib keybindsclient/modules/camera.lua

Admin command

CommandPurpose
/dnd_phone_admin (configurable via Config.Admin.Command)Opens the Admin Dashboard — a standalone tool, entirely separate from the phone itself (no phone item needed)

Gated by a FiveM ACE permission (Config.Admin.Ace, default dnd_phone.admin), re-checked server-side on every single action regardless of what the client shows — grant it in server.cfg:

add_ace group.admin dnd_phone.admin allow
add_principal identifier.license:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx group.admin

Set Config.Admin.Enabled = false (config/admin.lua) to disable it entirely.

What it does

  • Device list — every registered device + its active phone number, searchable by number, owner name, serial, or device ID, paginated (Config.Admin.PageSize).
  • Nearby filter — a toggle that swaps the search/list for just the devices belonging to whoever is online and within Config.Admin.NearbyRadius (default 15m) of the admin right now, including the admin's own device automatically.
  • Live identity — Steam hex, License, License2, and Discord ID are shown for any row whose owner is currently online (these only exist on a live connection, not in the database, so an offline row just shows "Offline").
  • Change number — inline edit on any row; validates format and rejects a number already in use by another device, then mirrors the change into the framework's own charinfo.phone and notifies the player in-phone.

Shorter "donation tier" numbers

Every regular player always gets a full-length number auto-generated on setup (Config.PhoneNumber.Prefixes + Length, e.g. (555) 123-456) — that never changes. If you want to offer shorter, easier-to-remember numbers as a donation/VIP perk (common on FiveM servers, typically 1-6 digits), lower Config.PhoneNumber.MinCustomLength (config/config.lua) below the standard length:

Config.PhoneNumber = {
    Prefixes = { '555' },
    Length = 6,
    Format = '({3}) {3}-{3}',
    MinCustomLength = 2,  -- opens up 2-6 digit numbers for admin-assigned custom numbers
}

This only affects what the Admin Dashboard's number field (and any other manual number entry) will accept — it does not change what SIM.Generate produces for a normal player's first setup. So the only way a player ends up with a shorter number is a staff member manually assigning one through the dashboard, e.g. after a donation. By default MinCustomLength equals the standard length, meaning no shorter numbers are accepted anywhere until you explicitly lower it.

A shorter number's display just falls back to plain digits instead of the Format mask (a fixed-width mask can't fit a shorter number without producing something like (55) -), and the pool of possible numbers shrinks fast the shorter you go — 2 digits is only 100 possible numbers, 3 digits is 1,000, and so on (times however many Prefixes entries you have) — so pick a length with headroom for how many donors you actually expect.

Device/account management without a command

Anything not covered above (e.g. clearing a stuck dnd_phone_accounts row before a player can re-recover) is still done directly via database queries. See Troubleshooting for common cases.

On this page