> 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/nucleo/cuxial-garages/troubleshooting.md).

# Problemas frecuentes

Problemas habituales de Cuxial Garages, con su causa y su solución.

Los problemas más habituales tras instalar Cuxial Garages, con la causa y la solución de cada uno.

## Arranque

<details>

<summary>El recurso no arranca</summary>

**Causa.** Falta una dependencia o se inicia después de los garajes. Cuxial Garages necesita OneSync, `ox_lib`, `oxmysql` y `cuxial_bridge`.

**Solución.** Activa OneSync e inicia antes las dependencias:

{% code title="server.cfg" %}

```cfg
ensure ox_lib
ensure oxmysql
# tu framework aquí
ensure ox_inventory
ensure cuxial_bridge
ensure cuxial_garages
```

{% endcode %}

</details>

<details>

<summary>La consola nunca muestra la línea <code>[cuxial_garages][mysql]</code>, o da un error de SQL al arrancar</summary>

**Causa.** No se han podido crear las tablas. Hacen referencia a la tabla de vehículos de tu framework (`player_vehicles` en QBox y QBCore, `owned_vehicles` en ESX), así que esa tabla debe existir antes.

**Solución.** Comprueba que `oxmysql` conecta con la base de datos y que el framework está instalado con su propio SQL. Inicia `cuxial_garages` después del framework y de `cuxial_bridge`.

</details>

<details>

<summary>Al importar el SQL de ejemplo falla con «table doesn't exist»</summary>

**Causa.** Los archivos de `install/` se importaron antes del primer arranque. Las tablas las crea el recurso, no esos archivos.

**Solución.** Arranca el servidor una vez, importa los archivos y reinicia `cuxial_garages`.

</details>

<details>

<summary>La interfaz no se abre: sale el aviso pero no aparece nada</summary>

**Causa.** Falta la carpeta `web/build` o está incompleta, normalmente por una subida parcial.

**Solución.** Vuelve a copiar el recurso desde el paquete que descargaste, con la carpeta `web/build` completa, y reinícialo.

</details>

## Garajes

<details>

<summary>No hay marcadores ni blips en el mapa</summary>

**Causa.** Una instalación nueva no tiene garajes. Otras causas posibles: un garaje de trabajo solo se muestra a los jugadores con ese trabajo, y los blips se ocultan con `blips.garages = false`.

**Solución.** Crea garajes con `/garageadmin`, o importa los datos de ejemplo de `install/`. Revisa `blips` en `shared/config.lua`.

</details>

<details>

<summary>El marcador es una flecha azul pequeña en vez del icono del garaje</summary>

**Causa.** No se ha podido cargar la textura del marcador. Falta el archivo `stream/cuxial_garage.ytd`, o se cambió `marker.textureDict` en `data/zones.lua`.

**Solución.** Vuelve a copiar la carpeta `stream` desde el paquete, deja `marker.textureDict` en `'cuxial_garage'` y reinicia el recurso.

</details>

<details>

<summary>Un vehículo aparece en la lista pero no se puede sacar</summary>

**Causa.** Un vehículo se saca en el garaje donde está guardado. Desde otro garaje hay que transferirlo antes. Además, el punto de acceso debe admitir su categoría (coche, moto, aire o mar).

**Solución.** Usa la opción de transferir para traerlo al garaje en el que estás, o ve al garaje que indica el vehículo.

</details>

<details>

<summary>Tras venir de otro script de garajes, los vehículos salen como fuera o no aparecen</summary>

**Causa.** El script anterior usaba otros valores de estado, o guardó ids de garaje que ya no existen.

**Solución.** Pon `normalizeStatesOnStart = true` durante un arranque para que todo vehículo con estado desconocido pase a guardado, y vuelve a dejarlo en `false`. Pon en `fallbackGarage` el id de un garaje público para que reciba los vehículos cuyo garaje ya no existe.

</details>

<details>

<summary>«Ese garaje está lleno» aunque hay plazas libres</summary>

**Causa.** Con `capacity.enabled = true` el límite cuenta todos los vehículos que el jugador tiene en ese garaje, incluidos los que están fuera en ese momento.

**Solución.** Sube la capacidad del garaje en el panel de administración, o pon `capacity.enabled = false`.

</details>

<details>

<summary>El export de garaje de casa no hace nada</summary>

**Causa.** `externalGarages` está en `false`, o el jugador está a más de `interactDistance` de las `coords` que envía el recurso de propiedades.

**Solución.** Pon `externalGarages = true` en `shared/config.lua` y llama al export con la posición de la puerta del garaje, junto al jugador.

</details>

## Llaves

<details>

<summary>No llega ninguna llave al sacar un vehículo y el motor no arranca</summary>

**Causa.** El ítem de la llave no está registrado en el inventario, o su nombre no coincide con `item` en `data/keys.lua`. Sin llave, el motor se apaga.

**Solución.** Añade `vehiclekeys` a `ox_inventory/data/items.lua` como se indica en [Instalación](/scripts/es/nucleo/cuxial-garages/installation.md), y reinicia `ox_inventory` y `cuxial_garages`.

</details>

<details>

