> For the complete documentation index, see [llms.txt](https://realisticnode.gitbook.io/rnsetups/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://realisticnode.gitbook.io/rnsetups/es/rnkoth/reference/database.md).

# Base de datos (SQLite / MySQL)

SQLite o MySQL / MariaDB, las opciones y lo que guarda cada tabla.

La base de datos guarda las estadísticas de los jugadores, el historial de eventos, los premios de los jugadores que estaban desconectados y el buzón de premios.

## SQLite (por defecto)

```yaml
storage:
  type: sqlite
```

Un archivo, `plugins/rnKoth/data.db`, sin nada que configurar. Lo mejor para un solo servidor.

## MySQL / MariaDB

Para compartir las estadísticas entre varios servidores:

```yaml
storage:
  type: mysql
  mysql:
    host: localhost
    port: 3306
    database: minecraft
    username: root
    password: ''
    table-prefix: 'rnkoth_'
    pool-size: 4
    parameters: 'useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=utf8'
```

| Opción               | Por defecto                                                        | Qué hace                                                                                               |
| -------------------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
| `storage.type`       | `sqlite`                                                           | `sqlite` o `mysql` (`mariadb` también sirve).                                                          |
| `mysql.host`         | `localhost`                                                        | Dirección del servidor de la base de datos.                                                            |
| `mysql.port`         | `3306`                                                             | Puerto del servidor de la base de datos.                                                               |
| `mysql.database`     | `minecraft`                                                        | Nombre de la base de datos. Tiene que existir.                                                         |
| `mysql.username`     | `root`                                                             | Usuario.                                                                                               |
| `mysql.password`     | `''`                                                               | Contraseña.                                                                                            |
| `mysql.table-prefix` | `rnkoth_`                                                          | Inicio del nombre de cada tabla. Solo letras, números y `_`. También se usa para las tablas de SQLite. |
| `mysql.pool-size`    | `4`                                                                | Cuántas conexiones se mantienen abiertas (al menos 2).                                                 |
| `mysql.parameters`   | `useSSL=false&allowPublicKeyRetrieval=true&characterEncoding=utf8` | Opciones extra de la conexión.                                                                         |

{% hint style="warning" %}
Cambiar `storage` necesita **reiniciar el servidor**. Mira la consola: `Running on Paper with 3 KOTH(s), stats in MySQL.` Si la base de datos no se puede abrir, la consola dice `Could not open the MySQL database (...)`, y las estadísticas y el buzón de premios no funcionan hasta que se arregle.
{% endhint %}

MySQL empieza vacío: las estadísticas de SQLite no se copian.

## Tablas

Las tablas se crean solas. Con el prefijo por defecto:

| Tabla            | Qué guarda                                                                                                                                                                         |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `rnkoth_stats`   | Una fila por jugador: nombre, victorias, capturas, eventos jugados, tiempo dominando (segundos), bajas, bajas al rey y la fecha de la última victoria.                             |
| `rnkoth_history` | Una fila por evento terminado: KOTH, ganador, jugador ganador, fecha, duración y número de jugadores. La usa `/koth history`.                                                      |
| `rnkoth_pending` | Premios que esperan a un jugador: líneas de premio de jugadores que estaban desconectados y los objetos del buzón de premios (`/koth claim`). Una fila se borra cuando se entrega. |

## Qué cuenta para cada estadística

| Estadística      | Cuenta                                                                                                                                                                                                                              |
| ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Victorias        | +1 para cada jugador del bando ganador que estuvo en el KOTH.                                                                                                                                                                       |
| Capturas         | +1 por evento para un jugador que estaba dentro cuando su bando tomó el control del KOTH.                                                                                                                                           |
| Eventos jugados  | +1 por evento para cada jugador que participó.                                                                                                                                                                                      |
| Tiempo dominando | Segundos que el bando del jugador dominó el KOTH mientras el jugador estaba dentro.                                                                                                                                                 |
| Bajas            | Bajas durante un evento en las que el que mata o la víctima estaba dentro de la zona. Las bajas de un compañero (mismo bando) no cuentan. Un jugador que mata desde fuera y no está jugando suma la baja, pero no un evento jugado. |
| Bajas al rey     | Bajas de alguien que domina de otro bando (como mucho una vez por minuto para los mismos dos jugadores).                                                                                                                            |

Las estadísticas se guardan al final de cada evento. `/koth resetstats <jugador>` borra las estadísticas de un jugador, `/koth resetstats all confirm` borra las de todos. El historial y el buzón de premios se mantienen.

## Archivos fuera de la base de datos

| Archivo            | Qué guarda                                                                                                                                                                                         |
| ------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data/running.yml` | Los eventos en curso, para que sigan después de un reinicio, y la zona donde empieza el próximo evento de cada KOTH con varias zonas. Se guarda cada pocos segundos y cuando se apaga el servidor. |
| `data/players.yml` | Los jugadores que desactivaron el localizador y la barra lateral con `/koth hud`.                                                                                                                  |

Estos archivos son de cada servidor, también con MySQL.

## Copias de seguridad

* SQLite: detén el servidor y copia `data.db` (o copia `data.db`, `data.db-wal` y `data.db-shm` juntos).
* MySQL: usa las copias de seguridad de tu proveedor de base de datos.
