Comandos#
Cada comando se escribe en el juego. La mayoría tiene una tecla predeterminada, que cada jugador puede reasignar en Settings → Key Bindings → FiveM; los nombres y las teclas se leen de config/main.lua.
Comando | Tecla | Quién | Descripción |
|---|---|---|---|
|
| Todos | Bloquea o desbloquea el coche más cercano al que tienes acceso. Tecla: |
|
| Todos | Enciende o apaga el motor del coche que conduces. Tecla: |
|
| Todos | Haz un puente al coche en el que estás sentado. Tecla: |
|
| Todos | Roba al conductor NPC al que apuntas. Tecla: |
|
| Todos | Abre el menú de transferencia de llaves. |
|
| Todos | El menú rápido, dentro de un vehículo. |
| — | Todos | Una ganzúa estándar en el coche bloqueado más cercano. El ítem sigue siendo necesario. |
| — | Todos | Elimina todas las llaves de coches que no son tuyos. |
| — | Todos | Lo mismo, desde un menú. |
|
| Con un rastreador | La lista de coches rastreados. |
| — | Trabajos permitidos | Escanea el coche más cercano. |
| — | Conductores de barcos | Baja o sube el ancla. |
| — | Administradores | Da la llave de tu coche actual a ese jugador, o al más cercano en un radio de 8 m. |
|
| Administradores | El gestor de vehículos de administración. |
Las teclas marcadas como (desactivada) solo se asignan cuando su ajuste
EnableKeyMapping(oEnableMenuKeyMapping) estrue; el comando funciona de cualquier forma. La teclaF7desaparece conConfig.KeyTransfer.EnableKeyMapping = false.
Exports de cliente#
Para tus propios scripts en el cliente — garajes, menús de trabajo, menús radiales, HUDs.
Llaves: GiveKeys, RemoveKeys, GetKey
-- Give the local player the key for a car
exports['qs-vehiclekeys']:GiveKeys(plate, model, bypassKeyCheck)
-- Take it away
exports['qs-vehiclekeys']:RemoveKeys(plate, model)
-- Does the local player have access? (a key, the master key or ownership)
local hasKey = exports['qs-vehiclekeys']:GetKey(plate, model)
-- The same three, for the car the player is sitting in
exports['qs-vehiclekeys']:GiveKeysAuto()
exports['qs-vehiclekeys']:RemoveKeysAuto()
local hasKey = exports['qs-vehiclekeys']:GetKeyAuto()bypassKeyCheck = true añade una llave aunque el jugador ya tenga una. GetKey espera la respuesta del servidor — llámalo desde un hilo, nunca desde un bucle por frame.
¿Puede este jugador conducirlo? CanUseVehicle
local canUse = exports['qs-vehiclekeys']:CanUseVehicle(vehicle)true para modelos exentos, coches a los que este jugador hizo un puente y coches a los que tiene acceso. La respuesta se guarda en caché durante cinco segundos.
Cierres: OpenCar, CloseCar, DoorLogic, GetDoorState
exports['qs-vehiclekeys']:OpenCar(vehicle) -- unlock
exports['qs-vehiclekeys']:CloseCar(vehicle) -- lock
-- Full control: flips the lock, with every effect optional
exports['qs-vehiclekeys']:DoorLogic(vehicle, skipAnimation, forcedDoorStatus, skipNotification, skipSound, skipFlickerLights)
-- The native lock status, or -1 when the car does not exist
local state = exports['qs-vehiclekeys']:GetDoorState(vehicle)DoorLogic trata forcedDoorStatus como el estado actual del coche y lo invierte: pasa 1 para bloquear, 2 para desbloquear, nil para alternar. El nuevo estado se sincroniza con todos los jugadores. Ninguno de estos comprueba la llave — restríngelos en tu propio script.
Motor: toggleEngine, isEngineRunning
exports['qs-vehiclekeys']:toggleEngine() -- toggle the car being driven
exports['qs-vehiclekeys']:toggleEngine(true, vehicle) -- force a given car on
exports['qs-vehiclekeys']:toggleEngine(false, vehicle) -- or off
local running = exports['qs-vehiclekeys']:isEngineRunning(vehicle) -- vehicle optionaltoggleEngine respeta Config.Engine.RequireKey y devuelve false cuando el jugador no puede arrancar ese coche.
Puente: disableHotwire
exports['qs-vehiclekeys']:disableHotwire(true) -- stop blocking cars for this player
exports['qs-vehiclekeys']:disableHotwire(false) -- back to normalPara carreras, eventos y trabajos que entregan sus propios coches. Dura hasta que se vuelve a cambiar o el jugador se reconecta.
Transferencia de llaves: RequestKeyTransfer
local ok, message = exports['qs-vehiclekeys']:RequestKeyTransfer({
targetId = 12, -- the receiver's server id
plate = 'ABC 123',
model = 'SULTAN',
})Reproduce la entrega y da una copia al receptor, con las mismas comprobaciones que el menú. message es una frase traducida que se muestra en cualquier caso.
Ganzúas, matrículas, rastreadores, diagnósticos y el ancla
exports['qs-vehiclekeys']:UseLockpick(false) -- true = advanced
exports['qs-vehiclekeys']:UsePlate('XYZ 789') -- the player needs that plate item
local format = exports['qs-vehiclekeys']:GetPlateFormat()
-- { PlateLetters = 3, PlateNumbers = 3, PlateUseSpace = true }
exports['qs-vehiclekeys']:UseGpsTrackerItem() -- fit a tracker to the nearest car
exports['qs-vehiclekeys']:OpenTrackerMenu() -- the list of tracked cars
exports['qs-vehiclekeys']:OpenDiagnostic() -- scan the nearest car
local anchored = exports['qs-vehiclekeys']:ToggleBoatAnchor()Cada uno hace las mismas comprobaciones que su ítem o comando — el ítem en el inventario, el trabajo, la distancia. UseRentalPapers está reservado y siempre devuelve false.
Compatibilidad con qb-vehiclekeys: HasKeys
local hasKeys = exports['qs-vehiclekeys']:HasKeys(vehicleOrPlate) -- nil = the current vehicleUn propietario sin llave recibe una. Consulta Reemplazar otros scripts de llaves.
Exports de ítems de ox_inventory
Registrados solo cuando ox_inventory es el inventario, para el campo client.export de los ítems:
'qs-vehiclekeys.useKey' -- vehiclekeys (standalone servers)
'qs-vehiclekeys.useLockpick' -- carlockpick (standalone servers)
'qs-vehiclekeys.useAdvancedLockpick' -- caradvancedlockpick (standalone servers)
'qs-vehiclekeys.usePlate' -- plate
'qs-vehiclekeys.useGps' -- vehiclegps
'qs-vehiclekeys.useTracker' -- vehicletrackerExports de servidor#
Cómo otro recurso entrega, retira y comprueba llaves — un garaje, un concesionario, una recompensa de atraco, un depósito de trabajo.
GiveServerKeys
local ok = exports['qs-vehiclekeys']:GiveServerKeys(source, plate, model, bypassKeyCheck)Devuelve true cuando se añadió una llave; false cuando la matrícula o el modelo están vacíos, el inventario la rechazó o — sin bypassKeyCheck — el jugador ya tiene una llave para esa matrícula. Alias: GiveKeysServer.
RemoveServerKeys
local ok = exports['qs-vehiclekeys']:RemoveServerKeys(source, plate, model)Elimina una llave con esa matrícula y ese modelo — o, si ningún modelo coincide, una con esa matrícula. Alias: RemoveKeysServer.
GetServerKey y HasVehicleAccess
local holdsKey = exports['qs-vehiclekeys']:GetServerKey(source, plate, model)
local canUse = exports['qs-vehiclekeys']:HasVehicleAccess(source, plate, model) -- model optionalGetServerKey es estricto: un ítem de llave con exactamente esta matrícula y este modelo. HasVehicleAccess es la comprobación que usa el propio script — la llave maestra, cualquier llave con esa matrícula o la propiedad mientras OwnerAccessWithoutKey esté activado. Alias del primero: GetKeyServer.
CleanUnusedKeys
local removed = exports['qs-vehiclekeys']:CleanUnusedKeys(source)Lo que hace /cleankeys, sin la notificación: elimina todas las llaves de coches que no son del jugador y devuelve cuántas se quitaron. Existe mientras Config.CleanKeys.Enabled esté activado.
Compatibilidad con qb-vehiclekeys: GiveKeys, RemoveKeys, HasKeys, SetLockState
exports['qs-vehiclekeys']:GiveKeys(source, vehicleOrPlate, skipNotification)
exports['qs-vehiclekeys']:RemoveKeys(source, vehicleOrPlate, skipNotification)
local ok = exports['qs-vehiclekeys']:HasKeys(source, vehicleOrPlate)
exports['qs-vehiclekeys']:SetLockState(vehicle, 'lock') -- or 'unlock'Los mismos argumentos que el script de llaves de Qbox, así que a las llamadas escritas para él solo hay que cambiarles el nombre del recurso.
Eventos#
Eventos de cliente que puedes lanzar#
Desde el servidor con TriggerClientEvent(name, source, ...), o en el cliente con TriggerEvent — útil para menús radiales:
Evento | Argumentos | Qué hace |
|---|---|---|
|
| Bloquea o desbloquea el coche con esa matrícula, o el más cercano. |
|
| Inicia una ganzúa. El ítem sigue siendo necesario. |
| — | Abre el menú de transferencia de llaves. |
| — | Coloca un rastreador en el coche más cercano. |
| — | Abre la lista de coches rastreados. |
| — | Escanea el coche más cercano. |
| — | Mide el tintado de las ventanas del coche más cercano. |
|
| Inicia un cambio de matrícula con ese ítem de matrícula. |
|
| Muestra una notificación de Vehicle Keys. |
Eventos y callbacks de servidor#
Nombre | Argumentos | Qué hace |
|---|---|---|
|
| Se lanza en el servidor tras un cambio de matrícula. Escúchalo con |
|
| Desde el cliente: establece el estado de bloqueo de un coche para todos y lo recuerda por matrícula. |
|
| Desde el cliente: da a otro jugador una llave que tiene el remitente. |
|
| Callback de ox_lib: el último estado de bloqueo establecido en esa matrícula, o |
Dar y quitar llaves también tiene eventos de servidor, pero usa los exports: mantienen sincronizado el cliente del jugador, así que una llave entregada se puede usar al instante.
Sobre matrículas y modelos#
Cada export limpia lo que recibe: a las matrículas y los modelos se les quitan los espacios y se pasan a mayúsculas, así que 'abc 123 ' y 'ABC 123' son la misma llave. El modelo de una llave es el nombre que GTA indica para el vehículo (GetDisplayNameFromVehicleModel), que en la mayoría de los coches es el nombre de spawn en mayúsculas. El acceso se decide por la matrícula, así que una llave hecha con el nombre de spawn sigue abriendo un coche cuyo nombre visible es distinto — solo GetServerKey exige también el modelo.



