Accueil › Documentation › Exports · origen_phone

Exports · origen_phone

Tous les exports sont enregistrés sous le nom de ressource origen_phone.

Chaque export serveur valide ses données d’entrée et renvoie quelque chose de vérifiable (un booléen, un id, une table avec ok) au lieu d’échouer en silence. Une ressource mal écrite ne peut pas casser le téléphone de quelqu’un d’autre.


Exports serveur

Identité

GetPhoneNumber(source) → string|nil

Le numéro du téléphone que le joueur a allumé, s’il en porte un. L’inventaire est vérifié à nouveau, car le téléphone a pu lui être retiré entre-temps.

lua
local number = exports['origen_phone']:GetPhoneNumber(source)
Paramètre Type Description
source number ID serveur du joueur

GetSourceByNumber(number) → number|nil

Le joueur qui porte ce numéro, s’il est en ligne.

lua
local src = exports['origen_phone']:GetSourceByNumber('551234')
Paramètre Type Description
number string Numéro de téléphone

HasPhoneOpen(source) → boolean

Indique si le joueur a un téléphone allumé en ce moment.

lua
local online = exports['origen_phone']:HasPhoneOpen(source)
Paramètre Type Description
source number ID serveur du joueur

GetNumbersByCitizenId(citizenid) → string[]

Tous les numéros appartenant à un personnage, qu’il soit en ligne ou non. Utile pour écrire à quelqu’un qui ne joue pas.

lua
local numbers = exports['origen_phone']:GetNumbersByCitizenId(citizenid)
Paramètre Type Description
citizenid string Identifiant du personnage

GetDisplayName(number, viewer) → string

La façon dont un numéro apparaît sur un téléphone donné : le nom enregistré dans ses contacts, ou le numéro formaté.

lua
local name = exports['origen_phone']:GetDisplayName('551234', '601111')
Paramètre Type Description
number string Numéro à résoudre
viewer string|nil Numéro dont les contacts sont utilisés. Sans lui, renvoie le numéro formaté

FormatNumber(number) → string

Formate un numéro avec le format du serveur (Config.PhoneNumber.Format).

lua
local formatted = exports['origen_phone']:FormatNumber('551234') -- '55-1234'

Messages et courrier

SendMessage(data) → number|false

Envoie un SMS à un numéro. from peut être un numéro réel ou un expéditeur inventé comme '900100', afin qu’une banque ou un garage puisse écrire ; s’il n’appartient à aucun téléphone, le message arrive comme un numéro inconnu.

lua
exports['origen_phone']:SendMessage({
    to = number,
    from = '5550100',
    message = 'Hello',
})
Champ Type Description
to string Numéro du destinataire
from string|nil Expéditeur. Par défaut Config.Messages.SystemNumber
message string Texte du message
attachments table|nil Pièces jointes

GetEmailAddress(source) → string|nil

L’adresse e-mail du joueur, ou nil s’il n’a pas encore créé de boîte mail.

lua
local address = exports['origen_phone']:GetEmailAddress(source)

GetEmailByNumber(number) → string|nil

L’adresse e-mail liée à un numéro de téléphone.

lua
local address = exports['origen_phone']:GetEmailByNumber('551234')

SendMail(data) → table

Envoie un e-mail. Contrairement à un message, l’expéditeur peut être n’importe quelle adresse, même si elle n’appartient pas à un téléphone.

lua
exports['origen_phone']:SendMail({
    sender = 'dealership@ogn.net',
    senderName = 'Premium Deluxe',
    to = exports['origen_phone']:GetEmailAddress(source),
    subject = 'Your invoice',
    body = 'Thank you for your purchase.',
})
Champ Type Description
to string Adresse du destinataire
sender string Adresse de l’expéditeur
senderName string Nom affiché de l’expéditeur
subject string Objet
body string Corps
attachments table|nil Pièces jointes (liens)

Renvoie { ok, delivered, unknown, error }.


Notifications

La table data partagée par les exports de notification :

