Skip to Content

Client Exports

Misc

GetConfig

---@return table local config = exports["lb-phone"]:GetConfig()

GetCellTowers

---@return vector3[] local cellTowers = exports["lb-phone"]:GetCellTowers()

FormatNumber

---@param number string # The number to format ---@return string # The formatted number local formattedNumber = exports["lb-phone"]:FormatNumber(number)

SaveToGallery

Saves an image or video to the gallery.

---@param link string # The link to the image/video exports["lb-phone"]:SaveToGallery(link)

HasPhoneItem

Check if the player has a phone item in their inventory.

---@param number? string ---@return boolean local hasPhone = exports["lb-phone"]:HasPhoneItem(number)

AddCheck

Check params

  • openPhone: no parameters, should return true to allow opening the phone, false to prevent it.
  • playNativePhoneSound: parameters soundType (string) and optional soundName (string). Should return true to allow playing the sound, false to prevent it.
---@alias CheckEvent "openPhone" | "playNativePhoneSound" ---@param event CheckEvent ---@param handler fun(...: any): boolean ---@return number id local id = exports["lb-phone"]:AddCheck(event, handler)

RemoveCheck

---@param id number ---@return boolean success local success = exports["lb-phone"]:RemoveCheck(id)

Handle phone

GetEquippedPhoneNumber

---@return string? local phoneNumber = exports["lb-phone"]:GetEquippedPhoneNumber()

ToggleOpen

---@param open? boolean # If true, the phone is opened, if false, the phone is closed. If nil, the phone it toggles. ---@param noFocus? boolean # If true, the cursor is hidden when opening the phone. exports["lb-phone"]:ToggleOpen(open, noFocus)

IsOpen

---@return boolean local isOpen = exports["lb-phone"]:IsOpen()

IsPhoneOnScreen

---@return boolean local isPhoneOnScreen = exports["lb-phone"]:IsPhoneOnScreen()

IsDisabled

---@return boolean local isDisabled = exports["lb-phone"]:IsDisabled()

ToggleDisabled

---@param disabled boolean exports["lb-phone"]:ToggleDisabled(disabled)

ToggleHomeIndicator

---@param show boolean exports["lb-phone"]:ToggleHomeIndicator(show)

ToggleLandscape

---@param landscape boolean exports["lb-phone"]:ToggleLandscape(landscape)

SendNotification

---@class NotificationData ---@field app? string # Identifier of the app that sent the notification, optional ---@field title string # Title of the notification ---@field content? string # Content of the notification, optional ---@field thumbnail? string # Thumbnail URL, optional ---@field avatar? string # Avatar URL, optional ---@field showAvatar? boolean # Whether to show an avatar placeholder if no avatar was sent, optional ---@param data NotificationData exports["lb-phone"]:SendNotification({ app = "Settings", title = "Test", content = "This is a test notification", })

ToggleFlashlight

---@param flashlight boolean exports["lb-phone"]:ToggleFlashlight(flashlight)

GetFlashlight

---@return boolean local flashlightEnabled = exports["lb-phone"]:GetFlashlight()

SetServiceBars

Set a static number of service bars (0-4). Set to false or nil to reset to default behavior.

---@param bars? number | false exports["lb-phone"]:SetServiceBars(bars)

ReloadPhone

Refresh the data of the player’s phone. Useful if you have changed phone number or something in the database.

exports["lb-phone"]:ReloadPhone()

SetPhoneVariation

---@param variation number # The variation of the phone, has to be configured in `Config.Item.Names` exports["lb-phone"]:SetPhoneVariation(variation)

Camera

EnableWalkableCam

---@param selfieMode? boolean exports["lb-phone"]:EnableWalkableCam(selfieMode)

DisableWalkableCam

exports["lb-phone"]:DisableWalkableCam()

IsWalkingCamEnabled

---@return boolean local enabled = exports["lb-phone"]:IsWalkingCamEnabled()

ToggleSelfieCam

---@param selfieMode boolean exports["lb-phone"]:ToggleSelfieCam(selfieMode)

ToggleCameraFrozen

exports["lb-phone"]:ToggleCameraFrozen()

IsSelfieCam

---@return boolean local selfieCam = exports["lb-phone"]:IsSelfieCam()

Settings

GetSettings

---@return table local settings = exports["lb-phone"]:GetSettings()

GetAirplaneMode

