LV Persistent Vehicles Lite
Sistema completo de vehículos persistentes para FiveM: tus coches permanecen en el mundo, guardan estado en MySQL, incluyen concesionario cinematográfico, garajes configurables y sistema de llaves propio.
Introducción
LV Persistent Vehicles Lite es el recurso oficial de LV Scripts para servidores que necesitan persistencia real de vehículos sin depender de scripts externos pesados. Cada vehículo comprado o spawnado queda registrado en base de datos con posición, daños, combustible, colores y estado de bloqueo.
A diferencia de soluciones básicas, este script no elimina vehículos abandonados, restaura el mundo tras reinicios del servidor o del recurso, y optimiza el rendimiento con streaming por distancia compatible con OneSync.
lv-persistent-vehicles-lite ·
Producto tienda: lv-persistent-vehicles-lite ·
Autenticación: licencia por IP + clave
Características
💾 Persistencia MySQL
Posición, rotación, colores, daños, combustible, bloqueo y propiedades JSON en lv_pv_vehicles.
🏪 Concesionario
Showroom privado con routing buckets, personalización visual, test drive y compra con cuenta banco/efectivo.
🅿️ Garajes
Múltiples garajes públicos configurables en config/garages.lua. Guardar y sacar vehículos con zona E.
🔑 Sistema de llaves
Bloqueo con tecla U, animación, luces y sonido. Compartir o revocar llaves entre jugadores.
📡 Streaming OneSync
Spawn/despawn por radio configurable. Los datos permanecen en BD aunque la entidad no esté activa.
⚡ Guardado inteligente
Solo escribe en BD cuando hay cambios reales (flags dirty). Menos carga en MySQL.
Requisitos
| Componente | Obligatorio | Notas |
|---|---|---|
| FiveM + OneSync | Sí | Recomendado Infinity o Legacy con distancia ampliada |
| oxmysql | Sí | Conexión MySQL configurada en server.cfg |
| ox_lib | No | Mejora notificaciones en cliente |
| ESX / QBCore / Standalone | Uno | Auto-detección con Config.Framework.Type = 'auto' |
| Licencia LV Scripts | Sí | Generada en lvscripts.net vinculada a la IP del servidor |
Instalación
-
Copia el recurso en tu carpeta
resources/:resources/lv-persistent-vehicles-lite/ -
Base de datos — ejecuta el SQL (también se auto-instala al arrancar):
lv-persistent-vehicles-lite/sql/install.sql -
server.cfg — orden recomendado:
set mysql_connection_string "mysql://usuario:pass@localhost/nombre_bd?charset=utf8mb4" ensure oxmysql ensure lv-persistent-vehicles-lite -
Configura
config.luacon tu licencia, framework y ubicaciones de garaje/concesionario. - Reinicia el servidor y comprueba la consola: debe aparecer verificación de licencia correcta.
Licencia
La licencia se genera en tu panel de LV Scripts tras la compra. Debe estar vinculada a la IP pública de tu servidor FiveM.
Config.License = {
Key = 'LV-XXXX-XXXX-XXXX', -- Tu clave del panel
ApiBase = 'https://lvscripts.net',
RecheckInterval = 300000, -- Re-verificación cada 5 min (ms)
}
Puedes activar Config.General.Debug = true temporalmente para ver en consola la URL de verificación y la respuesta de la API.
Configuración
Persistencia
Config.Persistence = {
SaveInterval = 60, -- Guardado automático (segundos)
SaveOnExitVehicle = true,
SaveOnPlayerDrop = true,
SaveOnResourceStop = true,
FullVehicleState = true, -- Puertas, ventanas, ruedas, suciedad...
DeleteAbandoned = false, -- NUNCA eliminar coches abandonados
SpawnOnStart = true, -- Restaurar al iniciar servidor
UseRoutingBuckets = true, -- Showroom / test drive privados
}
Streaming (OneSync)
Config.Streaming = {
Enabled = true,
SpawnRadius = 350.0, -- Metros para mantener vehículo spawneado
DespawnRadius = 450.0, -- Metros para despawn (datos en BD)
TickMs = 2500,
}
Concesionario
Ubicación por defecto: PDM Legion Square. Personaliza en Config.Dealership:
Entrance— punto de entrada del jugadorShowroom— posición vehículo, cámara y jugador en vista previaTestDrive— duración, spawn y punto de retornoPaymentAccount—'bank'o'cash'(ESX/QBCore)UseAllGtaVehicles— catálogo completo GTA o filtrado
Garajes
Define garajes en config/garages.lua. Cada garaje incluye:
- Coordenadas de menú y zonas de guardado
- Puntos de spawn al sacar vehículo
- Blip y marcador en el suelo (colores en
Config.WorldMarkers)
Teclas
Config.Keys = {
LockToggle = 'U', -- Bloquear / desbloquear
Interact = 38, -- E — concesionario, garaje, guardar
}
Catálogo del concesionario
Edita config/gta_vehicles.lua o usa overrides en Config.VehicleOverrides / Config.VehicleBlacklist para controlar qué modelos aparecen a la venta.
Frameworks
Config.Framework = {
Type = 'auto', -- auto | esx | qbcore | standalone
AutoDetect = true,
}
| Framework | Detección | Cuenta de pago |
|---|---|---|
| QBCore | qb-core | Cash / Bank de QBCore |
| ESX | es_extended | Efectivo / Banco ESX |
| Standalone | Sin framework | Usa identificador license: |
Con auto, el orden de detección es: QBCore → ESX → Standalone.
qb-vehiclekeys, activa Config.KeySystem.UseQBVehicleKeys = true.
Por defecto el script usa su propio sistema de llaves LV.
Uso en juego
| Acción | Cómo hacerlo |
|---|---|
| Entrar al concesionario | Ve al blip morado (PDM) → pulsa E |
| Comprar vehículo | Selecciona modelo, personaliza colores, confirma compra |
| Test drive | Desde el showroom → botón Test Drive (60 s por defecto) |
| Abrir garaje | Blip de parking → E en el marcador |
| Guardar vehículo | Conduce a la zona verde del garaje → E |
| Bloquear / desbloquear | Cerca del vehículo → U |
Comportamiento tras reinicio
- Vehículos fuera del garaje se respawnean en su última posición guardada.
- Vehículos en garaje (
stored = 1) permanecen en BD sin entidad en el mundo. - Al parar el recurso, las entidades se eliminan del mundo pero los datos persisten en MySQL.
Comandos
| Comando | Descripción |
|---|---|
/darllave [id] | Comparte la llave de tu vehículo cercano con otro jugador (por ID de servidor) |
/quitarllave | Revoca llaves compartidas del vehículo actual |
Exports (servidor)
Integra con otros recursos usando los exports del servidor:
-- Datos completos por ID interno del vehículo
local data = exports['lv-persistent-vehicles-lite']:GetVehicleData(vehicleId)
-- Buscar por matrícula
local vehicle = exports['lv-persistent-vehicles-lite']:GetVehicleByPlate('ABC 123')
Los datos devueltos incluyen propietario, modelo, posición, estado de garaje, combustible, daños y propiedades JSON.
Base de datos
| Tabla | Contenido |
|---|---|
lv_pv_vehicles | Vehículos persistentes: owner, plate, model, coords, fuel, damage, stored, props JSON... |
lv_pv_keys | Llaves compartidas entre jugadores por vehículo |
El instalador SQL crea índices en owner y plate para consultas rápidas con muchos vehículos.
Solución de problemas
El script no arranca / licencia inválida
- Comprueba que la IP pública del servidor coincide con la de la licencia en lvscripts.net.
- Verifica
Config.License.Keysin espacios ni comillas extra. - Activa
Config.General.Debug = truey revisa la consola del servidor.
Los vehículos no persisten
- Confirma que oxmysql está conectado (
ensure oxmysqlantes del recurso). - Revisa que las tablas
lv_pv_vehiclesexisten en tu BD. - Comprueba
Config.Persistence.SpawnOnStart = true.
Concesionario o garaje no aparece
- Licencia debe estar activa (sin ella todo el gameplay se desactiva).
- Revisa coordenadas en
Config.Dealershipyconfig/garages.lua. - Comprueba
Config.Blips.EnabledyConfig.WorldMarkers.Enabled.
Rendimiento con muchos vehículos
- Ajusta
SpawnRadius/DespawnRadiussegún tu población y hardware. - Sube
SaveIntervalsi tienes miles de vehículos activos. - Usa garajes con frecuencia para mantener vehículos en
stored = 1.