<summary>Las llaves se apilan y abren el vehículo equivocado</summary>

**Causa.** El ítem se añadió sin `stack = false`.

**Solución.** Pon `stack = false` en `vehiclekeys` y `rentalticket`.

</details>

<details>

<summary>Los jugadores reciben dos llaves, u otro script no consigue dar llaves</summary>

**Causa.** Hay otro recurso de llaves de vehículo en marcha. Cuxial Garages responde él mismo a las llamadas de `qbx_vehiclekeys`.

**Solución.** Quita el otro recurso de llaves de `server.cfg`. Si prefieres conservarlo, pon `enabled = false` en `data/keys.lua`.

</details>

<details>

<summary>La ganzúa no hace nada</summary>

**Causa.** El jugador está a más de 2,5 metros del vehículo, el vehículo no está cerrado, o el jugador ya tiene acceso a él.

**Solución.** Colócate junto a un vehículo cerrado. Comprueba que los nombres de los ítems coinciden con `lockpick.normal.item` y `lockpick.advanced.item`.

</details>

<details>

<summary>La policía nunca recibe avisos de robo</summary>

**Causa.** El recurso de `dispatch.resource` no está en marcha, o el aviso se descartó por `chance`, `nightChance` o `cooldown`. La noche se mide con el reloj real del servidor.

**Solución.** Inicia el recurso de avisos antes de probar y sube `chance` y `nightChance` a `1.0` mientras pruebas.

</details>

## Staff

<details>

<summary><code>/garageadmin</code> responde que no tienes permisos</summary>

**Causa.** Tu framework no te concede el permiso de `admin.permission`.

**Solución.** Date ese permiso en tu framework, o cambia `admin.permission` por uno que ya tengas.

</details>

<details>

<summary><code>/adminkey</code> o <code>/carwipe</code> se rechazan aunque el panel se abre</summary>

**Causa.** Estos comandos comprueban un grupo ACE, no el permiso del framework.

**Solución.** Añádete al grupo:

{% code title="server.cfg" %}

```cfg
add_principal identifier.license:xxxxxxxxxxxxxxxx group.admin
```

{% endcode %}

</details>

<details>

<summary>Una limpieza elimina vehículos de trabajo o de alquiler</summary>

**Causa.** Los vehículos de flota y los alquileres no tienen dueño en la base de datos, así que la limpieza los trata como abandonados salvo que haya un jugador dentro.

**Solución.** Añade a `protectedZones` de `data/carwipe.lua` los sitios donde se aparcan, o pon `deleteNPCVehicles = false`.

</details>

## Alquiler y depósito

<details>

<summary>El contrato de alquiler no llega al inventario</summary>

**Causa.** `rentalticket` no está en los ítems del inventario, o su nombre no coincide con `ticketItem` en `data/rental.lua`.

**Solución.** Añade el ítem como se indica en [Instalación](/scripts/es/nucleo/cuxial-garages/installation.md). Para alquilar sin ítem de contrato, pon `giveTicketItem = false`.

</details>

<details>

<summary>Usar el contrato no hace nada</summary>

**Causa.** El alquiler ha terminado o el vehículo ya se devolvió. El recibo solo se abre con contratos activos.

**Solución.** No hace falta ninguna. El ítem se puede tirar.

</details>

<details>

<summary>El selector de licencia sale desactivado, o las ofertas con licencia están bloqueadas para todos</summary>

**Causa.** El recurso de `license.resource` no está en marcha.

**Solución.** Inícialo antes que `cuxial_garages`, o quita la licencia de las ofertas en el panel de administración.

</details>

<details>

<summary>Los avisos de alquiler llegan como notificación en vez de por correo</summary>

**Causa.** `lb-phone` no está en marcha, o el jugador no lleva un teléfono equipado.

**Solución.** No hace falta ninguna: la notificación es la alternativa prevista.

</details>

<details>

<summary><code>/impound</code> responde que ese vehículo no se puede incautar</summary>

**Causa.** El trabajo del jugador no está en `jobs` de `data/impound.lua`, o el vehículo está a más de `maxDistance`.

**Solución.** Añade el trabajo a `jobs` y colócate junto al vehículo.

</details>

<details>

<summary>El dueño no puede retirar un vehículo incautado</summary>

**Causa.** El vehículo está retenido en otro depósito, o el agente bloqueó la retirada en el formulario de incautación.

**Solución.** Ve al depósito que indica el vehículo. Si se bloqueó la retirada, tiene que liberarlo un miembro de un trabajo con acceso a ese depósito.

</details>

## Idioma

<details>

<summary>La interfaz está en un idioma y las notificaciones en otro</summary>

**Causa.** Se definen en dos sitios. La interfaz usa `language` de `shared/config.lua`; las notificaciones, los avisos y la ayuda de los comandos usan la convar `ox:locale`.

**Solución.** Pon los dos en el mismo idioma:

{% code title="server.cfg" %}

```cfg
setr ox:locale "es"
```

{% endcode %}

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

```lua
language = 'es',
```

{% endcode %}

</details>


---

# 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/nucleo/cuxial-garages/troubleshooting.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.
