> 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-fuel/configuration.md).

# Configuración

Todas las opciones de Cuxial Fuel explicadas: precios, consumo, depósitos, surtidores, cargadores, pantallas, tótems y listas de datos.

El comportamiento está en `shared/config.lua`. Las listas de modelos y posiciones están en `data/`. Reinicia el recurso después de cualquier cambio.

## General

| Opción             | Tipo      | Por defecto          | Qué hace                                                                                                                                                        |
| ------------------ | --------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `debug`            | boolean   | `false`              | Imprime trazas en la consola. También se activa poniendo la convar `cuxial_fuel_debug` a `1`.                                                                   |
| `refuelTick`       | number    | `300`                | Milisegundos por cada 0,5 L en un surtidor de combustible. Menos es más rápido.                                                                                 |
| `ropeEnabled`      | boolean   | `true`               | Dibuja la manguera entre el surtidor y la boquilla. Solo la ve el jugador que lleva la boquilla. `false` quita la manguera; el límite de distancia se mantiene. |
| `ropeLength`       | number    | `7.5`                | Metros que se puede alejar la boquilla del surtidor cuando el surtidor no tiene un valor propio en `data/`.                                                     |
| `refundOnReturn`   | boolean   | `true`               | `true` reembolsa lo pagado y no servido al cerrar la compra. `false` no reembolsa nunca.                                                                        |
| `saveAllFuelTypes` | boolean   | `true`               | `true` guarda el tipo de combustible de todos los vehículos. `false` guarda solo los vehículos de jugador; el resto se recuerda hasta el siguiente reinicio.    |
| `fuelTypeCommand`  | string    | `'fuel_type'`        | Comando que dice el combustible del vehículo.                                                                                                                   |
| `wrongFuelDelay`   | number    | `5000`               | Milisegundos desde que se conduce con el combustible equivocado hasta que se avería el motor.                                                                   |
| `accounts`         | string\[] | `{ 'cash', 'bank' }` | Cuentas con las que se puede pagar.                                                                                                                             |
| `admin.permission` | string    | `'admin'`            | Permiso del framework, comprobado a través de Cuxial Bridge, que exige `/fuel_screen`.                                                                          |

Los reembolsos se redondean hacia abajo, y si sobra menos de 1 L no se reembolsa. La compra también se cierra, con su reembolso, cuando el jugador se desconecta o cambia de personaje.

## Interfaz · `ui`

| Opción            | Tipo         | Por defecto  | Qué hace                                                                                                   |
| ----------------- | ------------ | ------------ | ---------------------------------------------------------------------------------------------------------- |
| `accent`          | string (hex) | configurable | Color de acento de la interfaz.                                                                            |
| `currency.symbol` | string       | `'$'`        | Símbolo que va delante de cada importe.                                                                    |
| `currency.locale` | string       | `'en-US'`    | Formato de los números (separadores de miles y decimales), como etiqueta de idioma, por ejemplo `'es-ES'`. |

## Distancias · `distances`

Distancias máximas que comprueba el servidor, en metros.

| Opción     | Tipo   | Por defecto | Qué hace                                                                   |
| ---------- | ------ | ----------- | -------------------------------------------------------------------------- |
| `pump`     | number | `8.0`       | Del jugador al surtidor al abrirlo o al pagar.                             |
| `vehicle`  | number | `8.0`       | Del vehículo al surtidor.                                                  |
| `fuelType` | number | `6.0`       | Del jugador al vehículo cuando otro recurso cambia su tipo de combustible. |

## Descuentos por trabajo · `jobDiscounts`

Una tabla de `nombre del trabajo = porcentaje`. El descuento solo se aplica mientras el jugador está de servicio, y usa el nombre del trabajo, no su etiqueta. Los trabajos del archivo son ejemplos: cámbialos por los tuyos.

```lua
jobDiscounts = { police = 90, ambulance = 80 },
```