Champ Type Description
app string App sous laquelle la notification est regroupée. Par défaut 'settings'
title string Titre
content string Texte du corps
avatar string|nil URL de l’avatar
thumbnail string|nil URL de la miniature
data table|nil Données supplémentaires
silent boolean|nil Ne pas jouer de son
actions table|nil Boutons d’action

SendNotification(data) → boolean

Notification envoyée à un numéro. Toujours enregistrée, même si le joueur est hors ligne ou si le téléphone est éteint.

lua
exports['origen_phone']:SendNotification({
    to = number,
    app = 'bank',
    title = 'Bank',
    content = 'Payment received',
})
Champ Type Description
to string Numéro du destinataire

NotifySource(source, data) → number

Notification envoyée à un joueur plutôt qu’à un numéro. Elle atteint tous les téléphones qu’il porte ; s’il n’en porte aucun, elle est enregistrée sur le téléphone à son nom. Renvoie le nombre de téléphones atteints (0 signifie que le joueur n’a pas de téléphone).

lua
exports['origen_phone']:NotifySource(source, {
    app = 'services',
    title = 'Dispatch',
    content = '10-13 in Vinewood',
})

NotifyJob(job, data) → number

Notification envoyée à tous les joueurs en ligne ayant ce métier. Renvoie le nombre de joueurs atteints.

lua
exports['origen_phone']:NotifyJob('police', {
    app = 'services',
    title = 'Dispatch',
    content = 'Alarm at the port',
})

NotifyGang(gang, data) → number

Notification envoyée à tous les joueurs en ligne de ce gang. Renvoie le nombre de joueurs atteints.

lua
exports['origen_phone']:NotifyGang('ballas', {
    app = 'darkchat',
    title = 'Meeting',
    content = 'Usual place',
})

NotifyAll(data) → number

Notification envoyée à tous les joueurs en ligne qui portent un téléphone. Renvoie le nombre de joueurs atteints.

lua
exports['origen_phone']:NotifyAll({
    app = 'news',
    title = 'City Hall',
    content = 'Power cut downtown',
})

ClearNotifications(number, app) → boolean

Supprime les notifications d’une app sur un téléphone. Sans app, supprime toutes les notifications.

lua
exports['origen_phone']:ClearNotifications(number, 'delivery')
Paramètre Type Description
number string Numéro de téléphone
app string|nil Id de l’app

Widgets et apps

SetWidgetData(target, widget, data) → boolean

Remplit un widget dont la source est 'fuera' (caisse d’un commerce, fréquence radio, service de travail). Les données sont conservées cinq minutes ; passé ce délai, le widget n’affiche plus de données. Passe nil comme data pour les effacer.

lua
exports['origen_phone']:SetWidgetData(source, 'negocio', {
    name = 'Bennys Motorworks',
    caja = 12400,
    empleados = 3,
    stock = 62,
})
Paramètre Type Description
target number|string Source du joueur ou numéro de téléphone
widget string 'negocio', 'radio', 'trabajo'...
data table|nil Données du widget

RegisterApp(data) → boolean

Ajoute une app depuis une autre ressource. Elle apparaît sur l’écran d’accueil et ouvre sa page en plein écran. Elle entre dans le catalogue comme n’importe quelle autre app, si bien que le panneau d’administration et SetAppRule peuvent la restreindre. Elle est retirée automatiquement lorsque sa ressource s’arrête.

lua
exports['origen_phone']:RegisterApp({
    id = 'myworkshop',
    name = 'My Workshop',
    icon = 'lucide:wrench',
    url = 'nui://my_workshop/ui/index.html',
    slot = 30,
})
Champ Type Description
id string Lettres minuscules, chiffres et tirets bas. Ne doit pas déjà exister
name string Nom affiché (40 caractères max.)
icon string|nil Icône Iconify. Par défaut 'lucide:app-window'
url string Doit être nui://<resource>/... ou https://...
slot number|nil Position sur l’écran d’accueil
default boolean|nil Installée par défaut. Par défaut true

UnregisterApp(id) → boolean

Retire une app externe sans attendre l’arrêt de sa ressource.

lua
exports['origen_phone']:UnregisterApp('myworkshop')

