> 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/vehiculos/cuxial-chipeo/developers.md).

# Exports y eventos

API pública de Cuxial Chipeo: exports de servidor para instalar, desinstalar, averiar y consultar el equipo de sonido de un vehículo.

Instala o desinstala el equipo desde un script de taller, compruébalo desde un garaje o consulta qué está sonando en un coche. Todos los exports son de servidor e identifican el vehículo por su matrícula.

{% hint style="info" %}
A las matrículas se les quitan los espacios de los extremos y se pasan a mayúsculas antes de compararlas, así que `' abc 123 '` y `'ABC 123'` son el mismo vehículo.
{% endhint %}

## Exports de servidor

### IsRadioInstalled

Indica si un vehículo tiene el equipo instalado.

```lua
exports.cuxial_chipeo:IsRadioInstalled(plate)
```

| Parámetro | Tipo   | Descripción             |
| --------- | ------ | ----------------------- |
| `plate`   | string | Matrícula del vehículo. |

**Devuelve:** `boolean`.

```lua
if exports.cuxial_chipeo:IsRadioInstalled(plate) then
    print('Este vehículo tiene equipo de sonido')
end
```

### InstallRadio

Instala el equipo sin ítem, sin barra de progreso y sin comprobar el modelo del vehículo.

```lua
exports.cuxial_chipeo:InstallRadio(plate, installedBy)
```

| Parámetro     | Tipo          | Descripción                                                                                                                                         |
| ------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `plate`       | string        | Matrícula del vehículo.                                                                                                                             |
| `installedBy` | string \| nil | Identificador del personaje que lo instala. Ese personaje puede manejar la radio desde fuera y desinstalar el equipo, igual que el dueño. Opcional. |

**Devuelve:** `boolean`. `false` cuando la matrícula está vacía o el vehículo ya tiene equipo.

```lua
local ok = exports.cuxial_chipeo:InstallRadio(plate, citizenid)
```

### UninstallRadio

Desinstala el equipo, detiene lo que estuviera sonando y borra el estado de frito.

```lua
exports.cuxial_chipeo:UninstallRadio(plate)
```

| Parámetro | Tipo   | Descripción             |
| --------- | ------ | ----------------------- |
| `plate`   | string | Matrícula del vehículo. |

**Devuelve:** `boolean`. `false` cuando el vehículo no tenía equipo.

{% hint style="warning" %}
Haz que se expulse el USB antes de llamar a este export. No devuelve ningún ítem, y un USB que se quede dentro sigue ligado a esa matrícula.
{% endhint %}

```lua
exports.cuxial_chipeo:UninstallRadio(plate)
```

### SetDamaged

Fríe o repara el equipo. Un equipo frito queda limitado a `overheat.damagedMaxVolume` y `overheat.damagedMaxBass`.

```lua
exports.cuxial_chipeo:SetDamaged(plate, damaged)
```

| Parámetro | Tipo    | Descripción                               |
| --------- | ------- | ----------------------------------------- |
| `plate`   | string  | Matrícula del vehículo.                   |
| `damaged` | boolean | `true` fríe el equipo, `false` lo repara. |

**Devuelve:** `boolean`. `false` cuando el vehículo no tiene equipo.

```lua
-- Reparar gratis desde tu propio script de taller
exports.cuxial_chipeo:SetDamaged(plate, false)
```

### GetSession

Devuelve el estado de reproducción de un vehículo.

```lua
local session = exports.cuxial_chipeo:GetSession(plate)
```

| Parámetro | Tipo   | Descripción             |
| --------- | ------ | ----------------------- |
| `plate`   | string | Matrícula del vehículo. |

**Devuelve:** `table | nil`. `nil` cuando nadie ha abierto la radio de ese vehículo desde que apareció.

| Campo           | Tipo          | Descripción                                                                                              |
| --------------- | ------------- | -------------------------------------------------------------------------------------------------------- |
| `plate`         | string        | Matrícula.                                                                                               |
| `netId`         | number        | Id de red del vehículo.                                                                                  |
| `model`         | number        | Hash del modelo.                                                                                         |
| `url`           | string \| nil | Enlace que está sonando. `nil` si está parado.                                                           |
| `title`         | string \| nil | Nombre de la canción.                                                                                    |
| `playing`       | boolean       | `true` mientras suena, `false` en pausa o parado.                                                        |
| `offset`        | number        | Posición de la canción, en segundos, en el momento en que se tomó `startedAt`.                           |
| `startedAt`     | number        | Temporizador del servidor, en milisegundos, cuando empezó o se reanudó la reproducción. `0` si no suena. |
| `serverNow`     | number        | Temporizador del servidor, en milisegundos, cuando se construyó esta tabla.                              |
| `volume`        | number        | Volumen actual. `1.0` es el normal.                                                                      |
| `maxVolume`     | number        | Límite de volumen de este modelo.                                                                        |
| `bass`          | number        | Nivel de bajos.                                                                                          |
| `bassHz`        | number        | Corte del subwoofer, en Hz.                                                                              |
| `punch`         | number        | Nivel de pegada.                                                                                         |
| `eq`            | number\[]     | Ganancia de cada banda del ecualizador, en dB.                                                           |
| `distance`      | number        | Alcance actual del sonido, en metros.                                                                    |
| `maxDistance`   | number        | Límite de alcance de este modelo.                                                                        |
| `damaged`       | boolean       | `true` cuando el equipo está frito.                                                                      |
| `open`          | boolean       | `true` cuando había una puerta o ventana abierta la última vez que se cambió desde la radio.             |
| `windowsDown`   | number        | Ventanas bajadas, de 0 a 4.                                                                              |
| `windowsIntact` | number        | Ventanas sin romper, de 0 a 4.                                                                           |
| `heat`          | number        | Contador de sobrecalentamiento, de 0 a `overheat.seconds`.                                               |
| `pressure`      | number        | Contador de presión de cabina, de 0 a `pressure.seconds`.                                                |

```lua
local session = exports.cuxial_chipeo:GetSession(plate)
if session and session.playing then
    local position = session.offset + (session.serverNow - session.startedAt) / 1000
    print(('%s va por el segundo %.0f'):format(session.title, position))
end
```

## State bags

Los mismos datos se replican en la entidad del vehículo, así que un script de cliente puede leerlos sin callback. Trata los dos como de solo lectura.

| State bag    | Contenido                                                                                          |
| ------------ | -------------------------------------------------------------------------------------------------- |
| `chipeo`     | La tabla que devuelve `GetSession`. `nil` cuando el vehículo no tiene sesión.                      |
| `chipeoHeat` | `{ heat, max, pressure }`: contador de sobrecalentamiento, su límite y presión de cabina de 0 a 1. |

```lua
local session = Entity(vehicle).state.chipeo
if session and session.playing then
    print(session.title)
end
```

## Eventos

Cuxial Chipeo no tiene eventos públicos. Los eventos que registra son internos y pueden cambiar entre versiones.


---

# 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/vehiculos/cuxial-chipeo/developers.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.
