Commands
Last updated on
Player commands
| Command | Purpose |
|---|---|
/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.
| Command | File | Purpose |
|---|---|---|
/dnd_testnotif [kind] | client/notifications.lua | Fire a sample in-phone push notification |
/dnd_testcall | client/modules/calls.lua | Simulate an incoming call to yourself |
Job command (Billing / EDC)
| Command | Default keybind | Purpose |
|---|---|---|
/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
| Action | Default | Config |
|---|---|---|
| Open/close phone | F1 | Config.OpenKey (config/config.lua) |
| Billing / EDC | F7 | Config.Billing.DefaultKey (config/billing.lua) |
| Camera shutter / flash / etc. | rebindable via ox_lib keybinds | client/modules/camera.lua |
Admin command
| Command | Purpose |
|---|---|
/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.adminSet 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.phoneand 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.