> For the complete documentation index, see [llms.txt](https://docs.cuxial.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cuxial.com/scripts/es/ocio/cuxial-domino/configuration.md).

# Configuración

Todas las opciones de Cuxial Domino explicadas: mesas, reglas de la partida, apuestas, cámaras y colocación de las fichas.

Todo lo que puedes ajustar está en `shared/config.lua`. Reinicia el recurso después de cualquier cambio.

Cada mesa lleva además sus propios ajustes, elegidos al crearla en la tablet de administración: estilo, número de jugadores, tipo de juego, nombre y límites de apuesta. Esos no están en el archivo de configuración.

## Interfaz · `ui`

| Opción   | Tipo         | Por defecto  | Qué hace                        |
| -------- | ------------ | ------------ | ------------------------------- |
| `accent` | string (hex) | configurable | Color de acento de la interfaz. |

## Staff · `admin`

| Opción    | Tipo   | Por defecto      | Qué hace                                                                                                                 |
| --------- | ------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------ |
| `command` | string | `'domino_admin'` | Nombre del comando que abre la tablet de administración. El permiso que se comprueba es siempre `command.<este nombre>`. |
| `ace`     | string | `'group.admin'`  | Principal que recibe el permiso automáticamente al arrancar el recurso. Usa el nombre completo del principal.            |

En [Comandos y permisos](/scripts/es/ocio/cuxial-domino/commands.md) se explica cómo se comprueba el permiso.

## Mesas · `table`

| Opción               | Tipo          | Por defecto  | Qué hace                                                                                                                     |
| -------------------- | ------------- | ------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| `joinDistance`       | number        | `2.0`        | Metros a una silla desde los que aparece la interacción «Sentarse». Se mide a la silla, no al centro de la mesa.             |
| `deleteDistance`     | number        | `6.0`        | Metros al centro de la mesa dentro de los cuales el staff puede borrarla desde la tablet.                                    |
| `spawnForward`       | number        | `1.7`        | Metros por delante del miembro del staff a los que se coloca una mesa nueva.                                                 |
| `minDistanceBetween` | number        | `8.0`        | Metros mínimos entre dos mesas. Una mesa nueva más cerca se rechaza.                                                         |
| `sitUiDelayMs`       | number        | `3500`       | Milisegundos entre sentarse y que se abra el menú de la mesa. Coincide con la animación de sentarse.                         |
| `surfaceOffset`      | number \| nil | `nil`        | Altura de la superficie de juego sobre el origen del modelo de la mesa, en metros. `nil` la mide automáticamente.            |
| `models`             | table         | tres estilos | Modelos de mesa por estilo: `luxury`, `wood` y `classic`. Cada estilo lista cuatro modelos, en orden: 1, 2, 3 y 4 jugadores. |

{% hint style="warning" %}
Un modelo de mesa de sustitución tiene que estar en el streaming del servidor y llevar los huesos `Chair_Base_01` a `Chair_Base_04`. Sin ellos los jugadores no pueden sentarse.
{% endhint %}

## Partida · `match`

| Opción              | Tipo   | Por defecto | Qué hace                                                                                   |
| ------------------- | ------ | ----------- | ------------------------------------------------------------------------------------------ |
| `targetPoints`      | number | `101`       | Puntos con los que se gana una partida clásica.                                            |
| `fivesTargetPoints` | number | `150`       | Puntos con los que se gana una partida de All Fives.                                       |
| `roundHoldMs`       | number | `3500`      | Milisegundos que se muestra el resumen de la ronda antes de que la siguiente empiece sola. |
| `finishHoldMs`      | number | `3500`      | Milisegundos que se muestra al ganador de la partida antes de volver al menú de la mesa.   |

### Bonos · `match.dominican`

Puntos extra para las partidas clásicas. Nunca se aplican en All Fives.

| Opción        | Tipo    | Por defecto | Qué hace                                                                                                                                                                     |
| ------------- | ------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`     | boolean | `true`      | `true` activa los tres bonos de abajo y `winnerOpens`. `false` los desactiva todos.                                                                                          |
| `roundPass`   | number  | `25`        | Puntos cuando juegas, todos los demás pasan y el turno vuelve a ti. `0` quita este bono.                                                                                     |
| `openingPass` | number  | `25`        | Puntos cuando abres la ronda y el siguiente jugador no puede jugar. `0` quita este bono.                                                                                     |
| `capicua`     | number  | `25`        | Puntos cuando cierras con una ficha que valía en los dos extremos y no es doble. `0` quita este bono.                                                                        |
| `winnerOpens` | boolean | `true`      | `true`: el ganador de una ronda abre siempre la siguiente. `false`: también abre el ganador, salvo tras una ronda bloqueada, que la abre el último jugador que colocó ficha. |

## Turno · `turn`

| Opción       | Tipo   | Por defecto | Qué hace                                                                                                                     |
| ------------ | ------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `seconds`    | number | `20`        | Segundos por turno. Al agotarse se juega una ficha por el jugador; si no tiene jugada, roba hasta que alguna encaje, o pasa. |
| `afkStrikes` | number | `3`         | Turnos agotados seguidos antes de sacar al jugador de la mesa. Jugar o robar reinicia la cuenta.                             |

## IA · `ai`

La IA solo juega en las mesas de 1 jugador.

| Opción       | Tipo   | Por defecto | Qué hace                                                 |
| ------------ | ------ | ----------- | -------------------------------------------------------- |
| `thinkMinMs` | number | `3000`      | Tiempo mínimo que tarda la IA en mover, en milisegundos. |
| `thinkMaxMs` | number | `7000`      | Tiempo máximo que tarda la IA en mover, en milisegundos. |

## Apuestas · `betting`

| Opción          | Tipo    | Por defecto | Qué hace                                                                                                                                                 |
| --------------- | ------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`       | boolean | `true`      | `true`: toda partida en una mesa de 2 o más jugadores se juega con apuesta. `false`: las partidas empiezan con una confirmación de «listo» y sin dinero. |
| `account`       | string  | `'bank'`    | Cuenta de la que se cobra y a la que se paga la apuesta. `'cash'` usa el efectivo; cualquier otro valor usa el banco.                                    |
| `min`           | number  | `100`       | Apuesta más baja permitida en cualquier mesa.                                                                                                            |
| `max`           | number  | `100000`    | Apuesta más alta permitida en cualquier mesa.                                                                                                            |
| `acceptSeconds` | number  | `15`        | Segundos que tienen los demás jugadores para aceptar una apuesta propuesta. Quien no acepta a tiempo sale de la mesa.                                    |

Cómo funciona una apuesta:

1. Con todos los asientos ocupados, un jugador escribe una cantidad y empieza. Ese jugador es el anfitrión de la apuesta.
2. Los demás aceptan dentro de `acceptSeconds`.
3. A todos se les cobra la misma cantidad. El ganador de la partida se lleva todo el bote; en las mesas por parejas cada ganador recibe la mitad.
4. El bote se devuelve a cada jugador cuando se borra la mesa, cuando un jugador se va y quedan dos o más, o cuando el servidor se reinicia con una partida en curso. Si solo queda un jugador, ese jugador gana el bote.

{% hint style="info" %}
Los límites de apuesta de una mesa solo pueden estrechar los globales. Una mesa con un mínimo por debajo de `min` o un máximo por encima de `max` usa el valor global. Las mesas de 1 jugador nunca tienen apuesta.
{% endhint %}

## Mano del jugador · `hand`

Dónde se colocan tus fichas sobre la mesa, delante de tu asiento. Calibra estos valores dentro del juego con `/domino_tune` (ver [Comandos y permisos](/scripts/es/ocio/cuxial-domino/commands.md)).

| Opción       | Tipo    | Por defecto | Qué hace                                                                                           |
| ------------ | ------- | ----------- | -------------------------------------------------------------------------------------------------- |
| `distance`   | number  | `0.68`      | Metros desde el centro de la mesa hacia tu silla.                                                  |
| `spacing`    | number  | `0.04`      | Metros entre fichas.                                                                               |
| `flat`       | boolean | `true`      | `true` tumba las fichas boca arriba. `false` las pone de pie mirándote.                            |
| `lift`       | number  | `0.22`      | Altura de las fichas de pie.                                                                       |
| `pitch`      | number  | `90.0`      | Inclinación (pitch) de las fichas de pie, en grados.                                               |
| `roll`       | number  | `-90.0`     | Giro lateral (roll) de las fichas de pie, en grados.                                               |
| `yawOffset`  | number  | `0.0`       | Giro extra de las fichas de pie. Cámbialo si la cara no te mira.                                   |
| `flatLift`   | number  | `0.066`     | Altura de las fichas tumbadas.                                                                     |
| `flatPitch`  | number  | `-45.0`     | Inclinación de las fichas tumbadas, en grados. Un valor positivo levanta el lado lejano.           |
| `flatRoll`   | number  | `-5.0`      | Giro lateral (roll) de las fichas tumbadas, en grados.                                             |
| `flatYaw`    | number  | `90.0`      | Giro de las fichas tumbadas, en grados.                                                            |
| `hoverLift`  | number  | `-0.02`     | Cambio de altura de la ficha que está bajo el cursor.                                              |
| `pickRadius` | number  | `0.04`      | Lo cerca que debe estar el cursor para coger una ficha, como fracción de la altura de la pantalla. |

## Sonidos · `sfx`

| Opción        | Tipo      | Por defecto  | Qué hace                                                                          |
| ------------- | --------- | ------------ | --------------------------------------------------------------------------------- |
| `enabled`     | boolean   | `true`       | `true` reproduce un sonido cada vez que se coloca una ficha. `false` lo silencia. |
| `sounds`      | string\[] | tres sonidos | Nombres de los sonidos, elegidos al azar sin repetir el último.                   |
| `maxDistance` | number    | `10.0`       | Metros desde la mesa a los que se oye el sonido.                                  |
| `baseVolume`  | number    | `0.55`       | Volumen junto a la mesa. Se atenúa con la distancia.                              |

## Cámara · `camera`

| Opción         | Tipo   | Por defecto | Qué hace                                                                                                                                                   |
| -------------- | ------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `default`      | string | `'board'`   | Cámara al sentarse. `'board'` = desde arriba, `'first'` = primera persona, `'third'` = tercera persona. Los jugadores pueden cambiarla durante la partida. |
| `switchMs`     | number | `550`       | Milisegundos de la transición entre cámaras.                                                                                                               |
| `zoomSpeed`    | number | `9.0`       | Velocidad del zoom. Más alto es más rápido.                                                                                                                |
| `firstZoomFov` | number | `55.0`      | Campo de visión en primera persona mientras se mantiene el botón derecho del ratón.                                                                        |

### Vista del tablero · `camera.board`

La cámara desde arriba se desplaza hacia tu asiento, para que tu lado de la mesa quede en la parte baja de la pantalla.

| Opción         | Tipo   | Por defecto | Qué hace                                                                     |
| -------------- | ------ | ----------- | ---------------------------------------------------------------------------- |
| `height`       | number | `1.5`       | Metros por encima de la mesa.                                                |
| `back`         | number | `1.35`      | Metros hacia tu silla.                                                       |
| `fov`          | number | `48.0`      | Campo de visión. Súbelo si la mesa no cabe entera; bájalo para acercar.      |
| `lookZ`        | number | `-0.02`     | Altura del punto al que mira la cámara, respecto a la superficie de la mesa. |
| `zoomFov`      | number | `26.0`      | Campo de visión mientras se mantiene el botón derecho del ratón.             |
| `transitionMs` | number | `600`       | Milisegundos de la transición cuando la cámara se coloca por primera vez.    |

## Disposición del tablero · `layout`

Geometría de la línea de fichas sobre la mesa.

| Opción         | Tipo    | Por defecto | Qué hace                                                                                                                 |
| -------------- | ------- | ----------- | ------------------------------------------------------------------------------------------------------------------------ |
| `tileStep`     | number  | `0.055`     | Metros entre los centros de dos fichas normales.                                                                         |
| `doubleStep`   | number  | `0.025`     | Metros extra que ocupa un doble, que va cruzado.                                                                         |
| `zOffset`      | number  | `0.02`      | Altura de las fichas sobre la superficie.                                                                                |
| `branchGap`    | number  | `0.006`     | Separación entre ramas.                                                                                                  |
| `segmentMin`   | number  | `2`         | Fichas seguidas antes de que la línea pueda girar.                                                                       |
| `segmentMax`   | number  | `5`         | Máximo de fichas seguidas en un tramo recto.                                                                             |
| `maxTurns`     | number  | `1`         | Giros permitidos por rama.                                                                                               |
| `cornerFactor` | number  | `0.25`      | Factor de separación aplicado en las esquinas.                                                                           |
| `propInverted` | boolean | `false`     | Ponlo en `true` si las fichas normales muestran los puntos al revés. Se giran 180°.                                      |
| `snapRadius`   | number  | `0.14`      | Metros desde un extremo abierto dentro de los cuales se acepta una ficha arrastrada. Fuera de ahí la ficha no se suelta. |
| `dragLift`     | number  | `0.03`      | Altura de una ficha mientras se arrastra.                                                                                |

## Tablero plano · `dui`

Dibuja el tablero como una textura plana sobre la mesa en lugar de fichas 3D.

| Opción           | Tipo    | Por defecto | Qué hace                                                                                        |
| ---------------- | ------- | ----------- | ----------------------------------------------------------------------------------------------- |
| `enabled`        | boolean | `false`     | `true` dibuja el tablero como textura y apaga las fichas 3D del tablero. `false` usa fichas 3D. |
| `size`           | number  | `1.3`       | Lado del cuadrado, en metros.                                                                   |
| `resolution`     | number  | `1024`      | Resolución de la textura, en píxeles.                                                           |
| `zOffset`        | number  | `0.012`     | Altura sobre la superficie.                                                                     |
| `rotation`       | number  | `0.0`       | Grados que se gira la textura si no queda alineada con la mesa.                                 |
| `mirror`         | boolean | `false`     | `true` refleja la textura.                                                                      |
| `renderDistance` | number  | `18.0`      | Metros dentro de los cuales se dibuja la textura.                                               |

Calíbralo dentro del juego con `/domino_dui` (ver [Comandos y permisos](/scripts/es/ocio/cuxial-domino/commands.md)).

## Cambios habituales

### Jugar sin dinero

{% code title="shared/config.lua" %}

```lua
betting = {
    enabled = false,
    -- ...
},
```

{% endcode %}

### Apostar con efectivo y límites más bajos

{% code title="shared/config.lua" %}

```lua
betting = {
    enabled = true,
    account = "cash",
    min = 50,
    max = 5000,
    acceptSeconds = 15,
},
```

{% endcode %}

### Partidas más cortas y sin bonos

{% code title="shared/config.lua" %}

```lua
match = {
    targetPoints = 50,
    fivesTargetPoints = 100,
    dominican = {
        enabled = false,
        -- ...
    },
    -- ...
},
```

{% endcode %}

### Que otro grupo pueda abrir la tablet

{% code title="shared/config.lua" %}

```lua
admin = {
    ace = "group.moderator",
    command = "domino_admin",
},
```

{% endcode %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.cuxial.com/scripts/es/ocio/cuxial-domino/configuration.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
