Vehicle Scripts
ds-advancedgarage
DS Advanced Garage 2.0 Huge Update!!!
A full-featured garage resource for FiveM: store and retrieve vehicles at configurable locations, impound, private and house garages, vehicle transfer, optional walk-in interiors (showroom), parking meters, and support for QB-Core, Qbox, ESX, and standalone. Current resource version: 2.0 (see CHANGELOG.md for release notes).
Features
Multiple frameworks — QB-Core, Qbox, ESX, or standalone (auto-detect)
Garage locations — Public, job, gang, impound; NPC or marker interaction (E key, ox_target, or qb-target)
Impound — Police can impound vehicles; owners pay a fee at impound lots to release
Private garages — Owner-only garages (e.g. real estate); optional interiors and billing (buyer accept/deny offers)
House garages — Preset/buyable house garage slots, maker command for coords export, owner tracking (framework SQL)
Walk-in garage interiors — Showroom-style interiors from the garage UI; optional music playlist, stash (many inventories), paid stash upgrades, player invites, floating NUI labels over vehicles
Parking meters — Paid timed parking at configured props (
ParkingConfiginshared/parkingconfig.lua)Job vehicle spawner — Helper for job fleet workflows (see config / locations)
Vehicle transfer — Move stored vehicles between garages (optional fee)
Shared garages — Take any stored vehicle from any garage, or restrict by storage location
Integrations — Fuel, keys, banking, gangs; notifications: default framework, builtin toasts, ds-notifications, ox_lib, okokNotify, ps-ui
Locales — en, de, es, fr, it, pt, nl, pl, ru, tr
Dependencies
ox_lib (required —
shared_scriptsincludes@ox_lib/init.lua)oxmysql (required, server)
PolyZone (required, client) — garage zones
Your framework (QB-Core, Qbox, or ESX) and optional integrations (fuel, keys, banking, inventory for interior stash) as configured in shared/config.lua.
Installation
- Dependencies
Ensure ox_lib, oxmysql, and PolyZone are installed and start before this resource.
- Database — framework base
Run the SQL for your stack under sql//:
QB-Core:
sql/qb/player_vehicles.sql(plus impound extras in that folder if you use impound)Qbox:
sql/qbox/player_vehicles.sql(and impound extras if needed)ESX:
sql/esx/owned_vehicles.sql,sql/esx/dsag_impounds.sql, and other files insql/esx/as needed
- Database — DS Advanced Garage tables
Private garages:
sql/qb/dsag_private_garages.sql,sql/qbox/dsag_private_garages.sql, orsql/esx/dsag_private_garages.sql(pick one matching your framework).House garage owners (buyable/preset house garages):
sql/qb/dsag_house_garage_owners.sql,sql/qbox/dsag_house_garage_owners.sql, orsql/esx/dsag_house_garage_owners.sql.
- Database — migrations (
sql/migrations/)
Run only what you enable; typical files:
dsag_private_garages_add_interior_key.sql/dsag_private_garages_add_interior_props.sql— private garage showroom columnsdsag_interior_stash.sql— interior stash upgradesdsag_showroom_music_playlist.sql— showroom music persistencedsag_vehicle_nicknames.sql— optional vehicle nicknamesdsag_house_garage_allowed.sql— house garage allow-list support
- Configure
Edit shared/config.lua, shared/parkingconfig.lua, shared/locations/locations_config.lua, and shared/locations/garagespropsconfig.lua (interior props) for your server.
- Start
Add ensure ds-advancedgarage (or your folder name) after dependencies and your framework.
Upgrading from an older bundle: see CHANGELOG.md (section for 2.0).
Configuration overview
Main config (shared/config.lua)
| Option | Description |
|--------|-------------|
| Config.Framework | 'auto', 'qbcore', 'qbox', 'esx', or 'standalone' |
| Config.Locale | Language code (see Features list) |
| Config.Notifications | 'default', 'builtin', 'ds-notifications' , 'okokNotify', 'ox_lib', 'ps-ui' |
| Config.BuiltinNotify.duration | Toast time in ms when using builtin |
| Config.FuelSystem | Your fuel script or 'none' |
| Config.VehicleKeys | Keys script or 'none' |
| Config.Banking | Banking resource for fees / impound |
| Config.Garagesresources | Alias name (e.g. 'qb-garages') so other scripts call this resource |
| Config.SaveVehiclePropsOnInsert | First sync can write mods when DB row has empty mods |
| Config.CheckVehicleModel | Extra check that spawned model matches stored vehicle |
Garage NPC (Config.GarageNPC)
enabled — Uses spots in
shared/locations/locations_config.luauseNPC — Ped vs marker-only
interaction —
'e','ox_target','qb-target','auto'distance, key, marker — Interaction range and marker look; marker drawDistance also clamps private interior decorator range
Garages and locations
shared/locations/locations_config.lua— Location coords + garage keys;Config.Garagesfor spawn points, blips, type, categories.Each location references a key defined in
Config.Garages(e.g.legionsquare,impounda).
Walk-in interiors / showroom
Config.GarageEnableInteriors,Config.GarageInteriorAccess—'both'|'nui'|'command'|'none'(command default documented in config).Config.GarageInteriorShowroomVehicleUi— Floating labels near vehicles in showroom.Config.GarageInteriorStash— Stash in showroom; set inventory or'auto'and runsql/migrations/dsag_interior_stash.sqlif you use upgrades.Config.GarageInteriorUpgrades— Paid stash tiers / rename (NUI).Config.GarageInteriorInvite— Invite another player into your session showroom.Interior definitions live in config /
shared/locationsas documented next toConfig.GarageInteriorsinshared/config.lua.
Parking meters (shared/parkingconfig.lua)
ParkingConfig.Enabled— Toggle system.Prices, account type, timer, prop hashes, and optional override keys for 1h / 10h actions.
Impound
Config.UseImpound,Config.Impound— Jobs, impound garage keys, fees.Run the impound-related SQL for your framework from
sql//.
Private garages
Config.PrivGarageCreateCommand,Config.PrivGarageCreateJobRestriction,Config.PrivGarageBlipConfig.PrivGarageEnableInteriors,Config.PrivGarageBilling— Interiors and paid offers to buyersFramework file:
sql//dsag_private_garages.sqlplus migrations if you use interiors.
House garages
Config.HouseGarageCreateCommand/Config.HouseGarageCreateJobRestriction— Maker command (exports snippet for your houses config).Config.HouseGaragePurchase— Buyable house garage flow; requires owner SQL for your framework.Data helper:
housegaragesdata/housegarages.txt(see config comments).
Other options
Config.AutoRespawn, Config.VisuallyDamageCars, Config.SharedGarages, Config.ClassSystem, Config.Warp, Config.AllowSpawnWhenOccupied
Config.TransferToGarageFee, Config.ShowVehiclesOutCount, Config.ShowWaypointToNearestGarage
Config.ShowWatermark / Config.ShowBrand — UI toggles
Admin-style commands (ACE
dsag.adminorgroup.admin): names in config for job/gang garage vehicles, plate change, DB delete, vehicle return (seeshared/config.lua)
Commands / usage
Garage — Interact at a garage NPC or marker (or target) to open the UI; store the current vehicle or retrieve a stored one.
Transfer — From the garage UI, transfer a vehicle to another garage (fee from config).
Impound — Jobs in
Config.Impound.jobsuse the impound command (e.g./impound) at a vehicle; owner pays at the configured impound garage.Private garage — Command from
Config.PrivGarageCreateCommand(e.g./privategarage) if your job is allowed; manage access from the UI.House garage maker — Command from
Config.HouseGarageCreateCommand(e.g./createhousegarage) for authorized jobs; paste exported data into your house garage config and restart as documented in config.Showroom / interior — Access mode from
Config.GarageInteriorAccess(NUI button and/or command such as/garageinteriorwhen enabled in config).