---@return boolean local airplaneMode = exports["lb-phone"]:GetAirplaneMode()

GetStreamerMode

---@return boolean local streamerMode = exports["lb-phone"]:GetStreamerMode()

Apps

IsLive

Used to check if the player is live on InstaPic.

---@return boolean local isLive = exports["lb-phone"]:IsLive()

PostBirdy

---@class BirdyPostData ---@field content string # The content of the post ---@field attachments? string[] # URLs of the attachments ---@field replyTo? string # The ID of the post to reply to ---@field hashtags? string[] # Hashtags used in the post ---@param data BirdyPostData ---@return boolean # Whether the post was successful exports["lb-phone"]:PostBirdy(data)

AddContact

---@class ContactData ---@field number string ---@field firstname string ---@field lastname? string ---@field avatar? string ---@field email? string ---@field address? string ---@param data ContactData ---@return boolean success exports["lb-phone"]:AddContact({ number = "01234567890", firstname = "John", lastname = "Doe", avatar = "https://example.com/avatar", email = "[email protected]", address = "Eclipse Towers, Penthouse Suite 1", })

OpenApp

---@param app string # The app (identifier) to open ---@param data? table # Data to pass to the app exports["lb-phone"]:OpenApp(app, data)

CloseApp

---@param options? { app?: string, closeCompletely?: boolean } exports["lb-phone"]:CloseApp(options)

SetAppHidden

Hides an app from the app browser

---@param app string ---@param hidden boolean exports["lb-phone"]:SetAppHidden(app, hidden)

SetAppInstalled

---@param app string ---@param installed boolean exports["lb-phone"]:SetAppInstalled(app, installed)

Custom apps

We strongly recommend using our template . See custom apps for more info.

AddCustomApp

Add a custom app. Make sure to wait for lb-phone to be started, and then wait a bit more (e.g. 500ms) to make sure the export exists.

---@class CustomApp ---@field identifier string # A unique identifier of the app ---@field ui string # The path to the HTML file ---@field name string ---@field description string ---@field images? string[] # An array of images for the app on the app store ---@field developer? string # The developer of the app ---@field defaultApp? boolean # If set to true, the app will be added automatically ---@field size? number # Size in kB ---@field icon? string # A url to the icon of the app ---@field price? number # Require players to purchase the app with in-game money ---@field landscape? boolean ---@field game? boolean ---@field onDelete? function # Called when the app is uninstalled ---@field fixBlur? boolean # If set to true, the app will not be blurry. This requires you to use the em/rem units in your CSS ---@field onClose? function # Called when the app is closed ---@field onOpen? function # Called when the app is opened ---@param appData CustomApp ---@return boolean success ---@return string? errorMessage local success, errorMessage = exports["lb-phone"]:AddCustomApp({ identifier = "custom-app", name = "Custom App", description = "This is a custom app", ui = "ui/index.html" })

RemoveCustomApp

---@param identifier string ---@return boolean success ---@return string? errorMessage local success, errorMessage = exports["lb-phone"]:RemoveCustomApp(identifier)

SendCustomAppMessage

Used to send a UI message to a custom app (replacement for SendNUIMessage).

---@param identifier string ---@param data any ---@return boolean success ---@return string? errorMessage exports["lb-phone"]:SendCustomAppMessage(identifier, data)

Components

SetPopUp

Used to show a popup, see popups for more info.

SetContextMenu

Used to show a context menu, see context menus for more info.

ShowComponent

Used to show a component. Valid components are gallery, gif, emoji, camera, and colorpicker.

---@param options { component: string, ... } # The component to show and its options ---@param cb function # Callback function with the result exports["lb-phone"]:ShowComponent({ component = "gallery", # component to show # other options }, function(...) print("Result:", ...) end)

SetCameraComponent

Opens the camera component.

---@class CameraComponentData ---@field default { type: "Photo" | "Video" | "Landscape", flash: boolean, camera: "rear" | "front" } ---@field permissions { toggleFlash: boolean, flipCamera: boolean, takePhoto: boolean, takeVideo: boolean, takeLandscapePhoto: boolean } ---@field saveToGallery boolean ---@field cb fun(src: string) ---@param data CameraComponentData ---@return string local url = exports["lb-phone"]:SetCameraComponent(data)

SetContactModal

Shows the contact modal. See setContactSelector for more information.

