Cuxial Garages + Keys System + Carwipe
Garajes avanzados — llaves de vehículo, car wipe, depósito, financiamiento y panel admin.
Resumen
Sistema de garajes avanzado multi-framework (QBox · ESX · QBCore) — llaves de vehículo, car wipe, incautación/depósito, financiamiento y panel admin (NUI Svelte 5)
Garajes todo-en-uno multi-framework (QBox · ESX · QBCore) con NUI en Svelte 5: públicos, de trabajo, depósito (impound) y de casa. Incluye un sistema de llaves interno que provee qbx_vehiclekeys (al spawnear, qbx da la llave automáticamente), car wipe server-authoritative con zonas protegidas, incautación con RP de remolque, financiamiento (jg-dealerships), kilometraje real, cámara cinematográfica al sacar, transferencias entre jugadores y garajes, y un panel de administración in-game. Color de acento configurable que re-tematiza toda la interfaz. Escrow-safe.
Requisitos
Requiere cuxial_bridge. Descárgalo e inícialo antes que este script (ver la doc del bridge). El bridge es lo que le da compatibilidad con QBox, ESX y QBCore.
Compatible con QBox, ESX y QBCore. No necesitas listar tu framework como dependencia: el bridge lo detecta y lo conecta por ti.
Asegúrate de tener estos recursos instalados e iniciados antes que el script:
Las dependencias opcionales (ps-dispatch, jg-dealerships, jg-vehiclemileage, ox_target) añaden funciones extra pero no son obligatorias.
Instalación
- Instala cuxial_bridge si aún no lo tienes (ver su doc).
- Sube la carpeta cuxial_garages a resources/[cuxial]/.
- Instala las dependencias listadas arriba.
- Importa el archivo .sql incluido a tu base de datos (si el script lo trae).
- Añade los ensure a tu server.cfg respetando el orden.
- Reinicia el servidor por completo.
# Tu framework (QBox / ESX / QBCore) ya debe estar iniciado
ensure ox_lib
ensure oxmysql
# Núcleo de Cuxial — siempre antes que los scripts
ensure cuxial_bridge
ensure ox_inventory
# El script
ensure cuxial_garagesSi el script incluye un .sql, impórtalo una sola vez. Algunos scripts hacen migraciones automáticas — revisa el README incluido.
Configuración
Toda la configuración editable está en texto plano (la lógica va protegida por Cfx.re Escrow). Edita estos ficheros para ajustar el script a tu servidor:
- shared/config.lua
- data/
- locales/
Protegido por Cfx.re Escrow — Compatible con QBox · ESX · QBCore (vía cuxial_bridge) — shared/config.lua + data/*.lua + locales/ abiertos y editables — Provee qbx_vehiclekeys (desactiva otros vehiclekeys/car wipe) — Keybinds: L cerrar · G motor · H hotwire — Soporte por tickets en la web — Actualizaciones incluidas
Comandos
/garageadminAbre el panel de administración (admin)/impoundIncauta el vehículo cercano (jobs de impound, oficial)/carwipe [seg]Inicia la limpieza de vehículos abandonados (admin)/cancelwipeCancela la limpieza en curso (admin)/givekey [id]Da tu llave a un jugador cercano o por ID/adminkey [placa]Crea una llave de cualquier vehículo (admin)Características
- 4 tipos de garaje — público, de trabajo (job), depósito/impound y de casa (housing)
- 2 modos de UI — compacto (panel lateral) y normal (cuadrícula central)
- Marcadores custom (.ytd streameado) con billboard, rebote senoidal y textura por tipo de garaje
- Stats por vehículo — combustible, motor, carrocería y kilometraje real (jg-vehiclemileage)
- Cámara cinematográfica al previsualizar/sacar (modo compacto)
- Apodos y favoritos por vehículo, con categorías (coche/moto/aire/mar) y filtrado
- Transferencias — a otro jugador, a otro garaje o traer aquí; + recuperación de vehículos fuera
- Financiamiento — ver y pagar cuotas desde el garaje (jg-dealerships)
- Garajes de trabajo — flota por rango + menú de extras/liveries; se devuelven (no se guardan)
- Sistema de incautación — depósitos, retiro pagando, incautar (oficial), liberar (autoridad)
- Sistema de llaves interno — item de ox_inventory con metadata { plate, ssn }; provee qbx_vehiclekeys
- Cerrar/abrir (L), motor (G), carjack, hotwire (H), lockpick, llaves compartidas por trabajo y dispatch
- Entregar llave por ox_target — apunta a un jugador junto a tu coche para darle copia
- Car wipe server-authoritative — propios vuelven a su garaje, zonas protegidas y NUI de cuenta regresiva
- Car wipe automático programado con ox_lib cron (expresión configurable)
- Garajes de casa por export (efímeros) para integrar con cualquier sistema de housing
- Bajada de ocupantes con animación antes de guardar/devolver
- Panel de administración in-game — crear/editar garajes, capturar coords, buscar/dar/mover/incautar vehículos
- Escrow-safe — config/data/locales en texto plano (editables), lógica en bytecode
API — Exports
El recurso expone exports para integrarlo con otros scripts (llaves, depósito, limpieza de vehículos y garajes de casa). Se llaman como exports.cuxial_garages:Nombre(...).
| Export | Descripción |
|---|---|
HasKeys(src, plate) | ¿El jugador tiene la llave de esa matrícula? |
GiveKeys(src, plate) | Da la llave (spawns sin dueño); nunca la de un coche con dueño ajeno. |
RemoveKeys(src, plate) | Quita la llave del jugador. |
GetVehicleMdtInfo(plate) | Apodo e info de incautación por matrícula (para la MDT). |
StartCarWipe(segundos?) | Inicia la limpieza de vehículos con cuenta atrás. |
CancelCarWipe() | Cancela la limpieza en curso. |
IsWipeInProgress() | ¿Hay una limpieza en curso? |
| Export | Descripción |
|---|---|
HasKeys(plate) | ¿Tienes la llave de esa matrícula? |
GiveKeys(plate, entity?) | Pide la llave de un vehículo (spawns sin dueño). |
RemoveKeys(plate) | Quita tu llave. |
IsVehicleAccessible(veh) | ¿Puedes abrir/usar ese vehículo? (llave, sesión o trabajo). |
OpenGarage(id, opts) | Abre un garaje externo (housing) en unas coordenadas. |
StoreVehicle(id, opts?) | Guarda el vehículo actual en un garaje externo. |
OpenImpound() | Abre el formulario de incautación sobre el vehículo más cercano. |
-- Servidor: tras crear el vehículo
exports.cuxial_garages:GiveKeys(source, plate)
-- Cliente: pasando la entidad recién spawneada
exports.cuxial_garages:GiveKeys(plate, vehicleEntity)OpenGarage y StoreVehicle (integración de casas/housing) requieren externalGarages = true en shared/config.lua.
Rendimiento
Estado replicado por GlobalState; car wipe server-authoritative con game pool client-side