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.
---@return boolean
local hasPhone = exports["lb-phone"]:HasPhoneItem()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
---@param bars number # 0-4
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
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)Custom apps
We strongly recommend using our template (opens in a new tab). 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
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. See camera component for more info.
---@return string
local url = exports["lb-phone"]:SetCameraComponent()SetContactModal
Shows the contact modal. See setContactModal 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
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)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(...) : ...any
exports["lb-phone"]:RegisterClientCallback(event, handler)AwaitCallback
---@param event string
---@param ... any
local data = exports["lb-phone"]:AwaitCallback(event, ...)TriggerCallback
---@param event string
---@param handler fun(...): any
---@param ... any
local data = exports["lb-phone"]:TriggerCallback(event, handler, ...)