Skip to content
Eureka Phone: iPhone-style

Page settings

The iPhone-style page has one client settings file. Everything else is a core setting shared with the Duo.

All server behaviour (numbers, calls, media, apps, limits) is configured once on the core; see the Duo's Server settings. The page resource has a single file.

The page file

eureka_iphone/config/client.lua is the only file. Downloaded by every client, so it holds no secret and grants nothing: the server checks every request again.

Setting Default Notes
models { 'iphone' } The inventory items this page shows. Each must also be in duo_phone_items. Change it if your server already uses another item name for this phone.
keys {} The iPhone-style phone has no keys of its own. The key that opens the phone is the core's (phoneKey in eureka_phone/config/client.lua, F1).
timeouts open 13 s, sync 10 s, default 6 s How long the bridge waits for the server before telling the page there is no answer yet. Keep each below the page's own timeouts.
forgetSeconds 30 A request that timed out is still matched for this long; a late answer reaches the page.
maxPending 32 Requests in flight per player; more answer RATE_LIMITED.
maxPayloadBytes 262144 The largest request sent to the server. Keep it above twice duo_notes_max_bytes and duo_mail_max_bytes.
offlineAfterTimeouts 3 Timeouts in a row before the page shows the service as offline.
keepInput false true keeps game input while the phone has focus, except while a text field is in use.
typingKeepControls { 249 } Controls left working while typing with keepInput on (249 is push-to-talk).
aliveIntervalMs / aliveMisses 3000 / 3 The page must answer a ping this often; after that many misses the bridge takes focus back, so a stuck page cannot keep the player's keyboard.
eureka_iphone/config/client.lua
EurekaIphone.ClientConfig = {
    models = { 'iphone' },
    keys = {},
    timeouts = { open = 13000, sync = 10000, default = 6000 },
    forgetSeconds = 30,
    maxPending = 32,
    maxPayloadBytes = 262144,
    offlineAfterTimeouts = 3,
    keepInput = false,
    typingKeepControls = { 249 },
    worldIntervalMs = 1000,
    compassIntervalMs = 100,
    pausePollMs = 250,
    aliveIntervalMs = 3000,
    aliveMisses = 3,
}

The open key

phoneKey in eureka_phone/config/client.lua ({ key = 'F1', label = 'Phone: open or close' }) opens whichever page is current for the player. Players rebind it under the game's key bindings (FiveM section), and a saved binding wins. A change to that file needs restart eureka_phone, then ensure of each page.

Core settings that mention this page

  • duo_phone_items must list iphone (or your item name).
  • The object store CORS rule must allow https://cfx-nui-eureka_iphone for media and AirDrop files.

Players' settings travel with the phone, not the page: appearance, language, passcode and Eureka ID are stored by the core, so a character who switches from the Duo to the iPhone-style phone keeps their number, contacts, conversations and account.

Last updated October 2, 2026