Réglages de jeu : prix, limites, touches, comportement des apps. Partagé avec les clients
config/bridge.lua
Quel système externe utiliser pour chaque catégorie
config/server.lua
Secrets réservés au serveur (clé d’upload). Jamais envoyé aux clients
config/apps.lua
Catalogue des apps de l’écran d’accueil et propriété des domaines de l’API
config/widgets.lua
Catalogue des widgets de l’écran d’accueil
config/pescabichos*.lua
Données du jeu Pescabichos : espèces, zones d’apparition, attaques, arènes, progression
locales/*.json
Traductions
La plupart des réglages du quotidien (fonds d’écran, couleurs d’accent, batterie, accès aux apps, prix, points de recharge, boutiques, voiturier) se trouvent dans le panneau d’administration (/telefonoadmin) et sont stockés dans la base de données, donc ils changent sans redémarrage. Les valeurs de config/config.lua pour ces réglages ne sont que les valeurs par défaut d’une installation neuve.
config/config.lua est envoyé à tous les clients. N’y mets jamais de secrets : utilise config/server.lua ou un convar.
Clé d’API Fivemanage utilisée par le bridge Uploader par défaut. Mieux vaut utiliser le convar que coller la clé dans le fichier
Général
Option
Par défaut
Description
Config.Debug
convar ogphone_debug
Journalise chaque RPC dans la console. Laisse désactivé en production
Config.EsxIdentifier
nil
ESX uniquement. Champ du xPlayer qui contient l’identifiant du personnage sur les serveurs multipersonnages. Laisse nil sur un ESX à personnage unique
Config.Carrier
'OGN MOVIL'
Nom de l’opérateur affiché dans la barre d’état
Config.Currency
'$'
Symbole monétaire utilisé par les factures, les amendes et les notifications
Objet
Option
Par défaut
Description
Config.Item.Require
true
L’objet est obligatoire pour ouvrir le téléphone
Config.Item.Unique
true
Chaque téléphone est un objet distinct avec ses propres métadonnées
Config.Item.Name
'ognphone'
Nom de l’objet dans l’inventaire
Config.Item.MetaNumber
'ognPhoneNumber'
Clé de métadonnées du numéro de téléphone
Config.Item.MetaFormatted
'ognFormattedNumber'
Clé de métadonnées du numéro formaté
Config.Item.MetaName
'ognPhoneName'
Clé de métadonnées du nom de l’appareil
Config.Item.MetaId
'ognPhoneId'
Clé de métadonnées de l’id de l’enregistrement du téléphone. Indique lequel des appareils affichant un numéro est le vrai. Écrite automatiquement sur les anciens objets à leur première ouverture
Config.Item.Owner
'person'
À qui appartiennent les données : 'person' (le personnage) ou 'item' (l’appareil). Se contrôle en direct depuis le panneau d’administration ; ce n’est que la valeur par défaut
Numéros de téléphone
Option
Par défaut
Description
Config.PhoneNumber.Format
'{2}-{4}'
Format d’affichage. Les numéros sont stockés uniquement sous forme de chiffres
Config.PhoneNumber.Length
4
Chiffres après le préfixe
Config.PhoneNumber.Prefixes
{ '55', '60', '62', '68', '70' }
Préfixes attribués aux nouveaux numéros
Numéros personnalisés
Un service VIP : le joueur demande un numéro depuis les Réglages et un administrateur l’approuve ou le refuse depuis le panneau. L’argent est prélevé à l’approbation, pas à la demande.
Option
Par défaut
Description
Config.Numbers.Enabled
true
Active les demandes de numéro personnalisé
Config.Numbers.Price
25000
Prix. 0 le rend gratuit
Config.Numbers.KeepPrefix
true
Le numéro demandé doit commencer par l’un des préfixes configurés
Commande pour ouvrir ou fermer le téléphone. false la désactive
Config.Keybind
'F1'
Touche par défaut. Les joueurs peuvent la modifier dans les raccourcis clavier de FiveM
Config.CloseOnDeath
true
Ferme le téléphone quand le joueur meurt
Config.CloseWhenSwimming
true
Ferme le téléphone pendant la nage
Config.AllowInVehicle
true
Autorise l’utilisation du téléphone dans les véhicules
Animation et prop
Option
Par défaut
Description
Config.Animation.Enabled
true
Joue l’animation du téléphone
Config.Animation.Prop
prop_amb_phone
Modèle du prop
Config.Animation.PropBone
28422
Os auquel le prop est attaché
Config.Animation.PropOffset
vector3(0.0, 0.0, 0.0)
Décalage du prop
Config.Animation.PropRotation
vector3(0.0, 0.0, 0.0)
Rotation du prop
Notifications
Ce que voient les joueurs quand quelque chose arrive alors que le téléphone est fermé. Le téléphone apparaît par le bord inférieur avec sa coque, son fond d’écran et l’horloge. Le contenu est masqué quand le joueur a désactivé les aperçus ou est en mode streamer.
Option
Par défaut
Description
Config.Notifications.Outside
true
Affiche le téléphone qui apparaît. Avec false, seul un son est joué
Config.Notifications.Side
'right'
'right', 'center' ou 'left'
Config.Notifications.Seconds
6
Durée d’affichage à l’écran
Config.Notifications.Max
3
Notifications empilées en même temps
Config.Notifications.AutoWake
true
Allume le téléphone de façon invisible quand le joueur apparaît en en portant un, pour que les appels et les messages lui parviennent avant qu’il ne l’ouvre
Config.Notifications.WakeEvery
20
Secondes entre deux vérifications de la présence d’un téléphone sur le joueur
Notifications du serveur
Les notifications de origen_notify peuvent aussi s’afficher sur le téléphone. Elles ne sont pas conservées dans le centre de notifications.
Option
Par défaut
Description
Config.ServerNotifications.Enabled
false
Affiche les notifications du serveur sur le téléphone. Les options ci-dessous ne s’appliquent que si c’est activé
Config.ServerNotifications.Replace
true
Avec true, la notification passe sur le téléphone ; avec false, elle s’affiche aux deux endroits
Config.ServerNotifications.Sound
false
Joue la sonnerie d’alerte du téléphone
Config.ServerNotifications.Types
nil
Types à afficher. nil ou vide les affiche tous. Exemple : { error = true, primary = true }
Config.ServerNotifications.Cooldown
1500
Un texte identique dans ce délai en millisecondes n’est pas réaffiché
Logs
Envoie l’activité du téléphone à un webhook Discord. Le contenu des messages, les photos et les données privées ne sont jamais envoyés.
Option
Par défaut
Description
Config.Logs.Webhook
''
URL du webhook Discord. Vide, les logs sont désactivés
Config.Logs.Name
'ORIGEN'
Nom de l’expéditeur du webhook
lua
Config.Logs.What = {
admin = true, -- changes made from the admin panel
numbers = true, -- custom number requests and their outcome
recovery = true, -- recovered lines
transfers = true, -- money transfers
blackmarket = true, -- black market purchases
}
Stockage
Option
Par défaut
Description
Config.Storage.Capacity
0
Capacité en Mo. 0 la calcule à partir de Config.Uploader.MaxPhotos (recommandé)
Config.Storage.Slack
120
Mo supplémentaires pour le contenu qui n’est pas des photos quand la capacité est calculée automatiquement
Numéros courts qui redirigent un appel vers un métier de service.
Vidéo (repli par images)
Utilisé uniquement quand la connexion directe WebRTC n’est pas disponible.
Option
Par défaut
Description
Config.Calls.Video.Fps
12
Plafond d’images par seconde
Config.Calls.Video.Width
240
Largeur de l’image, en pixels
Config.Calls.Video.Quality
0.5
Qualité JPEG initiale (0 à 1)
Config.Calls.Video.KBPorSegundo
96
Upload maximum par côté via la connexion du jeu, en Ko/s
Config.Calls.Video.MaxConcurrent
8
Appels vidéo qui envoient des images en même temps. Au-delà, les appels n’ont que l’audio
Augmenter KBPorSegundo est le seul réglage risqué de ce bloc. Les images circulent sur la même connexion que le jeu ; trop d’upload fait expulser les joueurs pour timeout.
Messagerie vocale
Option
Par défaut
Description
Config.Voicemail.Window
120
Secondes après un appel sans réponse pendant lesquelles on peut laisser un message
Config.Voicemail.MaxSeconds
30
Durée maximale de l’enregistrement
WebRTC
Option
Par défaut
Description
Config.WebRTC.Enabled
true
Envoie la vidéo en pair à pair. Désactivé, ou si la connexion échoue, on retombe sur des images relayées par le serveur
Config.WebRTC.Turn
'cloudflare'
'cloudflare' demande des identifiants TURN à Cloudflare Realtime (nécessite les convars ogphone_turn_token_id et ogphone_turn_api_token). false utilise uniquement STUN
Config.WebRTC.TurnTtl
86400
Durée de vie des identifiants demandés, en secondes
Config.WebRTC.Timeout
6
Secondes d’attente de la connexion directe avant de basculer sur le repli
Config.WebRTC.MaxKbit
1000
Débit d’upload maximal pour la vidéo directe, en kbit/s
Numéro expéditeur des messages du serveur sans expéditeur
Config.Messages.EditWindow
900
Secondes pendant lesquelles un message peut être modifié
Config.Messages.PageSize
30
Messages par page lors du défilement
Config.Messages.MaxGroupMembers
32
Membres par discussion de groupe
Config.Messages.AllowDelete
true
Autorise la suppression des messages pour tout le monde
Config.Messages.DeleteWindow
3600
Secondes pendant lesquelles un message peut être supprimé pour tout le monde
Stickers
Packs fournis avec le serveur, chargés dans la base de données au démarrage selon le slug. Les URL peuvent être externes ou provenir de la ressource (nui://origen_phone/ui/...). Les packs des joueurs se créent depuis la galerie.
Qui peut conduire. jobs sont les métiers du framework, businesses sont des noms ou types d’entreprise du bridge Business. Remplir l’une des deux conditions suffit. false laisse conduire n’importe qui. Vérifié à chaque fois, pas seulement à l’inscription
base
Tarif de base
perKm
Tarif par kilomètre
Courses de taxi avec PNJ
Quand il y a des chauffeurs de taxi libres et peu de demandes, des courses de passagers PNJ sont générées. Le serveur valide la position du chauffeur à la prise en charge et à la destination, et rejette les temps d’arrivée impossibles.
Champ
Par défaut
Description
enabled
true
Active les courses PNJ
every
45
Secondes entre deux vérifications de génération
chance
0.6
Probabilité d’une course à chaque vérification (0 à 1)
perDriver
1
Maximum de courses PNJ en attente par chauffeur libre
maxPending
4
Maximum de courses PNJ en attente au total
nearDriver
2500
La prise en charge se fait à cette distance d’un chauffeur libre, en mètres
minTrip / maxTrip
600 / 4500
Plage de longueur du trajet, en mètres
radius
80.0
Rayon autour du point où le taxi doit se trouver
maxSpeed
30
Vitesse moyenne maximale plausible, en m/s
fareFactor
1.0
Tarif PNJ par rapport au tarif normal
models
liste
Modèles de ped utilisés comme passagers
names
liste
Noms d’affichage des passagers
notes
liste
Notes envoyées par le passager. Les chaînes vides signifient aucune note
places
liste
Points de prise en charge et de dépose { x, y, z, label }. Le passager apparaît sur le trottoir le plus proche
Mandao (livraisons)
Option
Par défaut
Description
Config.Delivery.Base
200
Tarif de base de livraison
Config.Delivery.PerKm
60
Tarif par kilomètre
Config.Delivery.CourierCut
0.85
Part conservée par le coursier
Config.Delivery.Timeout
20
Minutes d’attente d’une mission non acceptée
Config.Delivery.Deadline
10
Minutes pour livrer une mission acceptée. À l’expiration, la marchandise est quand même livrée et le coursier reçoit un avertissement
Config.Delivery.StrikeBans
{ 10, 30, 60 }
Minutes de blocage par avertissement. La dernière valeur se répète
Config.Delivery.StrikeReset
120
Minutes sans échec avant que les avertissements soient oubliés
Config.Delivery.MinDistance
150
Distance minimale de livraison, en mètres
Config.Delivery.Reach
8.0
Distance requise pour récupérer ou livrer, en mètres
Config.Delivery.MaxItems
8
Objets distincts par livraison entre joueurs
Config.Delivery.Employer
false
Qui peut livrer. Même format que Config.Rides.Taxi.employer
Config.Delivery.HandleBusinessOrders
true
Les commandes des entreprises attendent un coursier au lieu d’arriver automatiquement
Config.Delivery.BusinessFee
450
Ce que l’entreprise paie au coursier pour livrer sa commande
lua
Config.Delivery.Depots = {
{ label = 'Almacen de mercancia · Muelle 1', x = 95.67, y = -1746.8, z = 28.7, h = 140.88 },
{ label = 'Almacen de mercancia · Muelle 2', x = 99.68, y = -1749.3, z = 28.71, h = 139.86 },
{ label = 'Almacen de mercancia · Muelle 3', x = 103.73, y = -1751.94, z = 28.72, h = 139.62 },
}
Lieu où la marchandise des commandes d’entreprise est récupérée. Vide, la récupération se fait dans l’entreprise elle-même.
La clé est stockée et comparée ; la valeur est la clé de locale affichée.
Banque, factures et amendes
Option
Par défaut
Description
Config.Bank.MaxTransfer
500000
Limite par virement depuis le téléphone
Config.Bank.MaxDaily
2000000
Total pouvant être déplacé par jour. 0 supprime la limite
Config.Bank.MaxWeekly
8000000
Total pouvant être déplacé par semaine. 0 supprime la limite
Config.FineAccount
''
Compte qui reçoit les paiements d’amendes. Vide, le joueur est débité sans dépôt nulle part
Crypto
Désactivé par défaut car il récupère des prix en direct sur internet. Pour l’activer, mets Config.Crypto.Enabled = true, ajoute { id = 'crypto', label = 'Monedas', slot = 27, default = true } à Apps et crypto = 'crypto' à AppDomains dans config/apps.lua.
Option
Par défaut
Description
Config.Crypto.Enabled
false
Active le trading de cryptomonnaies
Config.Crypto.Api
endpoint public de CoinGecko
Source des prix. Aucune clé d’API nécessaire
Config.Crypto.Currency
'usd'
Devise des prix
Config.Crypto.Refresh
300
Secondes entre deux récupérations des prix (partagé par tout le serveur)
Config.Crypto.Fee
0.02
Frais de la maison par opération
Config.Crypto.MaxPerTrade
500000
Montant maximum par opération. 0 supprime la limite
Qui peut écrire des articles depuis le téléphone. Remplir l’une des conditions businesses ou jobs suffit. Mets Publishers à false pour publier uniquement via l’export PublishNews. MaxPerDay est la limite par téléphone ; 0 la supprime.
Services d’urgence
Les alertes sont envoyées au bridge Dispatch avec la position de l’appelant.
Les sonneries et les alertes sont des fichiers dans ui/sounds/. L’id est enregistré dans les réglages de chaque joueur, il ne doit donc pas changer une fois publié.
Langues
Option
Par défaut
Description
Config.DefaultLanguage
'es'
Langue par défaut du téléphone
Config.Languages
{ 'es', 'en', 'fr', 'de', 'pt' }
Langues disponibles. Avec une seule, le sélecteur de langue est masqué
Config.DateLocales
es-ES, en-GB, fr-FR, de-DE, pt-PT
Format des dates et des nombres par langue
Config.DateLocale
'es-ES'
Valeur de repli pour une langue absente de DateLocales
Pour ajouter une langue, copie locales/en.json, traduis-le et ajoute son code à Config.Languages et Config.DateLocales.
config/apps.lua
La source de vérité du serveur pour savoir quelles apps existent. Modifier l’interface ne suffit pas pour accéder à une app.
Champ
Description
id
Identifiant de l’app
label
Nom affiché
slot
Position dans la grille de l’écran d’accueil (1 à 24 par page)
dock
Placée dans le dock du bas au lieu de la grille
default
Installée par défaut
fija
Ne peut pas être désinstallée depuis la boutique d’apps
Retire une app de cette liste pour la désactiver pour tout le monde. Pour la restreindre à certains joueurs (civils, un gang, un métier), utilise plutôt le panneau d’administration.
AppDomains associe chaque domaine de l’API du serveur à l’app qui en est propriétaire. Quand un joueur perd l’accès à une app, les méthodes serveur de celle-ci cessent de lui répondre : l’accès est donc appliqué côté serveur.
Rempli par une autre ressource avec l’export SetWidgetData
Les permissions des widgets se gèrent dans le panneau d’administration.
Pescabichos
Données de jeu de l’app de capture de créatures. Les noms et les textes sont des clés de locale (pb_sp_12, pb_sp_12_desc, pb_atk_12_1) ; pour renommer une créature, modifie cette clé dans chaque locales/*.json. Une valeur qui n’est pas une clé s’affiche telle quelle.
Fichier
Contenu
config/pescabichos.lua
Types, raretés, zones d’apparition et espèces 1 à 50
Combats, tableau des types, attaques par type, arènes, raids, évolution
config/pescabichos_ataques.lua
Attaques de chaque créature
config/pescabichos_progreso.lua
Niveau du joueur, déblocages et boutique
Champs d’une espèce
Champ
Description
id
Numéro de collection (1 à 200). C’est aussi le nom de l’image : ui/images/pescabichos/<id>.webp
nombre
Clé de locale du nom
tipos
Un ou deux parmi asfalto, neon, marea, polvo, pino, chatarra, brasa, niebla
rareza
comun, poco, rara, epica ou legendaria
zonas
Où elle apparaît. Vide, c’est n’importe où sur terre. 'mar' correspond à de la vraie eau
peso
Poids d’apparition facultatif. Par défaut, celui de sa rareté
stock
Maximum facultatif sur tout le serveur
red
Filet spécial facultatif nécessaire pour la capturer
dificultad
Difficulté de capture facultative (1 à 5)
hora
nil toujours, 'noche' (21-6) ou 'dia' (7-20)
familia / fase
Lignée d’évolution et stade (1, 2 ou 3)
pc
Puissance minimale et maximale avec laquelle elle apparaît
texto
Clé de locale de sa fiche dans le dex
Raretés
lua
Pescabichos.Rarezas = {
comun = { nombre = 'pb_rarity_comun', peso = 100, captura = 0.55, huye = 0.08, xp = 100 },
poco = { nombre = 'pb_rarity_poco', peso = 38, captura = 0.35, huye = 0.12, xp = 200 },
rara = { nombre = 'pb_rarity_rara', peso = 12, captura = 0.20, huye = 0.18, xp = 500 },
epica = { nombre = 'pb_rarity_epica', peso = 3, captura = 0.09, huye = 0.25, xp = 1500 },
legendaria = { nombre = 'pb_rarity_legendaria', peso = 1, captura = 0.04, huye = 0.35, xp = 4000 },
}
Champ
Description
peso
Poids d’apparition par rapport aux autres raretés
captura
Probabilité de capture de base
huye
Probabilité de fuite après une tentative ratée
xp
XP accordé à la capture
Zones
Les zones terrestres sont des rectangles de la carte { min x, min y, max x, max y }, vérifiés dans l’ordre (les petites zones d’abord). En dehors de toutes, la zone est campo.
lua
Pescabichos.Zonas = {
{ id = 'alamo', nombre = 'pb_area_1', caja = { 300, 3850, 2050, 4600 } },
{ id = 'industrial', nombre = 'pb_area_2', caja = { -350, -3450, 1500, -2350 } },
-- ...
}