Accès aux apps

CanUseApp(source, appId) → boolean

Indique si le joueur peut utiliser cette app en ce moment.

lua
if exports['origen_phone']:CanUseApp(source, 'bank') then
    -- ...
end

GetAppRule(appId) → table|nil

La règle définie sur une app : { mode, list }.

lua
local rule = exports['origen_phone']:GetAppRule('bank')

SetAppRule(appId, mode, list) → boolean

Modifie qui possède une app. Elle enregistre exactement ce qu’enregistre le panneau d’administration, de sorte que le changement y est visible et peut être annulé à la main. Les changements atteignent immédiatement les téléphones ouverts.

lua
exports['origen_phone']:SetAppRule('bank', 'menos', {
    { kind = 'negocio', id = 'prisoner' },
})
 
exports['origen_phone']:SetAppRule('bank', 'todos')
Paramètre Type Description
appId string Id de l’app
mode string 'todos' (tout le monde), 'nadie' (personne), 'solo' (uniquement la liste), 'menos' (tout le monde sauf la liste)
list table[]|nil Entrées, utilisées uniquement par solo et menos
Entrée Correspond à
{ kind = 'civiles' } Joueurs sans métier et sans gang
{ kind = 'bandas' } Toute personne dans un gang
{ kind = 'negocios' } Toute personne ayant un métier
{ kind = 'banda', id = 'ballas' } Un gang précis
{ kind = 'negocio', id = 'mechanic' } Un métier précis

Contacts et contenu

AddContact(data) → boolean

Ajoute un contact au téléphone de quelqu’un. Il n’est pas dupliqué s’il existe déjà.

lua
exports['origen_phone']:AddContact({
    owner = number,
    number = '5550100',
    name = 'Mechanic',
})
Champ Type Description
owner string Numéro de téléphone qui reçoit le contact
number string Numéro du contact
name string Nom du contact
avatar string|nil URL de l’avatar

AddPhoto(data) → number|nil

Enregistre une image déjà téléversée dans la galerie d’un téléphone. Renvoie l’id de la photo.

lua
exports['origen_phone']:AddPhoto({ owner = number, url = 'https://...' })
Champ Type Description
owner string Numéro de téléphone
url string URL de l’image
isVideo boolean|nil La marque comme vidéo

PublishNews(data) → number|nil

Publie un article dans l’app Actualités. Renvoie l’id de l’article.

lua
exports['origen_phone']:PublishNews({
    title = 'Headline',
    content = 'What happened',
})
Champ Type Description
title string Titre
content string Corps
author string|nil Auteur
image string|nil URL de l’image
category string|nil Catégorie
pinned boolean|nil Épingler l’article

PublishAd(number, data) → number|nil, string|nil

Publie une annonce sur le tableau des petites annonces au nom de quelqu’un. Renvoie l’id de l’annonce, ou nil et une erreur.

lua
exports['origen_phone']:PublishAd(number, {
    title = 'Car for sale',
    body = 'Low mileage',
    price = 40000,
})
Champ Type Description
title string Titre
body string Corps
price number|nil Prix
category string|nil Une valeur de Config.Ads.Categories

AddNote(number, title, content) → number|nil

Laisse une note sur le téléphone de quelqu’un. Renvoie l’id de la note.

lua
exports['origen_phone']:AddNote(number, 'Reminder', 'Visit the garage')

AddCalendarEvent(number, data) → number|nil

Ajoute un événement au calendrier de quelqu’un. Renvoie l’id de l’événement.

lua
exports['origen_phone']:AddCalendarEvent(number, {
    title = 'Court',
    date = '2026-09-04',
})
Champ Type Description
title string Titre
note string|nil Note
date string Date (YYYY-MM-DD)
time string|nil Heure

CreateDarkRoom(number, name, burn) → string|nil

Crée un salon DarkChat et renvoie son code. Le propriétaire doit déjà avoir un alias DarkChat ; sinon la fonction renvoie nil.

