Ajustes de juego: precios, límites, teclas, comportamiento de las apps. Se comparte con los clientes
config/bridge.lua
Qué sistema externo usar en cada categoría
config/server.lua
Secretos solo del servidor (clave de subida). Nunca se envía a los clientes
config/apps.lua
Catálogo de apps de la pantalla de inicio y propiedad de los dominios de la API
config/widgets.lua
Catálogo de widgets de la pantalla de inicio
config/pescabichos*.lua
Datos del juego Pescabichos: especies, zonas de aparición, ataques, gimnasios, progresión
locales/*.json
Traducciones
La mayoría de los ajustes del día a día (fondos de pantalla, colores de acento, batería, acceso a apps, precios, puntos de carga, tiendas, aparcacoches) viven en el panel de administración (/telefonoadmin) y se guardan en la base de datos, así que cambian sin reiniciar. Los valores de config/config.lua para esos ajustes son solo los valores por defecto de una instalación nueva.
config/config.lua se envía a todos los clientes. No pongas nunca secretos ahí: usa config/server.lua o un convar.
Clave de API de Fivemanage que usa el bridge de Uploader por defecto. Es mejor usar el convar que pegar la clave en el archivo
General
Opción
Por defecto
Descripción
Config.Debug
convar ogphone_debug
Registra en la consola cada RPC. Mantenlo desactivado en producción
Config.EsxIdentifier
nil
Solo ESX. Campo de xPlayer que contiene el identificador del personaje en servidores multipersonaje. Déjalo en nil en ESX de un solo personaje
Config.Carrier
'OGN MOVIL'
Nombre del operador que se muestra en la barra de estado
Config.Currency
'$'
Símbolo de moneda que usan facturas, multas y notificaciones
Objeto
Opción
Por defecto
Descripción
Config.Item.Require
true
El objeto es obligatorio para abrir el teléfono
Config.Item.Unique
true
Cada teléfono es un objeto distinto con sus propios metadatos
Config.Item.Name
'ognphone'
Nombre del objeto en el inventario
Config.Item.MetaNumber
'ognPhoneNumber'
Clave de metadatos del número de teléfono
Config.Item.MetaFormatted
'ognFormattedNumber'
Clave de metadatos del número con formato
Config.Item.MetaName
'ognPhoneName'
Clave de metadatos del nombre del dispositivo
Config.Item.MetaId
'ognPhoneId'
Clave de metadatos del id del registro del teléfono. Indica cuál de los dispositivos que muestran un número es el verdadero. Se escribe automáticamente en los objetos antiguos la primera vez que se abren
Config.Item.Owner
'person'
A quién pertenecen los datos: 'person' (el personaje) o 'item' (el dispositivo). Se controla en directo desde el panel de administración; esto es solo el valor por defecto
Números de teléfono
Opción
Por defecto
Descripción
Config.PhoneNumber.Format
'{2}-{4}'
Formato de visualización. Los números se guardan solo como dígitos
Config.PhoneNumber.Length
4
Dígitos después del prefijo
Config.PhoneNumber.Prefixes
{ '55', '60', '62', '68', '70' }
Prefijos que se asignan a los números nuevos
Números personalizados
Un servicio VIP: el jugador solicita un número desde Ajustes y un administrador lo aprueba o lo deniega desde el panel. El dinero se cobra al aprobar, no al solicitar.
Opción
Por defecto
Descripción
Config.Numbers.Enabled
true
Activa las solicitudes de número personalizado
Config.Numbers.Price
25000
Precio. Con 0 es gratis
Config.Numbers.KeepPrefix
true
El número solicitado debe empezar por uno de los prefijos configurados
Comando para abrir o cerrar el teléfono. false lo desactiva
Config.Keybind
'F1'
Tecla por defecto. Los jugadores pueden reasignarla en los atajos de teclado de FiveM
Config.CloseOnDeath
true
Cierra el teléfono cuando el jugador muere
Config.CloseWhenSwimming
true
Cierra el teléfono mientras se nada
Config.AllowInVehicle
true
Permite usar el teléfono dentro de vehículos
Animación y prop
Opción
Por defecto
Descripción
Config.Animation.Enabled
true
Reproduce la animación del teléfono
Config.Animation.Prop
prop_amb_phone
Modelo del prop
Config.Animation.PropBone
28422
Hueso al que se une el prop
Config.Animation.PropOffset
vector3(0.0, 0.0, 0.0)
Desplazamiento del prop
Config.Animation.PropRotation
vector3(0.0, 0.0, 0.0)
Rotación del prop
Notificaciones
Lo que ven los jugadores cuando llega algo con el teléfono cerrado. El teléfono asoma por el borde inferior con su marco, su fondo de pantalla y el reloj. El contenido se oculta cuando el jugador ha desactivado las vistas previas o está en modo streamer.
Opción
Por defecto
Descripción
Config.Notifications.Outside
true
Muestra el teléfono asomando. Con false solo suena un sonido
Config.Notifications.Side
'right'
'right', 'center' o 'left'
Config.Notifications.Seconds
6
Tiempo en pantalla
Config.Notifications.Max
3
Notificaciones apiladas a la vez
Config.Notifications.AutoWake
true
Enciende el teléfono de forma invisible cuando el jugador aparece llevando uno, para que las llamadas y los mensajes le lleguen antes de abrirlo
Config.Notifications.WakeEvery
20
Segundos entre comprobaciones de si lleva un teléfono encima
Notificaciones del servidor
Las notificaciones de origen_notify también pueden aparecer en el teléfono. No se guardan en el centro de notificaciones.
Opción
Por defecto
Descripción
Config.ServerNotifications.Enabled
false
Muestra las notificaciones del servidor en el teléfono. Las opciones de abajo solo se aplican si está activado
Config.ServerNotifications.Replace
true
Con true la notificación pasa al teléfono; con false se muestra en ambos sitios
Config.ServerNotifications.Sound
false
Reproduce el tono de alerta del teléfono
Config.ServerNotifications.Types
nil
Tipos que se muestran. nil o vacío los muestra todos. Ejemplo: { error = true, primary = true }
Config.ServerNotifications.Cooldown
1500
Un texto idéntico dentro de estos milisegundos no se vuelve a mostrar
Logs
Envía la actividad del teléfono a un webhook de Discord. Nunca se envían el contenido de los mensajes, las fotos ni los datos privados.
Opción
Por defecto
Descripción
Config.Logs.Webhook
''
URL del webhook de Discord. Vacío desactiva los logs
Config.Logs.Name
'ORIGEN'
Nombre del remitente del 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
}
Almacenamiento
Opción
Por defecto
Descripción
Config.Storage.Capacity
0
Capacidad en MB. 0 la calcula a partir de Config.Uploader.MaxPhotos (recomendado)
Config.Storage.Slack
120
MB extra para contenido que no son fotos cuando la capacidad se calcula automáticamente
Números cortos que enrutan una llamada a un trabajo de servicio.
Vídeo (alternativa por fotogramas)
Se usa solo cuando no está disponible la conexión directa WebRTC.
Opción
Por defecto
Descripción
Config.Calls.Video.Fps
12
Techo de fotogramas por segundo
Config.Calls.Video.Width
240
Ancho de la imagen, en píxeles
Config.Calls.Video.Quality
0.5
Calidad JPEG inicial (0 a 1)
Config.Calls.Video.KBPorSegundo
96
Subida máxima por lado a través de la conexión del juego, en KB/s
Config.Calls.Video.MaxConcurrent
8
Videollamadas que envían imágenes a la vez. Por encima de este número, las llamadas solo llevan audio
Subir KBPorSegundo es el único ajuste arriesgado de este bloque. Los fotogramas viajan por la misma conexión que el juego; demasiada subida hace que expulsen a los jugadores por timeout.
Buzón de voz
Opción
Por defecto
Descripción
Config.Voicemail.Window
120
Segundos tras una llamada sin contestar durante los cuales se puede dejar un mensaje
Config.Voicemail.MaxSeconds
30
Duración máxima de la grabación
WebRTC
Opción
Por defecto
Descripción
Config.WebRTC.Enabled
true
Envía el vídeo de punto a punto. Si está desactivado o la conexión falla, recurre a fotogramas retransmitidos por el servidor
Config.WebRTC.Turn
'cloudflare'
'cloudflare' solicita credenciales TURN a Cloudflare Realtime (requiere los convars ogphone_turn_token_id y ogphone_turn_api_token). false usa solo STUN
Config.WebRTC.TurnTtl
86400
Vida útil de las credenciales solicitadas, en segundos
Config.WebRTC.Timeout
6
Segundos de espera de la conexión directa antes de recurrir a la alternativa
Config.WebRTC.MaxKbit
1000
Bitrate máximo de subida para vídeo directo, en kbit/s
Número remitente de los mensajes del servidor sin remitente
Config.Messages.EditWindow
900
Segundos durante los cuales se puede editar un mensaje
Config.Messages.PageSize
30
Mensajes por página al hacer scroll
Config.Messages.MaxGroupMembers
32
Miembros por chat de grupo
Config.Messages.AllowDelete
true
Permite borrar mensajes para todos
Config.Messages.DeleteWindow
3600
Segundos durante los cuales se puede borrar un mensaje para todos
Stickers
Packs incluidos con el servidor, que se cargan en la base de datos al arrancar según el slug. Las URL pueden ser externas o del propio recurso (nui://origen_phone/ui/...). Los packs de los jugadores se crean desde la galería.
Quién puede conducir. jobs son trabajos del framework, businesses son nombres o tipos de negocio del bridge Business. Basta con cumplir uno de los dos. false permite conducir a cualquiera. Se comprueba cada vez, no solo al darse de alta
base
Tarifa base
perKm
Tarifa por kilómetro
Carreras de taxi con NPC
Cuando hay taxistas libres y pocas solicitudes, se generan carreras de pasajeros NPC. El servidor valida la posición del conductor en la recogida y en el destino y rechaza tiempos de llegada imposibles.
Campo
Por defecto
Descripción
enabled
true
Activa las carreras con NPC
every
45
Segundos entre comprobaciones de generación
chance
0.6
Probabilidad de que haya una carrera en cada comprobación (0 a 1)
perDriver
1
Máximo de carreras NPC pendientes por conductor libre
maxPending
4
Máximo de carreras NPC pendientes en total
nearDriver
2500
La recogida está a esta distancia de un conductor libre, en metros
minTrip / maxTrip
600 / 4500
Rango de longitud del trayecto, en metros
radius
80.0
Radio alrededor del punto donde debe estar el taxi
maxSpeed
30
Velocidad media máxima plausible, en m/s
fareFactor
1.0
Tarifa NPC respecto a la tarifa normal
models
lista
Modelos de ped usados como pasajeros
names
lista
Nombres que se muestran de los pasajeros
notes
lista
Notas que envía el pasajero. Las cadenas vacías significan sin nota
places
lista
Puntos de recogida y destino { x, y, z, label }. El pasajero aparece en la acera más cercana
Mandao (repartos)
Opción
Por defecto
Descripción
Config.Delivery.Base
200
Tarifa base de reparto
Config.Delivery.PerKm
60
Tarifa por kilómetro
Config.Delivery.CourierCut
0.85
Parte que se queda el mensajero
Config.Delivery.Timeout
20
Minutos que espera un encargo sin aceptar
Config.Delivery.Deadline
10
Minutos para entregar un encargo aceptado. Al vencer, la mercancía se entrega igualmente y el mensajero recibe una falta
Config.Delivery.StrikeBans
{ 10, 30, 60 }
Minutos de bloqueo por falta. La última entrada se repite
Config.Delivery.StrikeReset
120
Minutos sin fallos antes de que se olviden las faltas
Config.Delivery.MinDistance
150
Distancia mínima de entrega, en metros
Config.Delivery.Reach
8.0
Distancia necesaria para recoger o entregar, en metros
Config.Delivery.MaxItems
8
Objetos distintos por entrega entre jugadores
Config.Delivery.Employer
false
Quién puede repartir. Mismo formato que Config.Rides.Taxi.employer
Config.Delivery.HandleBusinessOrders
true
Los pedidos de negocios esperan a un mensajero en lugar de llegar automáticamente
Config.Delivery.BusinessFee
450
Lo que el negocio paga al mensajero por entregar su pedido
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 },
}
Dónde se recoge la mercancía de los pedidos de negocios. Vacío significa recogida en el propio negocio.
La clave se guarda y se compara; el valor es la clave de locale que se muestra.
Banco, facturas y multas
Opción
Por defecto
Descripción
Config.Bank.MaxTransfer
500000
Límite por transferencia desde el teléfono
Config.Bank.MaxDaily
2000000
Total que se puede mover al día. 0 quita el límite
Config.Bank.MaxWeekly
8000000
Total que se puede mover a la semana. 0 quita el límite
Config.FineAccount
''
Cuenta que recibe los pagos de multas. Vacío cobra al jugador sin ingresar en ningún sitio
Cripto
Desactivado por defecto porque obtiene precios en vivo de internet. Para activarlo, pon Config.Crypto.Enabled = true, añade { id = 'crypto', label = 'Monedas', slot = 27, default = true } a Apps y crypto = 'crypto' a AppDomains en config/apps.lua.
Opción
Por defecto
Descripción
Config.Crypto.Enabled
false
Activa el trading de criptomonedas
Config.Crypto.Api
endpoint público de CoinGecko
Fuente de precios. No necesita clave de API
Config.Crypto.Currency
'usd'
Moneda de los precios
Config.Crypto.Refresh
300
Segundos entre consultas de precios (compartido por todo el servidor)
Quién puede escribir artículos desde el teléfono. Basta con cumplir uno de businesses o jobs. Pon Publishers en false para publicar solo mediante el export PublishNews. MaxPerDay es el límite por teléfono; 0 lo quita.
Servicios de emergencia
Las alertas se envían al bridge de Dispatch con la posición de quien llama.
Los tonos de llamada y las alertas son archivos en ui/sounds/. El id se guarda en los ajustes de cada jugador, así que no debe cambiar una vez publicado.
Idiomas
Opción
Por defecto
Descripción
Config.DefaultLanguage
'es'
Idioma por defecto del teléfono
Config.Languages
{ 'es', 'en', 'fr', 'de', 'pt' }
Idiomas disponibles. Con uno solo, el selector de idioma se oculta
Config.DateLocales
es-ES, en-GB, fr-FR, de-DE, pt-PT
Formato de fechas y números por idioma
Config.DateLocale
'es-ES'
Valor de respaldo para un idioma que falta en DateLocales
Para añadir un idioma, copia locales/en.json, tradúcelo y añade su código a Config.Languages y Config.DateLocales.
config/apps.lua
La fuente de verdad del servidor sobre qué apps existen. Editar la interfaz no basta para entrar en una app.
Campo
Descripción
id
Identificador de la app
label
Nombre que se muestra
slot
Posición en la cuadrícula de la pantalla de inicio (1 a 24 por página)
dock
Se coloca en el dock inferior en lugar de en la cuadrícula
Quita una app de esta lista para desactivarla para todos. Para restringirla a algunos jugadores (civiles, una banda, un trabajo), usa en su lugar el panel de administración.
AppDomains asigna cada dominio de la API del servidor a la app que lo posee. Cuando un jugador pierde el acceso a una app, sus métodos del servidor dejan de responderle, por lo que el acceso se aplica en el lado del servidor.
Lo rellena otro recurso con el export SetWidgetData
Los permisos de los widgets se gestionan en el panel de administración.
Pescabichos
Datos de juego de la app de captura de criaturas. Los nombres y textos son claves de locale (pb_sp_12, pb_sp_12_desc, pb_atk_12_1); para renombrar una criatura, edita esa clave en cada locales/*.json. Un valor que no es una clave se muestra tal cual.
Archivo
Qué contiene
config/pescabichos.lua
Tipos, rarezas, zonas de aparición y especies del 1 al 50
Combates, tabla de tipos, movimientos por tipo, gimnasios, incursiones, evolución
config/pescabichos_ataques.lua
Ataques de cada criatura
config/pescabichos_progreso.lua
Nivel del jugador, desbloqueos y tienda
Campos de especie
Campo
Descripción
id
Número de colección (1 a 200). También es el nombre de la imagen: ui/images/pescabichos/<id>.webp
nombre
Clave de locale del nombre
tipos
Uno o dos de asfalto, neon, marea, polvo, pino, chatarra, brasa, niebla
rareza
comun, poco, rara, epica o legendaria
zonas
Dónde aparece. Vacío es en cualquier parte de tierra. 'mar' es agua de verdad
peso
Peso de aparición opcional. Por defecto, el de su rareza
stock
Máximo opcional en todo el servidor
red
Red especial opcional necesaria para capturarla
dificultad
Dificultad de captura opcional (1 a 5)
hora
nil siempre, 'noche' (21-6) o 'dia' (7-20)
familia / fase
Línea evolutiva y etapa (1, 2 o 3)
pc
Poder mínimo y máximo con el que aparece
texto
Clave de locale de su entrada en la dex
Rarezas
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 },
}
Campo
Descripción
peso
Peso de aparición frente a las demás rarezas
captura
Probabilidad base de captura
huye
Probabilidad de que huya tras un intento fallido
xp
XP que se obtiene al capturarla
Zonas
Las zonas de tierra son rectángulos del mapa { min x, min y, max x, max y }, que se comprueban en orden (primero las zonas pequeñas). Fuera de todas ellas la zona es 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 } },
-- ...
}