Todos los ajustes están en shared/config.lua. Las pantallas, las apps incluidas, los sitios del navegador y los modelos de pantalla se definen en los archivos de data/.
El bloque os y data/browser.lua también se editan en vivo desde /screensadmin. Una vez guardados ahí, mandan los valores de la base de datos. El botón Fábrica de cada sección vuelve a los archivos.
ui
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
ui.accent | string | Configurable | Color de acento de Cuxial OS y del panel de staff, en hexadecimal (#rrggbb). |
dui
Cada pantalla en uso la dibuja un navegador del juego. Estas opciones controlan cuántos hay y su resolución.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
pixels | number | 921600 | Píxeles del navegador de cada pantalla (1280 × 720). Ancho y alto siguen el formato de la pantalla del modelo. |
minSide / maxSide | number | 320 / 2048 | Lado mínimo y máximo de esa resolución, en píxeles. |
maxLive | number | 2 | Navegadores encendidos a la vez. La pantalla que usas siempre tiene uno. Solo se encienden al usar una pantalla o cuando hay que mostrar su espejo. |
distance | number | 12.0 | Distancia a la que una pantalla prepara su prop y su opción de interacción. En reposo, el modelo muestra su propia imagen. |
releaseMs | number | 30000 | Espera antes de soltar el navegador de una pantalla que nadie usa ni mira. |
page | string | 'screen.html' | Página que carga cada navegador. No la cambies. |
readyMs | number | 5000 | Espera máxima a que cargue la página de una pantalla antes de mostrar un error. |
use
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
interactDistance | number | 1.8 | Distancia de la opción Usar pantalla. |
icon | string | 'fas fa-display' | Icono de esa opción. |
maxDistance | number | 2.5 | Distancia a la pantalla a la que se cierra la sesión. |
hidePed | boolean | true | Oculta tu personaje mientras usas una pantalla. |
overlay | boolean | true | true pinta la pantalla con sus colores reales, sin la luz ni la niebla del juego, mientras la usas. |
drawCursor | boolean | false | true hace que la pantalla pinte su propio cursor además del del juego. false muestra un solo cursor. |
exitKeys | string[] | { 'Escape' } | Teclas que cierran la pantalla, con nombres de KeyboardEvent.key. 'Backspace' solo cierra si no estás escribiendo. |
checkMs | number | 500 | Cada cuánto comprueba el cliente si has muerto o te has alejado. |
camera
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
fill | number | 0.76 | Parte del alto de la imagen que ocupa la pantalla. |
maxWidth | number | 0.9 | Ancho máximo de la pantalla sobre el ancho de la imagen. |
fov | number | 40.0 | Campo de visión de la cámara. |
easeMs | number | 600 | Duración de la transición de la cámara. |
Una pantalla puede cambiar fill, maxWidth y fov con su propio campo camera.
input
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
wheelStep | number | 120 | Paso de la rueda del ratón enviado a la pantalla. |
maxText | number | 4000 | Texto máximo por envío, pegar incluido. |
session
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
maxDistance | number | 4.0 | Distancia máxima comprobada en el servidor. Déjala algo mayor que use.maxDistance. |
checkMs | number | 2000 | Cada cuánto revisa el servidor las sesiones abiertas. |
os
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
name / build | string | 'Cuxial OS' / '1.0.0' | Nombre y versión que se ven en el arranque y en Ajustes › Acerca de. |
hostnamePrefix | string | 'CX' | Prefijo del nombre de equipo cuando una pantalla no tiene hostname (CX-<id>). |
clock24 | boolean | true | true reloj de 24 horas, false de 12 horas con AM/PM. |
boot | boolean | true | Animación de arranque cada vez que se usa una pantalla. |
sounds | boolean | true | Sonidos del sistema. Solo los oye quien usa la pantalla. |
defaults.theme | string | 'dark' | Tema inicial de cada personaje: 'dark' o 'light'. |
defaults.wallpaper | string | 'ember' | Fondo inicial, uno de wallpapers. |
defaults.accent | string | '' | Acento inicial. Vacío usa ui.accent. |
defaults.volume | number | 0.6 | Volumen inicial de los sonidos del sistema, de 0.0 a 1.0. |
accents | string[] | 8 colores | Colores de acento que se pueden elegir en Ajustes. |
wallpapers | string[] | ember, ember-light, aurora, dusk, waves, solid | Fondos que se pueden elegir. |
pinned | string[] | files, notes, browser | Apps ancladas en la barra de tareas, en orden. |
desktop | string[] | files, notes, calculator, browser, settings | Apps con icono en el escritorio, en orden. |
pinAttempts | number | 3 | Intentos de PIN fallidos antes del bloqueo. |
pinLockSeconds | number | 60 | Segundos de bloqueo. |
limits.files / limits.notes | number | 100 / 50 | Documentos y notas por personaje. |
limits.fileName / limits.noteTitle | number | 80 / 80 | Largo máximo del nombre de un documento y del título de una nota. |
limits.fileBody / limits.noteBody | number | 20000 / 20000 | Caracteres máximos de un documento y de una nota. |
apps
Límites de las apps que añaden otros recursos.
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
rateLimit / rateWindowMs | number | 20 / 2000 | Llamadas por jugador que se aceptan de todas las apps externas en esa ventana. |
maxPayload | number | 16384 | Tamaño máximo en bytes de lo que envía una app. |
maxResult | number | 262144 | Tamaño máximo en bytes de lo que responde su recurso. |
maxPush | number | 65536 | Tamaño máximo en bytes de los datos que el servidor envía a una app. |
latentAbove / latentBps | number | 8192 / 262144 | Los envíos de más de latentAbove bytes viajan como evento latente a latentBps bytes por segundo. |
readyMs | number | 8000 | Espera a que una app externa conecte antes de que su ventana muestre un error con Reintentar. |
mirror
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
defaultMode | string | 'private' | Modo de las pantallas que no indican uno: 'private' solo la ve quien la usa, 'mirror' los cercanos ven lo que hace. |
distance | number | 12.0 | Distancia a la pantalla para ver el espejo. Nunca más que dui.distance. |
slack | number | 3.0 | Margen extra que da el servidor al comprobar esa distancia. |
maxViewers | number | 8 | Espectadores por sesión. |
maxWatch | number | 2 | Pantallas que un jugador puede mirar a la vez. |
rateKBs / burstKB | number | 32 / 256 | Lo que puede subir quien usa la pantalla: KB por segundo sostenidos y ráfaga en KB. |
maxBatchKB | number | 256 | Tamaño máximo de un lote en KB. Nunca más que burstKB. |
latentAbove / latentKBs | number | 4096 / 256 | Los lotes de más de latentAbove bytes viajan como evento latente a latentKBs KB por segundo. |
batchMs | number[] | { 100, 250, 500 } | Intervalo entre lotes en ms: normal, tras un lote de más de 8 KB y tras uno de más de 32 KB. |
fullMinMs | number | 1500 | Separación mínima entre dos instantáneas completas. |
backlog | number | 64 | Lotes recientes que guarda el servidor para quien entra a mitad. |
resyncMs | number | 2500 | Espera ante un hueco en los lotes antes de pedir una instantánea nueva. |
bufferMs | number | 60 | Retraso de reproducción que absorbe los altibajos de la red. |
maxEvents | number | 20000 | Eventos reproducidos antes de pedir una instantánea nueva y liberar memoria. |
checkMs | number | 2000 | Cada cuánto revisa el servidor a los espectadores mientras haya alguno. |
Mientras una pantalla no tiene espectadores no se graba ni se envía nada.
logs
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
retentionDays | number | 30 | Días que se guardan las acciones del staff en cuxial_screens_log. 0 las guarda para siempre. |
admin
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
permission | string | 'admin' | Permiso de staff para /screensadmin y el monitor de prueba. |
staffAccess | boolean | true | El staff con ese permiso entra en cualquier pantalla y abre cualquier app, tenga el acceso que tenga. |
placeRange | number | 40.0 | Distancia máxima, en metros, a la que se puede mover una pantalla nueva con el gizmo. |
pickRadius | number | 3.0 | Radio, en metros, que usa Buscar en el mapa para encontrar una pantalla del mapa del modelo elegido. |
commands
| Opción | Por defecto | Qué hace |
|---|---|---|
test | { name = 'screentest', restricted = 'group.admin' } | Pone o quita el monitor de prueba. |
admin | { name = 'screensadmin' } | Panel de staff. |
mirror | { name = 'screensmirror', restricted = 'group.admin' } | Estado del espejo en la consola del servidor. |
registry | { name = 'screensreg', restricted = 'group.admin' } | Pantallas registradas en el servidor y en tu cliente. |
test
| Opción | Tipo | Por defecto | Qué hace |
|---|---|---|---|
models | table[] | Uno por formato | Monitor de prueba para cada formato de /screentest. El primero es el de por defecto. |
distance | number | 1.1 | Distancia delante del jugador a la que aparece. |
data/screens.lua
Pantallas fijas, definidas en código. Las que se colocan desde /screensadmin se guardan en la base de datos y no hace falta ponerlas aquí.
| Campo | Tipo | Qué hace |
|---|---|---|
id | string | Id único. |
model | string | Modelo con su cara de pantalla en data/models.lua. |
coords | vector3 | Origen del prop, o posición de la entidad del mapa. |
heading | number | Rumbo del prop cuando lo crea el script. |
prop | boolean | true hace que cada cliente cree el modelo en coords. Sin él, el script busca el modelo que ya está en el mapa. |
use | vector3 | Punto de interacción. Por defecto, el centro de la pantalla. |
label | string | Nombre de la pantalla. |
hostname | string | Nombre de equipo en el inicio de sesión y en Ajustes. |
access | table | { jobs = { [trabajo] = gradoMínimo }, boss = true }. Sin access la puede usar cualquiera. Con boss = true además tiene que ser jefe de ese trabajo. |
apps | string[] | Apps que muestra esta pantalla. Sin él, todas las que permita el acceso del jugador. |
tags | string[] | Etiquetas. Una app externa con tags aparece en las pantallas que compartan alguna. |
pin | string | PIN de inicio de sesión. Se queda en el servidor. Sin él, el inicio de sesión muestra un botón. |
mode | string | 'private' o 'mirror'. Por defecto mirror.defaultMode. |
mirrorOf | string | Id de otra pantalla. Esta no se puede usar: solo muestra el espejo de aquella. |
camera | table | { fill, maxWidth, fov } de esta pantalla. |
interact | boolean | false quita la opción de interacción. La pantalla solo la abre otro recurso. |
return {
{
id = 'pd_desk',
label = 'Recepción',
model = 'cuxial_screens_test',
coords = vec3(441.2, -978.9, 30.7),
heading = 180.0,
prop = true,
access = { jobs = { police = 0 } },
pin = '1234',
mode = 'mirror',
},
}data/apps.lua
Las apps incluidas: files, notes, calculator, browser y settings.
| Campo | Tipo | Qué hace |
|---|---|---|
id | string | Id de la app. |
label | string | Clave de traducción o texto. |
icon | string | Id del icono. |
size / minSize | table | { w, h } de la ventana al abrirse y su tamaño mínimo. |
access | table | { jobs = { [trabajo] = gradoMínimo } }. Sin él, todos. |
screens | string[] | Ids de pantalla donde aparece. Sin él, en todas. |
private | boolean | true muestra una tarjeta en lugar de su contenido a quien mira el espejo. |
data/browser.lua
Los sitios del navegador. Solo se pueden abrir las direcciones de esta lista. Los sitios incluidos son ejemplos para cambiar por los tuyos.
| Campo | Tipo | Qué hace |
|---|---|---|
address | string | Dirección que se escribe en la barra: en minúsculas, sin https:// ni www.. |
title | string | Título de la página. |
bookmark | boolean | true la añade a la barra de marcadores. |
kind | string | 'blocks' página hecha con bloques, o 'url' web externa en un marco. |
url | string | Solo con kind = 'url'. Tiene que empezar por https://. |
blocks | table[] | Contenido de una página 'blocks'. |
Bloques disponibles:
| Bloque | Campos |
|---|---|
h1, h2, p | text |
list | items (textos) |
notice | text, tone ('info', 'warn' u 'ok') |
links | items ({ label, href }) |
table | head, rows |
img | src (https://), alt |
{
address = 'noticias.ls',
title = 'Noticias de la ciudad',
bookmark = true,
kind = 'blocks',
blocks = {
{ t = 'h1', text = 'Noticias de la ciudad' },
{ t = 'notice', tone = 'warn', text = 'Obras en la autopista del Senora.' },
{ t = 'links', items = { { label = 'Ayuntamiento', href = 'ayuntamiento.ls' } } },
},
},data/models.lua
Los modelos que se pueden usar como pantalla y dónde está su pantalla. Los monitores incluidos ya están en la lista.
| Campo | Tipo | Qué hace |
|---|---|---|
txd | string | Diccionario de texturas del modelo (su propio nombre). |
texture | string | Textura de la cara de pantalla, que se sustituye por la imagen de la pantalla. |
corners | vector3[] | Las cuatro esquinas de la pantalla en espacio local del modelo: arriba izquierda, arriba derecha, abajo derecha, abajo izquierda. |
resolution | table | { w, h } opcional que fija la resolución de esta pantalla. |
Cada modelo de esta lista necesita una textura de pantalla con nombre propio. Dos pantallas con la misma textura muestran la misma imagen y solo una de ellas tiene navegador a la vez. El panel de staff las marca con Textura compartida.