El bidón no tiene descuento, y los tótems enseñan siempre el precio sin descuento.

{% hint style="warning" %}
El descuento requiere un framework que informe de si el jugador está de servicio. En ESX, usa una versión con estado de servicio.
{% endhint %}

## Precios y stock por defecto · `defaults`

Los usan los surtidores que no pertenecen a ninguna gasolinera: todos cuando `cuxial_gasstations` no está arrancado, y las gasolineras sin dueño cuando sí lo está.

| Opción  | Tipo  | Por defecto                                                        | Qué hace                                                                |
| ------- | ----- | ------------------------------------------------------------------ | ----------------------------------------------------------------------- |
| `price` | table | `regular = 1.55`, `plus = 1.69`, `premium = 1.98`, `diesel = 1.49` | Precio por litro de cada combustible.                                   |
| `stock` | table | todos `true`                                                       | `true` = hay combustible, hasta 1000 L por compra. `false` = sin stock. |

{% hint style="info" %}
Una gasolinera sin precio fijado (precio `0`) también vende al precio de `defaults`.
{% endhint %}

## Bidón · `jerryCan`

| Opción          | Tipo    | Por defecto          | Qué hace                                                                                                                             |
| --------------- | ------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| `enabled`       | boolean | `true`               | `false` quita la venta en el surtidor, y los bidones que ya se tengan dejan de repostar.                                             |
| `price`         | number  | `300`                | Precio fijo, sin descuento por trabajo.                                                                                              |
| `requiredStock` | number  | `10`                 | Litros que se descuentan del stock de la gasolinera por cada bidón. El bidón se llena con el primer combustible que tenga ese stock. |
| `item`          | string  | `'weapon_petrolcan'` | Ítem del inventario que recibe el jugador.                                                                                           |
| `liters`        | number  | `100`                | Litros que lleva el bidón.                                                                                                           |

El bidón solo se vende en surtidores de combustible, no en cargadores. Para usarlo, el jugador se lo equipa y elige **Repostar** en el tapón de un vehículo cercano.

## Derrames · `spill`

Arrancar el motor mientras se reposta corta el chorro y deja la boquilla enchufada. Si después el vehículo se mueve, la boquilla salta y la compra se cierra.

| Opción          | Tipo    | Por defecto | Qué hace                                                                             |
| --------------- | ------- | ----------- | ------------------------------------------------------------------------------------ |
| `enabled`       | boolean | `true`      | `false` desactiva la regla: arrancar el motor solo para el repostaje.                |
| `moveThreshold` | number  | `1.5`       | Metros que tiene que moverse el vehículo para que salte la boquilla.                 |
| `speed`         | number  | `2.0`       | Velocidad en m/s que también la hace saltar.                                         |
| `customerPays`  | boolean | `true`      | `true` = los litros derramados no se reembolsan. `false` = se reembolsan igualmente. |

El charco y los litros perdidos los decide `cuxial_gasstations`. Sin él no se derrama nada y los litros no usados se reembolsan como siempre.

## Combustibles · `fuelTypes`

| Opción     | Tipo      | Por defecto                            | Qué hace                                                                                                                    |
| ---------- | --------- | -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| `petrol`   | string\[] | `regular`, `plus`, `premium`, `diesel` | Combustibles que se venden en los surtidores.                                                                               |
| `electric` | string\[] | `electric_fast`, `electric_normal`     | Modos de carga que se venden en los cargadores. Cada uno va con una entrada de `chargers.types` (`electric_fast` = `fast`). |

Un vehículo sin tipo de combustible guardado toma el de su modelo: `diesel` si está en `data/diesel.lua`, eléctrico si es un vehículo eléctrico, y `regular` en otro caso.

## Consumo · `consumption`

Litros por segundo = `usage` según las RPM × `perClass` × `perFuel` ÷ 10.

