X3D Phone

Description

A free smartphone for ESX. It comes with Phone, Messages, Contacts, Banking, Bills, Buzz, Dark Chat and Settings apps. The UI is built with Nuxt 4 and works with mouse or keyboard. Fits any city style (school / community / RP).


Features

  • [+] Easy setup: tune everything in config, or set it from the web builder
  • [+] Real voice calls through pma-voice, mute your mic, 5 ringtones
  • [+] SMS grouped by conversation, share your location and tap to set a GPS waypoint
  • [+] Service numbers for police, EMS and mechanics, sent to the whole job with your spot
  • [+] Dispatch app: call EMS, a medic responds and gets a waypoint set
  • [+] Bill any number; police, EMS and admin bills are locked, only admins can cancel
  • [+] Mobile banking with transfers by phone number, with your own min and max
  • [+] Camera with photos stored on your own server, and an hourly limit per player
  • [+] Server-wide Buzz feed with 5 post card skins that admins can lock
  • [+] Dark Chat: anonymous rooms with nicknames and an optional room password
  • [+] Require a phone item to use it, with your own item name, or switch it off
  • [+] Write your own hooks to other scripts in addons/

What's inside

  • Phone: keypad and call history, with a badge for missed calls. Voice calls run through pma-voice. You can mute your microphone and pick one of five ringtones.
  • Messages (SMS): one conversation per contact, with unread badges. You can share your location. The person who gets it taps it to set a GPS waypoint there.
  • Contacts: mark favourites. Contact names also show in call history and in chats.
  • Service numbers: text the police, EMS or mechanics and every member of that job gets it with your location. Job scripts can add or remove numbers through the x3d_phone:registerNumber / x3d_phone:removeNumber events.
  • Dispatch: a player hits "call EMS" and every medic gets the call in their phone with distance and a map blip. Respond sets a waypoint and tells the caller help is coming. Any script can raise a call with one export.
  • Bills: bill any phone number, personally or on behalf of a job (police, EMS, mechanic, add your own). The recipient pays or declines in the phone (locked job bills such as police, EMS and admin cannot be declined or cancelled; an admin cancels them from the admin menu) and a double tap never charges twice. Personal bills pay into the biller's bank account; business bills need your own society account wired in addons/billing/server.lua.
  • Every emoji: a picker with groups and search, in SMS, Buzz and Dark Chat.
  • Mobile banking: balance and history, plus transfers to an online player's phone number. Uses the ESX bank account, or plug in your own banking system.
  • Camera: take a photo in game and send it by SMS or post, or use it for a contact, your Buzz avatar or your wallpaper. Photos are stored on your own server. No image host and no API key.
  • Buzz: one feed for the whole server. Post, like and delete your own posts. New posts show up in the in-game chat as a card with 5 skins (default, Halloween, Christmas, Songkran, Night). Players pick one, or you lock one for the whole server.
  • Phone item: by default a phone item is required. No phone means no calls in or out, and the server enforces it.
  • Dark Chat: anonymous rooms with nicknames and an optional password. Nobody sees the sender's real phone number.
  • Settings: wallpaper, ringtone, notification sound, a keyboard-only mode, and Alt to switch to game controls without closing the phone.

Copies to Discord

Add a webhook to server.cfg and every photo a player takes is copied to your admin Discord channel, with the player's name and identifier. The photo itself stays on your server, so in-game links never expire. A separate webhook can log SMS, posts and transfers.


Server-side safety

  • The server checks every callback again. It never trusts values sent by the client.
  • SMS, posts, likes and calls are rate-limited.
  • Players can only delete their own contacts, posts and history.
  • External image links are accepted only from the hosts in Config.ImageHosts (or from any https site if you switch that on).
  • Uploads need a single-use token, are capped per hour, and must be real JPG/PNG files.
  • Webhook URLs never reach players, and Discord posts never ping anyone.

Make it fit your server

Everything that differs between servers lives in addons/, one file for each job:

File Job
addons/notify/client.lua Notifications: uses esx_notify or ox_lib if either is present, otherwise ESX's own.
addons/voice/client.lua Voice system. The default is pma-voice.
addons/banking/server.lua Banking. The default is the ESX bank account.
addons/billing/server.lua Billing: charges the payer and pays the biller (a society account must be wired by you).
addons/framework/server.lua / client.lua The framework bridge: ESX if present, else standalone.
addons/upload/client.lua Photo storage. The default stores photos on your own server.
addons/filter/server.lua Blocks banned words before a message is sent.
addons/log/server.lua Logs SMS, posts and Dark Chat messages. Includes a Discord webhook example.

Requirements

  • oxmysql
  • es_extended (ESX Legacy). Without it the script runs standalone, and you wire banking and billing yourself in addons/
  • pma-voice (optional: without it, calls still connect but carry no audio)
  • screenshot-basic (optional, needed for the camera; a copy is bundled in optional/)

Version history

  • 1.1.3 — Released 13/10/2026 00:18
  • 1.1.1 — Released 12/10/2026 10:26
  • 1.0.1 — Released 26/09/2026 19:42
  • 1.0.0 — Released 25/09/2026 22:31
Same category

Related scripts

View all products
Read more

Posts that cover this script