lua
local code = exports['origen_phone']:CreateDarkRoom(number, 'Harbour crew', 60)
Paramètre Type Description
number string Propriétaire du salon
name string Nom du salon
burn number|nil Minutes avant l’autodestruction des messages. 0 jamais

Factures et amendes

Payées depuis le téléphone via le bridge Banking.

CreateInvoice(data) → number|nil, string|nil

Émet une facture. Le joueur la paie ou la refuse depuis l’app Factures.

lua
exports['origen_phone']:CreateInvoice({
    to = number,
    amount = 500,
    reason = 'Repair',
    issuer = 'Mechanic',
    issuerAccount = 'mechanic',
})
Champ Type Description
to number|string Source ou numéro de téléphone du destinataire. Avec le numéro, elle peut être émise à un joueur hors ligne
amount number Montant positif
reason string Motif
issuer string Nom de l’émetteur
issuerAccount string|nil Compte qui reçoit l’argent. Sans lui, le joueur est débité et l’argent ne va nulle part
reference any Ton propre id, renvoyé quand la facture est payée
dueAt number|nil Secondes à partir de maintenant jusqu’à l’échéance

CreateFine(data) → number|nil, string|nil

Comme une facture, mais elle ne peut pas être refusée. L’argent va à issuerAccount ou, s’il est omis, à Config.FineAccount. Mêmes champs que CreateInvoice.

lua
exports['origen_phone']:CreateFine({
    to = number,
    amount = 250,
    reason = 'Speeding',
    issuer = 'LSPD',
})

GetBills(number, kind, status) → table[]

Factures d’un téléphone.

lua
local bills = exports['origen_phone']:GetBills(number, 'fine', 'pending')
Paramètre Type Description
number string Numéro de téléphone
kind string|nil 'invoice', 'fine' ou nil pour les deux
status string|nil 'pending', 'paid', 'refused' ou 'cancelled'

GetPendingBills(number, kind) → number, number

Le nombre de factures en attente et le montant total dû.

lua
local count, total = exports['origen_phone']:GetPendingBills(number)

CancelBill(id) → boolean

Retire une facture. Ne fonctionne que tant qu’elle est en attente.

lua
exports['origen_phone']:CancelBill(billId)

Appels et appareil

IsInCall(number) → boolean

Indique si ce numéro est en appel en ce moment.

lua
local busy = exports['origen_phone']:IsInCall(number)

GetDeviceState(number) → table|nil

Ce que le serveur sait d’un téléphone.

lua
local state = exports['origen_phone']:GetDeviceState(number)
-- { airplane, dnd, battery, charging, signal }

SetBattery(number, level) → boolean

Définit le niveau de batterie d’un téléphone (de 0 à 100).

lua
exports['origen_phone']:SetBattery(number, 100)

SetCharging(number, charging) → boolean

Marque un téléphone comme en charge ou non.

lua
exports['origen_phone']:SetCharging(number, true)

Livraisons

CreateSupplyDelivery(data) → number|nil, string|nil

Crée une mission de livraison d’approvisionnement dans l’app Mandao. Quand le livreur confirme son arrivée, le téléphone appelle DeliverOrder(businessId, orderId) sur le bridge Business, qui place la marchandise là où elle doit aller. Le livreur ne transporte jamais la marchandise.

lua
local id, err = exports['origen_phone']:CreateSupplyDelivery({
    businessId = 'burgershot',
    orderId = 42,
    label = 'Burger Shot',
    coords = { x = -1193.0, y = -892.0, z = 14.0 },
    items = { { name = 'bread', count = 20 } },
})
Champ Type Description
businessId string Commerce qui reçoit la commande
orderId any Id de la commande renvoyé à DeliverOrder
label string Libellé de la destination
coords table Destination { x, y, z }. Doit être une table simple, pas un vector3
items table Marchandise, enregistrée telle qu’elle est montrée au livreur
requester any Qui l’a demandée
note string|nil Note pour le livreur

La marchandise est récupérée au dépôt le plus proche de Config.Delivery.Depots.

Renvoie nil, 'err_delivery_off' quand Config.Delivery.HandleBusinessOrders est désactivé, et nil, 'err_delivery_no_couriers' quand aucun livreur n’est en service. Dans les deux cas, le commerce doit livrer la commande par ses propres moyens.