| Opción     | Tipo  | Por defecto                                                                      | Qué hace                                                                  |
| ---------- | ----- | -------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
| `perFuel`  | table | `regular = 1.0`, `plus = 0.9`, `premium = 0.8`, `diesel = 1.0`, `electric = 1.0` | Multiplicador según el combustible del depósito. Menos es más económico.  |
| `perClass` | table | de `0.0` (bicicletas) a `4.0` (aviones)                                          | Multiplicador por clase de vehículo de GTA, de `0` a `22`.                |
| `usage`    | table | de `0.0` a `1.3`                                                                 | Valor base para cada tramo de RPM, de `0.0` a `1.0`. `0.2` es el ralentí. |

Cuando el depósito llega a cero el motor se apaga. Un vehículo que nunca ha tenido nivel recibe uno al azar entre el 20 % y el 80 % la primera vez que alguien lo conduce.

## Depósito · `tank`

Depósito en litros. El script mira primero el modelo, después la clase, y usa 100 L cuando no hay ninguno de los dos.

| Opción       | Tipo  | Por defecto                           | Qué hace                                                                                             |
| ------------ | ----- | ------------------------------------- | ---------------------------------------------------------------------------------------------------- |
| `perClass`   | table | de `0` (bicicletas) a `500` (aviones) | Litros por clase de vehículo de GTA. `0` = sin depósito: el vehículo no consume y no puede repostar. |
| `perVehicle` | table | `panto = 40`                          | Litros por nombre de modelo. Manda sobre la clase.                                                   |

```lua
perVehicle = { panto = 40, sultan = 65 },
```

## Boquilla · `nozzle`

| Opción         | Tipo    | Por defecto                   | Qué hace                                                        |
| -------------- | ------- | ----------------------------- | --------------------------------------------------------------- |
| `gas`          | string  | `'prop_cs_fuel_nozle'`        | Modelo de la boquilla de combustible.                           |
| `electric`     | string  | `'prop_eletricpistol'`        | Modelo del conector de carga.                                   |
| `bone`         | number  | `18905`                       | Hueso del personaje al que se une la boquilla (mano izquierda). |
| `handOffset`   | vector3 | `vec3(0.13, 0.04, 0.01)`      | Posición en la mano.                                            |
| `handRotation` | vector3 | `vec3(-42.0, -115.0, -63.42)` | Rotación en la mano.                                            |
| `ropeOffset`   | vector3 | `vec3(0.0, -0.033, -0.195)`   | Punto de la boquilla donde se ata la manguera.                  |

## Surtidores · `pumps`

| Opción       | Tipo     | Por defecto                            | Qué hace                                                                                                          |
| ------------ | -------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `ropeOffset` | table    | `forward = 0.0, right = 0.0, up = 2.1` | Punto del surtidor del que sale la manguera, para los modelos que no tienen el suyo.                              |
| `props`      | table\[] | siete modelos de surtidor              | Modelos que funcionan como surtidor. Cada entrada tiene `prop`, un `ropeOffset` opcional y un `enabled` opcional. |

Cualquier objeto del mapa con uno de estos modelos pasa a ser un surtidor que funciona. `enabled = false` en una entrada apaga ese modelo: sin interacción y sin pantalla.

```lua
props = {
    { prop = 'prop_gas_pump_1a', ropeOffset = { forward = 0.0, right = 0.0, up = 2.3 } },
    { prop = 'mi_surtidor', ropeOffset = { forward = 0.0, right = 0.0, up = 1.9 } },
},
```

## Cargadores · `chargers`

| Opción         | Tipo      | Por defecto                                          | Qué hace                                                                           |
| -------------- | --------- | ---------------------------------------------------- | ---------------------------------------------------------------------------------- |
| `enabled`      | boolean   | `true`                                               | `false` quita los cargadores. Los vehículos eléctricos dejan entonces de consumir. |
| `props`        | table\[]  | `prop_electric_01`                                   | Modelos que funcionan como cargador, con los mismos campos que `pumps.props`.      |
| `types.fast`   | table     | `price = 2.5, time = 0.8, stock = true, power = 220` | Carga rápida.                                                                      |
| `types.normal` | table     | `price = 1.8, time = 2, stock = true, power = 100`   | Carga normal.                                                                      |
| `vehicles`     | string\[] | lista de modelos                                     | Modelos que se tratan como eléctricos.                                             |