---@param phoneNumber string exports["lb-phone"]:SetContactModal(phoneNumber)

Battery

IsPhoneDead

---@return boolean # If the phone has 0% battery local dead = exports["lb-phone"]:IsPhoneDead()

GetBattery

---@return number # The battery percentage, 0-100 local battery = exports["lb-phone"]:GetBattery()

SetBattery

---@param battery number # The battery percentage, 0-100 exports["lb-phone"]:SetBattery(battery)

ToggleCharging

---@param charging boolean exports["lb-phone"]:ToggleCharging(charging)

IsCharging

---@return boolean local charging = exports["lb-phone"]:IsCharging()

Services/companies

SendCompanyMessage

---@param company string # The company to send the message to ---@param message string ---@param anonymous? boolean # Whether the message should be sent anonymously exports["lb-phone"]:SendCompanyMessage(company, message, anonymous)

SendCompanyCoords

---@param company string # The company to send the message to ---@param coords? vector3 # The coordinates to send, if not provided it will send the player's current location ---@param anonymous? boolean # Whether the message should be sent anonymously exports["lb-phone"]:SendCompanyCoords(company, coords, anonymous)

GetCompanyCallsStatus

---@return boolean local callsEnabled = exports["lb-phone"]:GetCompanyCallsStatus()

ToggleCompanyCalls

---@param enabled boolean ---@return boolean exports["lb-phone"]:ToggleCompanyCalls(enabled)

Crypto

GetCoinValue

---@param coin string ---@return number local value = exports["lb-phone"]:GetCoinValue(coin)

GetCryptoWallet

---@class CryptoWalletEntry ---@field change_24h number ---@field current_price number ---@field id string ---@field image string ---@field name string ---@field prices number[] ---@field symbol string ---@field owned number ---@return CryptoWalletEntry[] local wallet = exports["lb-phone"]:GetCryptoWallet()

GetOwnedCoin

---@param coin string ---@return CryptoWalletEntry | false local coinData = exports["lb-phone"]:GetOwnedCoin(coin)

Calls

CreateCall

Calls a number/company, and shows it on the phone UI.

---@class CallOptions ---@field number? string ---@field company? string ---@field videoCall? boolean ---@field hideNumber? boolean ---@param options CallOptions exports["lb-phone"]:CreateCall(options)

IsInCall

---@return boolean local inCall = exports["lb-phone"]:IsInCall()

CreateCustomNumber

Create a number that players can call.

---@class IncomingCall ---@field id string ---@field accept fun() ---@field deny fun() # Declines/ends the call without triggering onEnd ---@field setName fun(name: string) ---@field hasEnded fun(): boolean ---@class CustomNumberData ---@field onCall fun(incomingCall: IncomingCall) ---@field onEnd? fun() ---@field onAction? fun(action: "mute" | "unmute" | "enable_speaker" | "disable_speaker") ---@field onKeypad? fun(key: string) ---@param number string ---@param data CustomNumberData ---@return boolean success ---@return string? reason local success, reason = exports["lb-phone"]:CreateCustomNumber(number, data)

RemoveCustomNumber

Remove a custom number. You have to remove it from the same resource that created it.

---@param number string ---@return boolean success ---@return string? reason local success, reason = exports["lb-phone"]:RemoveCustomNumber(number)

CreateDynamicCustomNumber

Create a dynamic custom number, where you don’t know the number when creating it.

---@param validator fun(phoneNumber: string): boolean ---@param data CustomNumberData ---@return number local id = exports["lb-phone"]:CreateDynamicCustomNumber(validator, data)

RemoveDynamicCustomNumber

Remove a dynamic custom number. You have to remove it from the same resource that created it.

---@param id number ---@return boolean success local success = exports["lb-phone"]:RemoveDynamicCustomNumber(id)

EndCustomCall

End the current custom call. Returns false if there is no call.

---@return boolean local success = exports["lb-phone"]:EndCustomCall()

Callbacks

RegisterClientCallback

Registers a client callback that can be called from the server.

---@param event string ---@param handler fun(...) : ... exports["lb-phone"]:RegisterClientCallback(event, handler)

AwaitCallback

---@param event string ---@param ... any local data = exports["lb-phone"]:AwaitCallback(event, ...)

TriggerCallback

---@param event string ---@param cb fun(...): any ---@param ... any local data = exports["lb-phone"]:TriggerCallback(event, cb, ...)