SupplyActive(id) → boolean

Indique si une livraison d’approvisionnement est toujours active (pending, taken, picked ou arrived). Une livraison expirée ou annulée n’arrivera jamais.

lua
local alive = exports['origen_phone']:SupplyActive(deliveryId)

IsCourierOnDuty(number) → boolean

Indique si un numéro est enregistré comme livreur et en service.

lua
local onDuty = exports['origen_phone']:IsCourierOnDuty(number)

GetCurrentDelivery(number, asCourier) → table|nil

La livraison que quelqu’un est en train de gérer, le cas échéant.

lua
local delivery = exports['origen_phone']:GetCurrentDelivery(number, true)
Paramètre Type Description
number string Numéro de téléphone
asCourier boolean true la recherche en tant que livreur, false en tant que client

Véhicules et propriétés

Normalisés à partir des bridges Garage et Housing actifs, pour que les appelants n’aient pas besoin de savoir quelle ressource se trouve derrière.

GetVehicles(citizenid) → table[]

lua
local vehicles = exports['origen_phone']:GetVehicles(citizenid)
-- { { plate, model, garage, state, fuel, engine, body, depotPrice } }

GetProperties(citizenid) → table[]

Les propriétés du personnage : celles qu’il possède et celles dont il a une clé.

lua
local houses = exports['origen_phone']:GetProperties(citizenid)
-- { { id, name, mine, price, kind, keys, where } }

Exports client

UsePhoneItem(data, slot)

Ouvre le téléphone à partir d’un objet ox_inventory. Lit le numéro dans les métadonnées du slot, donc avec deux téléphones, c’est celui qui a été utilisé qui s’ouvre.

lua
-- ox_inventory/data/items.lua
client = { export = 'origen_phone.UsePhoneItem' },

UsePhone(item)

Identique à UsePhoneItem, pour les inventaires qui transmettent l’objet entier plutôt que le slot.

lua
exports['origen_phone']:UsePhone(item)

Open()

Ouvre le premier téléphone que le joueur porte.

lua
exports['origen_phone']:Open()

Close()

Ferme le téléphone.

lua
exports['origen_phone']:Close()

IsOpen() → boolean

Indique si le téléphone est ouvert.

lua
local open = exports['origen_phone']:IsOpen()

GetNumber() → string|nil

Le numéro du téléphone utilisé.

lua
local number = exports['origen_phone']:GetNumber()

IsInCall() → boolean

Indique si le joueur local est en appel.

lua
local busy = exports['origen_phone']:IsInCall()

ShowNotification(data) → boolean

Affiche une carte de notification du téléphone sans l’enregistrer : elle ne compte pas comme non lue et n’ouvre aucune app. Respecte Custom.ShowNotification.

lua
exports['origen_phone']:ShowNotification({
    app = 'services',
    title = 'Dispatch',
    content = 'Alert in Vinewood',
})
Champ Type Description
app string Icône de l’app. Par défaut 'settings'
title string Titre
content string Corps
avatar string|nil URL de l’avatar
thumbnail string|nil URL de la miniature
silent boolean|nil Ne pas jouer de son

ShowServerNotification(data) → boolean

Répercute sur le téléphone une notification du serveur (style origen_notify), lorsque Config.ServerNotifications.Enabled est activé et que le joueur porte un téléphone. Renvoie true quand le téléphone prend en charge la notification.

lua
local handled = exports['origen_phone']:ShowServerNotification({
    title = 'Bank',
    description = 'You received $40',
    type = 'success',
})
Champ Type Description
description string Texte (text et content sont aussi acceptés)
title string|nil Titre. Par défaut, le titre du serveur
type string|nil Type de notification, filtré par Config.ServerNotifications.Types
app string|nil Icône. Par défaut, l’icône du serveur

openManagement()

Ouvre le panneau d’administration. Utilisé par origen_admin ; la permission est vérifiée côté serveur.

lua
exports['origen_phone']:openManagement()