Campos de cada tipo de carga:

| Campo   | Qué hace                                                                      |
| ------- | ----------------------------------------------------------------------------- |
| `price` | Precio por unidad de batería. La batería usa la misma escala que el depósito. |
| `time`  | Segundos por unidad cargada.                                                  |
| `stock` | `true` = disponible en los surtidores que no pertenecen a ninguna gasolinera. |
| `power` | kW que enseña la pantalla.                                                    |

{% hint style="info" %}
Con la build 3258 del juego o posterior, el cliente reconoce además los eléctricos por sí mismo. El servidor solo conoce la lista `vehicles`, así que añade ahí tus modelos eléctricos propios.
{% endhint %}

## Blips · `blips`

Los blips vienen apagados porque `cuxial_gasstations` ya pone los suyos.

| Opción        | Tipo       | Por defecto          | Qué hace                                                 |
| ------------- | ---------- | -------------------- | -------------------------------------------------------- |
| `enabled`     | boolean    | `false`              | Pone un blip en cada posición de `coords`.               |
| `nearestOnly` | boolean    | `false`              | Enseña solo el más cercano, recalculado cada 5 segundos. |
| `sprite`      | number     | `361`                | Icono del blip.                                          |
| `color`       | number     | `41`                 | Color del blip.                                          |
| `scale`       | number     | `0.6`                | Tamaño del blip.                                         |
| `coords`      | vector3\[] | lista de gasolineras | Posiciones de los blips.                                 |

## Pantalla del surtidor · `screen`

La pantalla se dibuja sobre el modelo del surtidor. Enseña los precios en reposo y la compra cuando un jugador usa el surtidor.

