Lo que falla con más frecuencia, qué significa realmente y qué hacer al respecto. La mayoría son de configuración, no fallos — el mensaje que ve el jugador suele nombrar el control que lo bloqueó. Búscalo aquí abajo antes de abrir un ticket.
Instalación y configuración#
La consola dice standalone, pero uso ESX, QBCore o Qbox
Tu framework se inicia después de Vehicle Keys, y la detección solo ve lo que ya está en ejecución. Mueve su ensure por encima de ensure qs-vehiclekeys y reinicia el servidor. Lo mismo vale para el inventario.
Usar un ítem de llave, matrícula o rastreador no hace nada
Normalmente es una de estas cuatro cosas:
El ítem se generó con un comando give y no lleva matrícula. Entrega llaves con
/givekeys, el panel de administración o los exports, y compra matrículas en la tienda de copias.Los nombres de los ítems en tu inventario son distintos de los de
config/main.lua.En ox_inventory, a la matrícula, el GPS y el rastreador les faltan sus líneas
client.export— consulta Ítems de inventario.El inventario predeterminado de ESX no guarda metadatos, así que ninguna llave puede funcionar en él.
La ventana de transferencia de llaves, de administración o de diagnóstico nunca aparece
La interfaz viene compilada en web/build/. Si esa carpeta falta o está copiada a medias, las ventanas quedan en blanco sin ningún error en el juego — vuelve a copiar el recurso entero. Comprueba también que la carpeta se siga llamando qs-vehiclekeys.
"Locale xx not found, fallback en.json"
Config.Locale indica un archivo que no está en locales/. Usa uno de los 41 códigos indicados en Integraciones.
La consola se llena de líneas [DEBUG]
Config.Debug viene activado. Ajústalo a false cuando el servidor esté en producción.
Un atajo de teclado no hace nada, o lo cambié en la configuración y no cambió nada
Otro recurso usa la misma tecla, o el jugador la reasignó. Settings → Key Bindings → FiveM muestra y cambia cada asignación de Vehicle Keys. Las teclas de Config.KeyMappings son solo predeterminadas — llegan a los jugadores que nunca han asignado ese comando.
Llaves y acceso#
"You don't have keys for this vehicle" en mi propio coche
Con OwnerAccessWithoutKey activado, los propietarios no necesitan llave — así que el coche no está en la tabla de vehículos con propietario de tu framework con esa matrícula, o el framework no se detectó. Con él desactivado, el jugador no tiene llave para esta matrícula: puede que otro script haya cambiado la matrícula. Recupera una llave con el empleado del banco, o toma una desde /vkadmin → Give Self Key.
Un coche de mi garaje o trabajo pide que le haga un puente
El script que lo generó no entregó la llave. Añade la llamada de una línea al export en su código de spawn — Integraciones la muestra — o, para un script escrito para qb-vehiclekeys, comprueba que lanza vehiclekeys:client:SetOwner o qb-vehiclekeys:client:AddKeys, y que cualquier llamada a exports['qb-vehiclekeys'] ahora diga qs-vehiclekeys.
La policía y los EMS tienen que hacer un puente a sus propios vehículos
O el script del trabajo da una llave al generar el vehículo, o añade los modelos a Config.NoLockVehicles para que nunca la necesiten.
Cualquiera puede conducir cualquier coche
Config.Hotwire.Enabled es false, o un script llamó a disableHotwire(true) para ese jugador. Con los puentes desactivados, ya no hace falta llave para conducir. Si solo son algunos modelos, están en un Whitelist o en NoLockVehicles — exentos a propósito.
La transferencia de llaves falla
Target player is too far away — colócate a menos de 8 m. Target already has this vehicle key — ya la tiene. Y sí, quien la da conserva su propia llave: una transferencia entrega una copia.
/givekeys dice "You do not have permission"
/givekeys es para administradores. Los jugadores comparten llaves mediante F7, el menú de transferencia de llaves.
/cleankeys eliminó llaves que quería
Elimina todas las llaves de coches que no son del jugador en la base de datos — incluidos los vehículos de trabajo y los coches de amigos. En un servidor standalone son todas las llaves. Desactívalo con Config.CleanKeys.Enabled = false.
Los inventarios se llenan de llaves duplicadas
Un garaje o trabajo da llaves con bypassKeyCheck = true cada vez que genera un coche. Pasa false y se omite al jugador que ya tiene la llave.
Puentes, ganzúas y robo de coches#
"Not enough police online"
Esa acción tiene RequirePolice activado y MinimumPolice por encima del número de jugadores conectados cuyo trabajo está en Config.PoliceJobs. Robar a conductores NPC pide dos por defecto. Comprueba los nombres de los trabajos, y que estén escritos como police = true — una lista simple no cuenta a nadie.
El aviso para hacer un puente nunca aparece
Los puentes están desactivados, el modelo está exento o el jugador ya tiene acceso — una llave, la llave maestra o la propiedad. Solo el asiento del conductor muestra el aviso.
"You need a weapon" o "Aim at an NPC driver first"
Robar llaves requiere un arma desenfundada y apuntando a un NPC que esté conduciendo — no a un pasajero, ni a un coche aparcado, ni a un jugador — dentro de MaxDistance.
"This vehicle driver has already been robbed"
Al conductor de cada coche solo se le puede robar una vez por sesión, para que un jugador no pueda farmear el mismo coche.
"You do not have a lockpick" — pero sí la tengo
El ítem de tu inventario tiene un nombre distinto de Config.Lockpick.Item o AdvancedItem. Ten en cuenta que /lockpick siempre usa la estándar — usa el ítem avanzado desde el inventario.
"This vehicle is not locked"
Las ganzúas solo funcionan en coches bloqueados. Prueba primero la puerta.
La ganzúa abrió las puertas, pero el coche no arranca
Es el comportamiento correcto: una ganzúa abre las puertas, nada más. Haz un puente al coche, o ajusta Config.Lockpick.GiveKeyOnSuccess = true.
Matrículas, rastreadores y la tienda de copias#
"Invalid plate item metadata"
El ítem de matrícula no tiene número — se dio con un comando. Compra matrículas en la tienda de copias, que numera cada una. En ox_inventory cualquier matrícula se numera automáticamente al crearse.
"This plate is already in use"
Un coche con propietario ya lleva esa matrícula. Usa otro ítem de matrícula.
"Vehicle database update failed"
Config.Plate.RequireOwnedVehicle está activado y el coche no está en la tabla de vehículos con propietario. Los cambios en coches sin propietario necesitan ese ajuste desactivado.
"Tracked vehicle not found in world"
El coche está guardado en un garaje, o demasiado lejos para que el juego del jugador lo haya cargado. El rastreador solo puede señalar coches que están fuera y dentro del alcance.
No hay opción para quitar un rastreador
Quitarlo requiere ox_target y Config.Tracker.UseTarget, y la opción solo aparece en los coches de la lista de rastreadores del propio jugador — los que colocó o de los que tiene llave.
"You do not have a tracker device item"
/tracker necesita el receptor, vehicletracker, en el inventario.
Tienda de copias: "You do not have enough money"
El pago sale de la cuenta de Config.CopyShop.Account — money en ESX, cash en QBCore — no del banco. En un servidor standalone se rechaza todo servicio con precio; ajusta los precios a 0.
Tienda de copias: "You do not have this key" o "No nearby vehicle found"
Ambos servicios de copia necesitan la llave original en tu inventario. Para la copia cercana, el coche también debe estar aparcado justo a tu lado — dentro de InteractDistance, 2 m por defecto.
"You are not authorized for diagnostic"
El trabajo del jugador no está en Config.Diagnostic.AllowedJobs (o AllowedTintJobs para el medidor de tintado). Una tabla vacía permite que todos lo usen.
Sonidos y el panel de administración#
No hay sonido del mando
interact-sound no está en ejecución, o carkeys.ogg no está en su carpeta de sonidos. Comprueba también Config.Sounds — consulta Integraciones.
/vkadmin dice "You do not have permission"
El jugador no es administrador según la regla de tu framework. Instalación → Admin Access indica quién cuenta en ESX, QBCore y standalone.
El panel de administración está vacío
En standalone no hay tabla de vehículos con propietario que leer. En ESX y QBCore, la lista viene de owned_vehicles o player_vehicles — si tu garaje guarda los coches en otro sitio, adapta las consultas en custom/<framework>/server.lua.
"Vehicle owner is not online"
Give Owner Key necesita al propietario en el servidor. Toma la llave con Give Self Key y entrégala después, o espera a que entre.
"Vehicle is not spawned in the world"
Go To Vehicle solo puede llegar a un coche que tu juego haya cargado. Los coches en un garaje, o muy lejos en el mapa, quedan fuera de su alcance.
¿Sigues atascado? Abre un ticket e incluye tu framework e inventario con sus versiones, las líneas
VEHICLEKEYS INFOde las consolas del servidor y F8, el mensaje exacto que ve el jugador y el bloque de configuración de esa función. Una captura de la consola F8 ayuda con cualquier cosa relacionada con la interfaz.



