> filo_studios
Paid Resources🔑 filo_vehiclekeys

Compatibility

qb-vehiclekeys, qbx_vehiclekeys, tr_minigames and the open bridge.

qb-vehiclekeys & qbx_vehiclekeys

filo_vehiclekeys provides qb-vehiclekeys, qbx_vehiclekeys and filo_vehiclekey (v1), so garages and job scripts that use them keep working without changes.

-- qb-vehiclekeys
TriggerServerEvent('qb-vehiclekeys:server:AcquireVehicleKeys', plate)
TriggerEvent('vehiclekeys:client:SetOwner', plate)

-- qbx_vehiclekeys
lib.callback.await('qbx_vehiclekeys:server:giveKeys', false, netId)
exports.qbx_vehiclekeys:GiveKeys(source, vehicle)
exports.qbx_vehiclekeys:RemoveKeys(source, vehicle)
exports.qbx_vehiclekeys:SetLockState(vehicle, state)
exports.qbx_vehiclekeys:HasKeys(vehicle) -- client

tr_minigames

Set Config.Minigames = 'tr_minigames' to use tr_minigames' physical lockpick and hotwire. filo_vehiclekeys stays in charge of input and prompts; tr_minigames runs the minigame and decides the outcome.

  • Hotwire: the hotwire key (H) and prompt start tr_minigames' hotwire. The prompt only shows when you have no key and carry Config.TrMinigames.HotwireItem.
  • Lockpick: using the lockpick item starts tr_minigames' lockpick. A successful pick unlocks the car.
  • After a hotwire: the car is marked hotwired and runs without a key being handed out.
  • Access checks: tr_minigames asks filo_vehiclekeys through HasVehicleAccess. Keys, job keys and the police bypass all count.

The tr_core and tr_minigames folders in the download are pre-configured (keys = 'filo_vehiclekeys', their own prompts, target option and keybinds off). Ensure them after filo_vehiclekeys:

ensure filo_vehiclekeys
ensure tr_core
ensure tr_minigames

In this mode, difficulty, class tiers, alarms and lockpick/hotwire alerts come from tr_minigames' own config. Config.Blacklist is still checked before a hotwire starts, but copy the models into tr_minigames' excludeModels too. Keep Config.TrMinigames.HotwireItem equal to tr_minigames' Config.hotwire.item (default wire_strippers).

Editing the bridge

Everything that depends on another resource lives in bridge/ and stays open when escrowed.

FileWhat it contains
bridge/framework/client.lua / server.luaPlayer job, money, owned vehicles, usable items, vehicle names
bridge/inventory/client.lua / server.luaItem checks, adding/removing items, durability, inventory reads
bridge/minigames/client.luaHotwire, lockpick, search and wiring minigames (each returns true on pass)
bridge/minigames/server.luaSyncs results from tr_minigames into the key state
bridge/dispatch/client.luaps-dispatch, builtin and custom dispatch
bridge/target/client.luaLock/unlock target options on vehicles
bridge/compatibility/client.lua / server.luaqb/qbx shims, plus HasVehicleAccess and StartEngineWithoutKeys for tr_core

To support another framework or inventory, change the function bodies and keep the function names: the rest of the resource calls them by name.

Something broken after a third-party update? Open a ticket in the Discord.

On this page