| Opción            | Tipo    | Por defecto                  | Qué hace                                                                                                                                                                                                                            |
| ----------------- | ------- | ---------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`         | boolean | `true`                       | `false` apaga todas las pantallas de surtidor; los surtidores abren un panel normal en la pantalla del jugador.                                                                                                                     |
| `renderDistance`  | number  | `20.0`                       | Metros dentro de los que se dibuja la pantalla de reposo.                                                                                                                                                                           |
| `idle`            | table   | `900 × 400`                  | Resolución de la pantalla de reposo en surtidores de combustible.                                                                                                                                                                   |
| `session`         | table   | `1080 × 480`                 | Resolución de la pantalla de compra en surtidores de combustible.                                                                                                                                                                   |
| `idleEv`          | table   | `800 × 450`                  | Resolución de la pantalla de reposo en cargadores.                                                                                                                                                                                  |
| `sessionEv`       | table   | `1024 × 576`                 | Resolución de la pantalla de compra en cargadores.                                                                                                                                                                                  |
| `textures`        | table   | `gas`, `electric`, `vintage` | Nombres de textura que la pantalla sustituye en los modelos de `cuxial_gas_assets`. No los cambies.                                                                                                                                 |
| `variants`        | table   | `vintage`                    | Diseños alternativos de pantalla con su propia resolución. Un modelo elige uno con `variant`. El surtidor clásico (`vintage`) muestra la marca de la clave de locale `UI_VINTAGE_BRAND`, `FUEL` por defecto; edítala en `locales/`. |
| `camera.distance` | number  | `1.2`                        | Metros de la cámara a la pantalla durante la compra.                                                                                                                                                                                |
| `camera.margin`   | number  | `1.25`                       | Margen alrededor de la pantalla en el encuadre. `1.0` = la pantalla llena la vista.                                                                                                                                                 |
| `camera.fov`      | number  | automático                   | Opcional. Fija el campo de visión en lugar del calculado.                                                                                                                                                                           |
| `models`          | table   | ocho modelos                 | Dónde va la pantalla en cada modelo de surtidor o cargador.                                                                                                                                                                         |

### Posición de la pantalla por modelo · `screen.models`

Cada clave es un nombre de modelo. Un surtidor cuyo modelo no tiene entrada aquí abre el panel normal.

| Campo             | Qué hace                                                                                                          |
| ----------------- | ----------------------------------------------------------------------------------------------------------------- |
| `offset`          | Centro de la pantalla desde el origen del modelo: x derecha, y delante, z arriba.                                 |
| `yaw`             | Rotación en grados.                                                                                               |
| `width`, `height` | Tamaño en metros.                                                                                                 |
| `sides`           | `1` o `2`. Con `2` la pantalla se dibuja también en la cara opuesta.                                              |
| `mesh`, `txdName` | Vienen puestos en los modelos de `cuxial_gas_assets`, que llevan la pantalla en el propio modelo. No los cambies. |
| `variant`         | Diseño de `screen.variants`.                                                                                      |

Para colocar la pantalla en un modelo tuyo, ponte a su lado, ejecuta `/fuel_screen` y pega en `screen.models` la línea que imprime. Consulta [Comandos y permisos](/scripts/es/vehiculos/cuxial-fuel/commands.md).

## Tótems de precios · `screen.totems` y `screen.totemBrands`

Los tótems son los carteles grandes de precios de las gasolineras. Enseñan precio por litro, stock, cargadores y, con `cuxial_gasstations`, el nombre de la gasolinera y sus promociones.

| Opción                  | Tipo     | Por defecto                | Qué hace                                                                                            |
| ----------------------- | -------- | -------------------------- | --------------------------------------------------------------------------------------------------- |
| `totems.enabled`        | boolean  | `true`                     | `false` apaga todos los tótems.                                                                     |
| `totems.mode`           | string   | `'prop'`                   | Cómo se pone la pantalla en el cartel. Deja `'prop'`.                                               |
| `totems.propDistance`   | number   | `300.0`                    | Metros dentro de los que existe la pantalla de un tótem.                                            |
| `totems.renderDistance` | number   | `140.0`                    | Metros dentro de los que la pantalla está encendida.                                                |
| `totems.switchMargin`   | number   | `15.0`                     | Metros que otro tótem tiene que estar más cerca para que cambie el encendido.                       |
| `totems.refreshMs`      | number   | `60000`                    | Milisegundos entre refrescos. Los cambios de precio, stock o promociones llegan sin esperar.        |
| `totems.maxDuis`        | number   | `3`                        | Pantallas de tótem encendidas a la vez, las más cercanas.                                           |
| `totems.models`         | table    | lista de modelos de cartel | Modelos de cartel y las pantallas que lleva cada uno. Ligados a los modelos de `cuxial_gas_assets`. |
| `totems.placements`     | table\[] | lista de carteles          | Una entrada por cartel del mapa: modelo, posición, gasolinera y líneas de servicios.                |

Campos de una colocación que puede interesarte editar:

| Campo      | Qué hace                                                                                          |
| ---------- | ------------------------------------------------------------------------------------------------- |
| `station`  | Id de la gasolinera en `cuxial_gasstations`. Sin él, la gasolinera se busca a partir de `coords`. |
| `services` | Líneas fijas de la pantalla grande: `'24h'`, `'shop'`, `'lotto'`, `'wash'`.                       |

`totemBrands` define el aspecto de cada marca de gasolinera: `name`, imágenes `banner` y `disc`, `mascot`, orden de los `fuels`, `slogans` (prefijo de las claves de idioma) y `colors` (`primary`, `secondary`, `digits`, `text`).

{% hint style="warning" %}
`totems.models` y `totems.placements` se corresponden con los modelos de cartel de `cuxial_gas_assets`. Cambia precios, marcas y servicios con libertad; no toques posiciones ni nombres de modelo salvo que sustituyas los modelos.
{% endhint %}

## Sonidos · `audio`

| Opción           | Tipo    | Por defecto   | Qué hace                                                                      |
| ---------------- | ------- | ------------- | ----------------------------------------------------------------------------- |
| `enabled`        | boolean | `true`        | `false` apaga los sonidos nativos.                                            |
| `remote`         | boolean | `true`        | Deja oír el chorro de otros jugadores que repostan.                           |
| `remoteDistance` | number  | `25.0`        | Metros dentro de los que se oye ese chorro.                                   |
| `screenBeep`     | boolean | `true`        | Pitido al pulsar la pantalla del surtidor.                                    |
| `debugCommand`   | string  | `'fuelaudio'` | Comando que reproduce todos los sonidos. Solo se registra con `debug` activo. |

## Gráfica de consumo · `chart`

| Opción     | Tipo    | Por defecto    | Qué hace                                                                                                       |
| ---------- | ------- | -------------- | -------------------------------------------------------------------------------------------------------------- |
| `enabled`  | boolean | `true`         | `false` quita la gráfica, su comando y su tecla.                                                               |
| `command`  | string  | `'fuel_chart'` | Comando que abre y cierra la gráfica.                                                                          |
| `focusKey` | string  | `'F3'`         | Tecla por defecto que da el cursor a la gráfica. Cada jugador puede cambiarla en los ajustes de teclas de GTA. |
| `position` | string  | `'left'`       | Lado de la pantalla: `'left'` o `'right'`.                                                                     |

## Listas de datos · `data/`

| Archivo              | Qué contiene                                                                                                                                                                                                   |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `data/pumps.lua`     | Surtidores extra que crea el script donde el mapa no tiene. Cada entrada tiene `prop`, `coords` (`vec4`, el cuarto valor es el rumbo) y un `ropeLength` opcional.                                              |
| `data/chargers.lua`  | Cargadores eléctricos, con los mismos campos.                                                                                                                                                                  |
| `data/diesel.lua`    | Modelos que van con diésel. Cualquier otro combustible les avería el motor, y el diésel se lo avería a los demás.                                                                                              |
| `data/blacklist.lua` | Modelos que no consumen y no pueden repostar.                                                                                                                                                                  |
| `data/vehicles.lua`  | Punto de repostaje por modelo: `distance` para interactuar, `nozzleOffset` desde el tapón (`forward`, `right`, `up`) y un `nozzleRotation` opcional. `default` vale para los modelos que no están en la lista. |

Las posiciones de `data/pumps.lua` y `data/chargers.lua` son ejemplos para el mapa por defecto. Cámbialas por las tuyas.

{% code title="data/pumps.lua" %}

```lua
{ prop = 'prop_gas_pump_1b', coords = vec4(442.2, -977.17, 42.69, 270.3), ropeLength = 14.0 },
```

{% endcode %}

## Cambios habituales

### Cambiar los precios

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

```lua
defaults = {
    price = { regular = 2.10, plus = 2.35, premium = 2.80, diesel = 1.95 },
    stock = { regular = true, plus = true, premium = true, diesel = true },
},
```

{% endcode %}

### Añadir un modelo eléctrico

Añade su nombre de modelo al final de `chargers.vehicles`, sin quitar los que ya hay:

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

```lua
vehicles = {
    'voltic', 'voltic2', 'neon', -- ...el resto de la lista
    'mi_coche_electrico',
},
```

{% endcode %}

### Hacer que un modelo vaya con diésel

Añade su nombre de modelo a `data/diesel.lua`:

{% code title="data/diesel.lua" %}

```lua
'mi_camion',
```

{% endcode %}

### Repostar más rápido

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

```lua
refuelTick = 150,
```

{% 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/vehiculos/cuxial-fuel/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.
