Changelog
Released version and their changes.
#Changes
- Impounds
- Moved the majority of the impound configuration to the UI, instead of the Lua config. Some values are still in the Lua since they should not be changed during runtime or by a random admin.
- Fixed released vehicles not being transferrable from impound lots.
- Persistent vehicles, impounds and tracking.
- Added a stale-vehicle redundency which now lets us transfer owned vehicles into temporary vehicles if they exist, but was removed from the database. Scripts such as chopshop could cause an inconsistency in the cache and the real data.
- Garage vehicles and UI.
- Favorite vehicles are prioritized and listed first when fetching.
- Vehicle title status layout has been adjusted for better readability.
- Adjust the vehicle locking stage so doors automatically close when the vehicle is locked.
- Added additional fake plate input validation and reject invalid characters. The design now also hard-limits your choices of input.
#Files Affected
- client/*
- server/*
- shared/unlocked/config.lua
- shared/unlocked/types.lua
- nui/*
- modules/*
- fxmanifest.lua
#Config Changes
- Replace
Config.Settings.impoundinshared/unlocked/config.lua
2026-06-27 23:19 CET
#Changes
- Vehicle spawns are now aligned by the back wheels, this means that longer vehicles will instead overshoot forwards instead of using the centered position which could hit a wall behind them.
- Vehicle parking now sample 9 positions based on the vehicle model dimensions to see if you can park. This helps you be able to park with various-sized vehicles instead of relying on a centered position.
- Fixed an issue with border rounding in the garage menu accordions.
- Added a more robust flow for retrying engine starts if the vehicle simply doesn't start on the first attempt for any reason.
- Adjusted the flow for vehicle impounding to be more robust, to combat a rare issue where a vehicle would appear available, but couldn't be impounded.
- Impound
- Vehicles are now sorted by impound date in the impound management menu.
- Added more options for server owners to allow/block certain impound behaviour.
- Admins can now add a specific impound zone/ped/marker/prop to interact with in order to impound vehicles.
- Cleaned up some design for the impound menu showcasing the details for the impound.
- Fixed parking meter not being released when an impounded vehicle is removed.
- Tightened the button spacing in the garage editor.
- Added hold-to-confirm for various functionality, meaning you can't accidentally hit the UI button.
- Improved vehicle menu performance when displaying many vehicles.
- Added label-only mode for locksmith which removes the key-purchasing functionality if enabled.
- Extended qb-vehiclekeys compatibility to support key labels and trunk access.
- Fixed deformation details in garage vehicle view flipping incorrectly near scroll edges.
- More robust release of interior vehicles, in case of any issues which would fail the entire loading phase, and never unload the vehicles afterwards.
- Added some developer tools to benchmark garage actions and what decides if a vehicle was disabled.
#Files Affected
- client/*
- server/*
- shared/unlocked/config.lua
- shared/unlocked/functions.lua
- shared/unlocked/inspect_broken.lua
- shared/unlocked/types.lua
- nui/*
- external_support/keys/main.lua
- external_support/keys/qb-vehiclekeys.lua
- modules/*
- fxmanifest.lua
#Config Changes
shared/unlocked/config.lua- Added
Config.Settings.blipCategories.impounderPositions=171 - Added
Config.Settings.debug.garageMenuBenchmark=false - Added
Config.Settings.locksmith.allowKeySales=true - Added the full
Config.Settings.impoundtable. Copy the entire table from the new config.
- Added
#Changes
- You can now see a "Parking..." whilst the vehicle is parking after you pressed the button in the garage menu to park.
- Interiors now show a quick-enter prompt for parking vehicles, this has always been available, but never shown quickly.
- This hint is exposed as a personal setting, so the server owner or each player can decide if they want to show it.
- Public interiors.
- It now validate that the allowed vehicle types are compatible with the linked interior and public interior, rejecting incompatible types during registration.
- Added a global config option (publicInteriors.enabled) to quickly disable all public garage interiors.
- An optional keybind to stop the vehicle engine has been added (Config.Settings.vehicleEngine.stopKey, disabled by default).
- Garage vehicles and UI.
- Added garage menu parking flow options: garageMenuOnly (false, 'hide', or 'notify') to force parking through the menu and garageMenuParkingRange to set a distance limit for menu-based parking.
- The vehicle actions menu has been split: key fob and vehicle list toggles are now independent settings (Config.Settings.vehicleActions.ui.keyFob and vehicleList).
- Impound details are now displayed next to the VIN label in the vehicle menu.
- Keys, robbery and vehicle access.
- Player controls are locked during hotwire attempts to prevent movement or action interference.
- Opening a keyfob outside of the configured allowed range will just give you a notification instead of opening it. Previously, you could open it but the actions were blocked.
- The garage list now correctly filters vehicles when the 'other garages' filter is applied. Previously, it had issues with parking meter vehicles and impounded vehicles.
- Fixed a timing issue that could possibly have the vehicle not set as stored correctly in rare cases.
- Parking meters.
- Parking meters now support despawning parked vehicles via DV command or equivalent.
- Impounds
- Moved massive chunks of impound-related functionality to dedicated functions that are now exported, instead of one-off callbacks.
- When an impounder removes an impound from a vehicle, that vehicle is now properly retrievable for free at the impound lot.
#Files Affected
- client/*
- server/*
- shared/*
- nui/*
- modules/*
- fxmanifest.lua
#Config Changes
shared/unlocked/config.lua- Added
Config.Settings.garageInterior.publicInteriors.enabled=true - Added
Config.Settings.storeVehicle.garageMenuOnly=false - Added
Config.Settings.storeVehicle.garageMenuParkingRange=-1 - Added
Config.Settings.storeVehicle.maxParkingSpeedKmh=20.0 - Removed
Config.Settings.vehicleActions.ui.enabled(wastrue) - Added
Config.Settings.vehicleActions.ui.keyFob=true - Added
Config.Settings.vehicleActions.ui.vehicleList=true - Added
Config.Settings.vehicleEngine.stopKey="O" - Added
Config.Settings.vehicleEngine.stopKeyEnabled=false - Added one new
Config.Settings.personalSettings.settingsentries:showQuickEnterInteriorPrompt
- Keep the existing
nearbyGaragesLimitentries after the new settings rather than replacing them by index.
- Added
#Changes
- Moved all default keybinds into the config, so that they can be adjusted easily.
- Added proper translations for all keybind labels in the settings.
- Added 3 missing translations in the additional locales.
#Files Affected
- client/*
- shared/unlocked/config.lua
- modules/keys/client/search_vehicle.lua
- modules/plate/client/plate_change.lua
- fxmanifest.lua
#Config Changes
shared/unlocked/config.lua- Added
Config.Settings.garageInterior.openGarage="G" - Added
Config.Settings.garageInterior.quickEnterModifier="LSHIFT" - Added
Config.Settings.npcVehicles.tempKeys.searchKey="U" - Added
Config.Settings.plateChange.openKey="E" - Added
Config.Settings.vehicleActions.closeKeyFob.keyboard="ESCAPE" - Added
Config.Settings.vehicleActions.closeKeyFob.mouse="MOUSE_RIGHT" - Added
Config.Settings.vehicleEngine.exitKey="F" - Added
Config.Settings.vehicleEngine.startKey="W" - Added
Config.Settings.windowControls.downKey="DOWN" - Added
Config.Settings.windowControls.upKey="UP"
- Added
#Changes
- Parking meters
- Added paid and unpaid parking meter sessions with in-world DUI status, time extension, session persistence and meter-specific vehicle lock protection.
- Added placeable meter props, editor keybinds, target/model configuration and multiplier zones.
- Added garage-builder parking meter tools for target/model editing and meter settings.
- Fixed meter lock state sync, original-meter extension validation, closest-garage detection around meters, key fob targeting and unused hotspot text in runtime menus.
- Public interiors
- Added public garage interior sessions with invites, requests, access lists, visibility controls, target entry and NUI access management.
- Added public interior vehicle batch loading with manual progress, sequential spawning, showroom batch controls and keyboard switching hints.
- Updated gigantic garage positions and fixed stale public-interior park prompts, prompt recovery and refresh dropdown behavior.
- Plate changes
- Added a player-facing plate change service with DMV-style paper UI, optional modern form UI, configurable ped/blip, payment, cooldowns and format recipes.
- Added permanent plate-change application that updates the saved plate, vehicle mods, live persistent vehicle state, visible vehicle plate, key metadata and open transfer contract metadata.
- Fixed fake plate defaults and plate uniqueness checks around spaces/current VIN.
- Garage vehicles and UI
- Added custom vehicle images with the new
vehicleImagedatabase field, thumbnails, edit modal, image URL validation and image-studio resource references. - Our custom image studio is in the works, and will be included for free when finished.
- Added the custom
zyke_prop_parkingpayprop for normal garage menu placements. - Added garage vehicle display modes and immediate display-setting persistence.
- Fixed garage menu height on small screens, nested row controls, dropdown positioning, vehicle type filtering, private access alignment and nearby-access player appending.
- Added custom vehicle images with the new
- Persistent vehicles, impounds and tracking
- Fixed out vehicles that were marked out but missing a persistent-vehicle row by recovering them during startup/impound cleanup.
- Fixed persistent vehicle net ID validation to verify by VIN, support plate-or-VIN position lookups and protect parking meter sessions from normal respawn/cleanup behavior.
- Added persistent vehicle tracking labels and a tracked-vehicle blip category while reducing tracking blip churn.
- Fixed distance-driven persistence by skipping unchanged database updates and logging the actual saved vehicle count.
- Keys, robbery and vehicle access
- Added ped witness data and key robbery context for NPC robbery/key theft hooks.
- Added ignored-vehicle state handling so hotwiring, search vehicle, entry checks and persistent systems skip display vehicles and parking meter protected vehicles.
- Fixed key module initialization, successful key fob animations, locksmith overflow, custom key label tracking and locksmith blip size.
- Interior runtime
- Fixed interior loading progress, horn-to-drive-out behavior, key purchase from vehicle exit, prompt-based exits, garage opening from prompt keybinds, takeout/cancel transitions, loading-cover prompts and parking zone refresh after takeout.
- Added animated interior info bar stat values and improved info bar performance.
- Admin, developer and integration support
- Added
SafeDeleteVehicleandDeleteVehicleexports on both client and server, with safer deletion failure recovery. - Added the vehicle transfer contract item image and live refresh for open contracts when plate metadata changes.
- Fixed profession vehicle catalog settings so they require builder permission.
- Fixed garage-builder overlays, checkbox styling, builder layout clipping and impound UI spacing/search layout.
- Added
#Files Affected
- client/*
- server/*
- shared/*
- nui/*
- external_support/keys/main.lua
- external_support/safe_dv/client.lua
- external_support/safe_dv/server.lua
- extras/database/starter_garages.sql
- extras/items/images/vehicle_transfer_contract.png
- modules/*
- stream/Zyke_Prop_ParkingPay.ytyp
- stream/zyke_prop_parkingpay.ydr
- fxmanifest.lua
#Config Changes
shared/unlocked/config.lua- Added
Config.Settings.blipCategories.trackedVehicles=170 - Edited
Config.Settings.debug.basic:true->false - Edited
Config.Settings.fakePlate.allowNonUniquePlates:true->false - Edited
Config.Settings.locksmith.ped.blip.size:0.8->1.0 - Added the full
Config.Settings.pedWitnessestable. Copy the entire table from the new config. - Added the full
Config.Settings.plateChangetable. Copy/swap the entire table from the new config instead of applying field-by-field generated entries. - Added the full
Config.Settings.garageInterior.publicInteriorstable. Copy the entire table from the new config. - Added three new
Config.Settings.personalSettings.settingsentries:publicInteriorRequestModepublicInteriorShowSessionpublicInteriorBatchKeyboardHint
- Keep the existing
holdExitToKeepState,autoStartEngineandnearbyGaragesLimitentries after the new public-interior settings rather than replacing them by index.
- Added
#Changes
- Vehicles inside of interiors now show info bars hovering above them, so you can gauge their status easier.
- Added a new easier way to give access to new vehicles via an export.
- You just have to specify the model and the receiver, or you can go more in-depth.
- This feature does not replace any current flow and should not be used by dealerships, since our automatic dealership handler is already in place.
- More info here: https://docs.zykeresources.com/paid-resources/garages/exports-and-events#give-vehicle-basic
- Added a few missing translations to the additional languages.
#Files Affected
- client/unlocked/events.lua
- client/unlocked/functions.lua
- server/unlocked/functions.lua
- nui/*
- modules/interior_info_bars/client/main.lua
- modules/vehicle_init/client.lua
- fxmanifest.lua
#Changes
- Introduced vehicle transfer contracts – a new paper‑based ownership transfer system.
- Added a Transfer Contract item (
vehicle_transfer_contract) with a dedicated UI for creating and signing contracts.
- Added a Transfer Contract item (
- Expanded profession vehicle management.
- Qbox now has full support for profession vehicles.
- Regular workers can now access a more basic coloring "pimp" menu, if their profession has given the boss access to a full tuning menu.
- Garage menu tip now clickable, which will open the personal settings it is recommendating, instead of requiring you to run the command.
- Improved key system stability to prevent accidental frequency resets.
#Files Affected
- client/*
- server/*
- shared/*
- nui/*
- extras/items/ox_inventory.lua
- extras/items/qb-core.lua
- extras/items/qs-inventory.lua
- modules/*
- fxmanifest.lua
#Changes
- The garage vehicle count footer now shows a tip with the personal settings command (e.g., making it easier for players to discover how to open personal settings.
- When the
closeMenuOnSpawnconfiguration setting is enabled, the garage menu now automatically closes after a vehicle is spawned or impounded. - Players with "soft owner" access to a vehicle can now auto-purchase keys and take vehicles out of garage interiors in identifier‑access mode, previously only the primary owner could. This could previously cause profession vehicles to not give automatic keys.
#Files Affected
- client/locked/events.lua
- server/locked/events.lua
- shared/unlocked/config.lua
- shared/unlocked/types.lua
- nui/*
- fxmanifest.lua
#Changes
- Adjusted the profession vehicle parking restrictions to be simpler, replacing the previous confusing garageRestrictedProfessions config.
- Added easier methods to manage profession vehicles.
- Admins can now allow profession bosses to buy authorized vehicles via their vehicle management menu, for a set price.
- Admins can now allow profession bosses to run the /gpimpvehicle command to pimp out their profession vehicle fleet. In here, you can tune, change liveries, etc.
- Profession bosses can now duplicate profession vehicles that are authorized to be purchased, at the same price, which quickly lets you build a customized fleet based on the first vehicle's properties.
- Garage spawn menus now support using an NPC ped as an interaction point, selectable via the usingTarget config option.
- Added an admin command to reset a vehicle that is currently outside the garage, useful for administrative recovery.
- The garage UI now displays the vehicle's deformation damage status, giving players better visibility into their vehicle's condition.
- The garage builder tool now includes a button to teleport directly to the configured spawn position, making verification easier.
- Vehicle management interactions now also support using an NPC ped as the interaction point, in addition to props.
- Simplified the input that sets a garage as an impound.
#Files Affected
- client/*
- server/*
- shared/*
- nui/*
- modules/keys/server/functions.lua
- modules/persistent_vehicles/server/constructor.lua
- modules/profession_vehicles/client/functions.lua
- modules/profession_vehicles/server/functions.lua
- fxmanifest.lua
2026-05-25 04:48 CET
#Changes
- Added integration for bcs_housing, allowing property garages to be used as dynamic garages with access based on house keys.
- Added a new dynamic garage access system that supports custom access checks from integrations like bcs_housing.
- Fixed a potential error when checking garage ownership if the owner field was missing.
#Files Affected
- client/locked/functions.lua
- client/unlocked/functions.lua
- server/locked/events.lua
- shared/unlocked/types_dynamic.lua
- integrations/README.md
- integrations/[bcs_housing]/zyke_garages/README.md
- integrations/[bcs_housing]/zyke_garages/client.lua
- integrations/[bcs_housing]/zyke_garages/server.lua
- modules/dynamic_garages/client/sync.lua
- modules/dynamic_garages/server/access.lua
- modules/dynamic_garages/server/registration.lua
- modules/dynamic_garages/server/vehicles.lua
- fxmanifest.lua
#Changes
- Removed duplicate notification when lockpicking a vehicle.
- Fixed player displacement after the lockpicking animation that sometimes caused the ped to glitch into the ground.
#Files Affected
- client/unlocked/menus/vehicleactions.lua
- client/unlocked/small_resources/lockpicking.lua
- fxmanifest.lua
#Changes
- Fixed an issue where profession boss ranks would not refresh properly in the management menu.
- Constrained the vehicle list height in the management interface to prevent overflow.
- Normalized garage active states to ensure consistent and expected behavior across sessions.
- Tightened the default save spacing in the garage builder to make layouts cleaner.
- Clarified the default garage fallback description in all languages.
- Reduced excess bottom spacing in the garage builder editor for a tighter layout.
#Files Affected
- client/locked/events.lua
- client/locked/functions.lua
- client/unlocked/functions.lua
- client/unlocked/main.lua
- server/locked/events.lua
- server/locked/functions.lua
- server/locked/initialize.lua
- shared/locked/main.lua
- shared/unlocked/functions.lua
- nui/*
- locales/*
- modules/dynamic_garages/client/sync.lua
- modules/dynamic_garages/server/registration.lua
- fxmanifest.lua
#Changes
- Adjusted spacing in the cleanup/footer UI for better alignment.
- Optimized persistent vehicle saving to batch database writes, improving server performance when many vehicles exist.
- Refined vehicle save conditions to only save vehicles near players during runtime, reducing unnecessary saves.
#Files Affected
- server/*
- nui/*
- modules/persistent_vehicles/server/constructor.lua
- modules/persistent_vehicles/server/functions.lua
- modules/persistent_vehicles/server/main.lua
- fxmanifest.lua
#Changes
- Added a config option to block lockpicking vehicles while inside garage sections, with a corresponding notification.
- Added debug logging for the vehicle actions loop to help troubleshoot vehicle lock and engine state syncing.
#Files Affected
- client/unlocked/small_resources/lockpicking.lua
- server/unlocked/vehicleactions.lua
- shared/unlocked/config.lua
- shared/unlocked/functions.lua
- fxmanifest.lua
Changes
- Added a live preview wall when creating garage sections to better visualize boundaries and height.
- Improved boat garage support in the Garage Builder.
- The system now uses a boat model for previews instead of a car when editing boat-only garages.
- Raycasting now respects water levels to ensure accurate placement of boat spawn points.
- Added a developer command to remove vehicles that are currently outside of defined sections.
- Updated the vehicle cleanup logic to automatically ignore and preserve vehicles located within a section.
- Refactored the Blip Settings interface and logic within the Garage Builder for better usability.
- Improved the UI responsiveness when editing labels by implementing debounced inputs.
- Fixed an issue where garage section points could be placed in invalid locations when the placement cursor wasn't hitting a surface.
- Fixed a bug in the persistent vehicle system that caused certain values to reset incorrectly.
- Implemented a more dedicated and reliable saving method for persistent vehicles.
- Fixed a calculation error in the vehicle locking logic and adjusted the check interval for better performance.
- Improved UI text input styling to ensure placeholder and error text remains legible.
- Updated localization files for all supported languages.
Files Affected
- client/locked/garage_builder/EditSection.lua
- client/locked/garage_builder/EditSpawnPositions.lua
- server/unlocked/developer/commands.lua
- server/unlocked/vehicleactions.lua
- shared/unlocked/config.lua
- shared/unlocked/types.lua
- nui/*
- external_support/safe_dv/server.lua
- locales/*
- modules/persistent_vehicles/server/constructor.lua
- modules/persistent_vehicles/server/functions.lua
- fxmanifest.lua
Changes
- Provides more informative error message when attempting to initialize vehicle access from a database fetch, but the vehicle is missing required values. Usually the result of an incorrectly configured vehicle dealer or old vehicles that have not yet been initialized.
Files Affected
- server/locked/initialize.lua
- fxmanifest.lua
Changes
- Function to handle initialization of spawned vehicles, available as export for 3rd party scripts.
- Stops attempting to find and modify a vehicle that can not be found in a reasonable timeframe.
- Overhaul to key stealing, including various settings and a minigame option.
Files Affected
- client/unlocked/eventhandler.lua
- client/unlocked/small_resources/lockpicking.lua
- client/unlocked/small_resources/stealkeys.lua
- client/unlocked/menus/vehicleactions.lua
- server/unlocked/functions.lua
- server/unlocked/persistent_vehicles/functions.lua
- server/locked/vehicleactions.lua
- locales/en.lua
- Added
searchingKeys - Added
failedToFindKeys
- Added
- shared/unlocked/config.lua
- Modified
Config.Settings.keys - Added
Config.Settings.tempKeys
- Modified
- fxmanifest.lua
Changes
- Added a client-sided export to remove persistent vehicles.
- Better error handling for removing persistent vehicles.
Files Affected
- client/unlocked/persistent_vehicles/functions.lua
- server/unlocked/persistent_vehicles/functions.lua
- server/unlocked/persistent_vehicles/eventhandler.lua
- locales/en.lua
- Added
vinNotFound.
- Added
- fxmanifest.lua
Changes
- Fixed issue where the QBCore version could not check if the rank was considered boss.
- Removed unused argument for inventory update event.
- Extra check to see if metadata exist for keys in case it was obtained incorrectly or has missing data. Only prints a debug now.
Files Affected
- client/locked/functions.lua
- client/unlocked/main.lua
- server/unlocked/functions.lua
- fxmanifest.lua
Changes
- New vehicle actions menu.
- Hold keybind to open menu, press keybind to open keyfob for the closest vehicle you have access to.
- Keyfob UI.
- Keybind to lock closest vehicle.
- Optionally keys as items.
- Your items decide your access to vehicles.
- Change frequency and void older keys, ensuring the right people have access to your vehicles.
- Persistent vehicles.
- Leaving area / relogging does not despawn the vehicle.
- Server-restart proof, will respawn vehicles that are removed.
- Temporary vehicles are consistent.
- Removed previous "on restart" actions, now part of cleanup parameters.
- Adding cleanup parameters and execution.
- Better vehicle actions syncing, no need for exports to be placed everywhere, as other resources can now override the vehicle's state.
- New impound UI design.
- New finance UI design
- Updated the performance modifications UI design.
- Expanded the exports and events section.
- Configuration to require being inside of an impound zone to impound vehicles.
- Minor performance optimizations.
Files Affected
Replace all your files.
Database Updates v1.0.1 -> v1.1.0
Run the queries for your framework below, in order.
ESX
sqlDROP TABLE zyke_garages_restart_actions
sqlALTER TABLE owned_vehicles
ADD COLUMN keyFreq MEDIUMINT;
- Run zyke_cleanup_settings.sql.
QBCore
sqlDROP TABLE zyke_garages_restart_actions
sqlALTER TABLE player_vehicles
ADD COLUMN keyFreq MEDIUMINT;
- Run zyke_cleanup_settings.sql.
If starting fresh, simply run the new standard databases as usual.
Changes
- Further exploitation proofing.
- Additional event to set vehicle ownership after car dealer purchase.
- GiveTempKeys export also accepts plate, and finds vehicle by matching it.
- New OpenImpounderMenu export found here.
Files affected
- server/unlocked/eventhandler.lua
- Additional executor protection for setting new owner.
- server/unlocked/functions.lua
- Additional executor protection for setting new owner.
- client/unlocked/menus/impound.lua
- Created export to open impounder menu.
- client/unlocked/functions.lua
- GiveTempKeys accepting plate.
- Added zyke_garages:HandleVehiclePurchaseWithPlate event.
Official release for ESX and QBCore.
