Server Events
This page documents every networked server event RoadPhone Pro registers, plus the server-side hooks it emits for other resources.How identity works: Almost every handler resolves the acting player from the event
source — phone number, identifier, job and account sessions are looked up server-side. Client-supplied IDs are never trusted. That means an external resource triggering an “internal” event can only ever act as the triggering player, never on behalf of someone else.App names and internal identifiers differ on purpose: Connect events still carry the
instagram prefix, Glimpse uses snapy, TweetWave uses twitter. Renaming them would break every existing install, so the identifiers stay as they are.Integration Events
These are the server events you can safely build on from your own resources.roadphone:sendDispatch
Creates a service/emergency dispatch and pushes it to all online members of a job. This is the handler behind thesendDispatch export.
number
required
The dispatching player’s server ID (used for server-side calls; real net source wins for client calls).
string
required
The dispatch text.
string
required
Target job name (e.g.
"police", "ambulance").table
Dispatch coordinates
{ x, y, z }.boolean
Hide the sender’s identity.
string
Optional image URL.
roadphone:addBankTransfer
Inserts a bank transaction row intoroadshop_banktransfer and live-pushes it to both parties if they are online. This is the main hook point for external transaction logging (also exposed as the addBankTransaction export).
string
required
Sender IBAN.
string
required
Receiver IBAN.
string
required
Transaction label shown in the bank app.
number
required
Transferred amount.
number
required
Amount after tax/fees.
RoadPhone itself fires this for taxi fares/tips (
taxi.lua) and crypto buys/sells (crypto.lua).roadphone:roaddrop:receive
Shares a picture, contact card or playlist with a nearby player (AirDrop-style). Backing handler for thesendRoadDrop / sendAirdrop exports.
table
required
{ playerId (number), picturelink?, contact? (table, own = true sends the caller's own card), playlist?, roadpad? } — the sender name is derived server-side.roadphone:receiveMail:offline
Inserts a system mail addressed to a player identifier — works while the recipient is offline. Backing handler for thesendMailOffline export.
roadphone:server:call:eventnumber
Customization stub fired whenever a player dials a configured event number (Config.EventNumbers, e.g. "77777"). Add your own handler to react to special numbers.
roadphone:playerLoad
Reloads all phone data for a player and ships it to their client (used by thefixphone command and the framework PlayerLoaded bridge). Can be fired server-side to force a data refresh.
Server-side-only handlers
These handlers are registered withAddEventHandler only — not net-exposed — and can only be fired by server-side code:
Consumed external events
RoadPhone itself listens to these third-party events:Core Phone — server/server.lua
Contacts
Calls
Photos & Albums
Alarms
Server API — server/serverAPI/serverAPI.lua
Bank — server/serverAPI/bank.lua, bank_requests.lua
Billing — server/serverAPI/billing.lua
Metadata & Settings — server/phone_metadata.lua, phone_cache.lua, customapp_storage.lua
Admin — server/admin.lua
GPS — server/gps.lua
Messages — server/messages.lua
Mail — server/mail_app.lua
FaceTime — server/facetime.lua
Service (Dispatch & Business) — server/service.lua
Taxi — server/taxi.lua
Calendar / Notes / Voice Memos / Yellow Pages
News — server/news.lua
All news events require job-based news access (hasNewsAccess).
Music — server/music.lua
mx-surround playback
Only registered withMXSurround — thin wrappers over the mx-surround positional-audio API.
Crypto / Health — server/crypto.lua, server/health.lua
RoadDrop — server/roaddrop.lua
Dating — server/dating.lua
All handlers resolve the caller’s identifier server-side and validate match/ownership.
Livestream — server/livestream.lua
Connect — server/connect.lua
Identity resolves via GetConnectAccountForSource; the legacy username, password parameters on most events are ignored — only login/register actually authenticate by credentials.
Connect DMs — server/connect_dm.lua
Connect Live — server/connectlive.lua
TweetWave — server/tweetwave.lua
Identity resolves via GetTweetWaveAccountForSource; username, password are ignored except on login/register/changePassword.
Glimpse — server/snapy.lua
Identity resolves via GetSnapyAccountForSource; all events are rate-limited per SnapyCfg.RateLimits.
Cloud Account (RoadID) — server/account.lua
The account behind mail, app purchases and cross-phone identity. The session is minted server-side and stored on the phone; account IDs sent by the client are ignored.
A character can own several accounts, and a phone shows whichever account its session points at — that is what makes a stolen phone show the victim’s cloud data. See Server Callbacks for
roadphone:account:resume.Reminders — server/reminders.lua
Ringtones — server/ringtone.lua
Ringtones are audible to bystanders, so the server owns playback and fans it out to everyone nearby.
Notifications — server/phone_outbox.lua
Loop — server/loop/sounds.lua
Everything else in Loop is request/response and therefore a callback — see the Loop callbacks.
Valet — server/serverAPI/valet.lua
Addon: Battery — addons/battery/server/server.lua
Only active with Config.BatterySystem and Config.UseMetadata.
The SIM card, RoadPods and Mechanic addons register no networked server events — their APIs are Bridge callbacks, commands and exports. For SIM cards, see SIM Card Exports.