Panel en el juego
El comando /notify. Cada jugador ajusta las notificaciones a su pantalla y el admin fija los valores del servidor sin tocar un archivo ni reiniciar nada.
ob_notify trae un panel dentro del juego. Se abre con un comando y cambia lo
que se ve al momento: no hay que editar config.lua, ni reiniciar el recurso,
ni echar a nadie del servidor.
/notify
Hay dos niveles y no se mezclan:
| Quién | Qué hace | Dónde se guarda |
|---|---|---|
| Cualquier jugador | Ajusta lo suyo a su pantalla | En su propio cliente |
| Un admin | Fija con qué se encuentra todo el mundo | En el servidor |
Lo que ajusta un jugador

| Ajuste | Qué cambia |
|---|---|
| Posición | Las seis esquinas, o Libre para arrastrarlas donde quiera |
| Separación del borde | De 0 a 240 px |
| Tamaño | De 0.8× a 1.25×. Escala la tarjeta y su texto, no la deforma |
| Estilo | Cristal · Sólido · Mínima · Barra |
| Color de acento | Seis colores a un clic, o el suyo exacto |
| Opacidad | Del 50 % al 100 % |
| Cuántas a la vez | De 1 a 8 |
| Duración | De 0.5× a 2× |
| Cuenta atrás | Anillo · Barra · Ninguna |
| Sonido | Encendido o apagado |
Cada uno de ellos lo puede cerrar el admin. Lo que esté cerrado sale con un candado y el valor del servidor.

Manda en el anillo y en las notificaciones neutras. El verde de éxito, el rojo de error y el ámbar de aviso no cambian: son lo que hace que una notificación se entienda antes de leerla. Dejar que alguien pinte los errores de verde rompe justo eso.
Dónde se guardan sus preferencias
En el cliente, con el sistema de almacenamiento de FiveM. No hay tabla, ni consultas, ni coste para tu servidor, y sobreviven a los reinicios.
La contrapartida, dicha claramente: van por instalación del juego, no por cuenta. Quien entre desde otro ordenador empieza con los valores del servidor.
Ser administrador
Con permiso aparece una segunda pestaña, Servidor. Sin él no aparece —y el servidor lo vuelve a comprobar antes de escribir nada, así que trucar el cliente no sirve de nada.
El permiso es un ACE de FiveM, sin depender de ningún framework:
add_ace group.admin ob_notify.admin allowAñadir la línea y hacer restart ob_notify no hace nada. Hay que reiniciar
el servidor entero. Es lo que pilla a todo el mundo la primera vez.
Y si usas txAdmin, comprueba que el server.cfg que editas es el que carga.
Si el ACE no te cuadra, hay una lista a dedo
En config.lua:
Config.Panel.Admins = {
'license:0000000000000000000000000000000000000000',
'discord:000000000000000000'
}Esta lista se lee del recurso, así que un restart ob_notify la aplica al
momento. Vale cualquiera de tus identificadores.
Para ver los tuyos: entra al servidor, abre la consola del cliente con
F8 y usa /notify. Si ob_notify no te reconoce, te los imprime ya escritos
para copiarlos.
⚠️ No los publiques. Un identificador no es una contraseña —nadie entra con él— pero es estable y permite seguirte de un servidor a otro. Si compartes tu carpeta de recursos o la subes a un repositorio, vacía la lista antes.
Lo limpio es usar el ACE y dejar esto vacío: así los admins están en un sitio,
server.cfg, y no en dos.
La pestaña Servidor

Hace dos cosas.
Guardar como defecto del servidor. Deja el panel como quieres que se vea tu servidor, pulsa el botón, y eso es lo que encuentra cualquiera que entre por primera vez. No afecta a quien ya tenga los suyos ajustados.
Qué puede cambiar cada jugador. La lista de abajo, con un interruptor por ajuste. Lo que apagues queda bloqueado para todos, con el valor que acabas de guardar.
Dejarlo abierto permite a un jugador poner 8 notificaciones a la vez. No rompe nada, pero le tapa media pantalla y luego abre un ticket. Viene cerrado de fábrica.
Dónde se guardan los valores del servidor
Se decide solo al arrancar, mirando lo que hay:
| Hay | Se usa |
|---|---|
oxmysql arrancado |
La base de datos, tabla ob_notify_settings |
| No hay | defaults.json, dentro del propio recurso |
La tabla se crea sola la primera vez. Si ya había un defaults.json, se importa
solo: no hay que hacer nada.
Actualizar un recurso es copiar la carpeta encima, que es lo que hace todo el mundo. Con el archivo, eso se lleva por delante tus ajustes. En la base de datos sobreviven.
Si te quedas en el archivo, copia defaults.json fuera antes de sustituir la
carpeta.
Se puede forzar en config.lua:
Config.Panel.Storage = 'auto' -- 'auto' | 'db' | 'archivo'Se recomienda dejarlo en 'auto'.
Lo que el panel NO deja tocar
La posición del TextUI. No está en la lista y no se puede añadir.
No es un descuido. Un aviso de «pulsa [E]» que a cada jugador le sale en un
borde distinto deja de ser un sitio donde mirar y pasa a ser algo que hay que
buscar. Se fija una vez, por el dueño del servidor, en
Config.TextUI.Position.
Sí se puede probar desde el panel, para ver cómo queda la tecla con el estilo y el color elegidos.
Apagarlo o cambiarle el nombre
Config.Panel.Enabled = true
Config.Panel.Command = 'notify'Con Enabled = false el comando deja de existir. Todo lo demás sigue igual: las
notificaciones se configuran desde config.lua, como siempre.
Si algo falla
| Lo que ves | Causa | Solución |
|---|---|---|
| No aparece la pestaña Servidor | El ACE se lee solo al arrancar | Reinicia el servidor, no el recurso |
| Sigue sin aparecer | txAdmin carga otro server.cfg |
Usa Config.Panel.Admins y restart ob_notify |
attempt to index a nil value al reiniciar |
restart no relee fxmanifest.lua |
refresh y después restart ob_notify |
| «No se pudo guardar» | Ni base de datos ni permiso de escritura | Mira la consola del servidor: dice cuál de las dos |
| El comando no existe | Config.Panel.Enabled = false |
Ponlo en true |