Before You Begin#
Before installing Advanced Garages, make sure your server meets the requirements below. The resource declares most of them in its manifest, so FiveM refuses to start it while one is missing.
Requirement | Status | Notes |
|---|---|---|
ESX, QBCore or Qbox | Required | Detected automatically from |
oxmysql | Required | Database access. It also provides the |
ox_lib | Required | Zones, callbacks and context menus. |
bob74_ipl | Required | Loads the IPL interiors used as garage showrooms. |
VehicleDeformation | Required | Saves every dent and scratch with the vehicle. It ships inside the download, next to the garage resource. |
screenshot-basic | Required | Photographs new furniture in the Furniture Creator. |
OneSync and game build 2802+ | Required | Server artifact 5895 or newer. Persistent vehicles and private routing buckets depend on OneSync. |
Target or radial menu | Optional | ox_target, qb-target, qb-radialmenu or qs-radialmenu. Without one, garages use on-screen [E] and [G] prompts. |
Vehicle keys and fuel | Optional | Keys are handed over when a car leaves the garage, and the fuel level is saved with it. |
Inventory and clothing | Optional | Only for stash and wardrobe furniture placed inside a decorated garage. |
Every framework- or third-party-specific call sits behind a small, open bridge file, and most layers are detected on their own. The full list is in Integrations.
github.comReleases · overextended/oxmysqlMySQL resource for FXServer.github.comReleases · overextended/ox_libA FiveM resource and script library for Lua and JS.github.comReleases · Bob74/bob74_iplFix holes and customize the map.github.comReleases · Kiminaze/VehicleDeformationGetting and setting deformation on vehicles.github.comcitizenfx/screenshot-basicScreenshot resource for FiveM.Downloading Advanced Garages#
After purchasing Advanced Garages, the resource is linked automatically to your CFX Portal account.
Sign in to the CFX Portal with the same account used during checkout, open Granted Assets and download Garages. With a different account the asset does not appear.
After extracting the download, you should have the following folders:
[garages]/
├── qs-advancedgarages/
│ ├── config/ -- what you may edit
│ ├── client/custom/ -- open bridges to other resources (client)
│ ├── server/custom/ -- open bridges, webhooks, insurance prices (server)
│ ├── locales/ -- 42 languages
│ ├── sql/ -- esx.sql, qb.sql, default_garages.sql
│ └── stream/ -- props and textures
├── VehicleDeformation/ -- required dependency
└── [shells]/ -- optional garage shellsThe folder must be named
qs-advancedgarages. Exports, NUI paths and the database all use that name, and the resource stops the server console on purpose if it detects it was renamed.
Installing the Resource#
Move the whole [garages] folder into your server's resources directory. A bracketed folder is only a category, so it can live anywhere under resources/.
resources/
└── [qs]/
└── [garages]/
├── qs-advancedgarages/
└── VehicleDeformation/Then open your server.cfg and start every dependency before the garages:
ensure oxmysql
ensure ox_lib
# Framework
ensure es_extended
# ensure qb-core
# ensure qbx_core
ensure bob74_ipl
ensure screenshot-basic
# Optional: target, keys, fuel, inventory, clothing...
ensure ox_target
ensure qs-vehiclekeys
ensure VehicleDeformation
ensure qs-advancedgarages
# Housing goes after the garages
ensure qs-housingThe loading order matters. Fuel, keys, inventory, clothing and weather systems are detected only if they are already started when the garages start, so a resource placed after qs-advancedgarages is silently ignored. A housing script that adds its own garages, such as qs-housing, must start after the garages.
The Database#
Import the file that matches your framework from the sql/ folder with HeidiSQL, phpMyAdmin or your host's panel. Avoid XAMPP and similar unoptimised local servers, which cause connection errors.
New server: import sql/esx.sql as it is.
Server with existing vehicles: open esx.sql and delete the DROP TABLE IF EXISTS `owned_vehicles` line and the CREATE TABLE `owned_vehicles` block under it. Put this in their place, then import the rest of the file:
ALTER TABLE `owned_vehicles`
ADD COLUMN IF NOT EXISTS `type` VARCHAR(20) NOT NULL DEFAULT 'vehicle',
ADD COLUMN IF NOT EXISTS `garage` VARCHAR(200) NULL DEFAULT 'OUT';The file then adds tag, impound_data, favorite, stored, jobVehicle, jobGarage and hash to the table, and shell_garage to users. If hash already exists, that one line fails and can be skipped.
Import sql/qb.sql. It never drops player_vehicles: it only adds the columns it needs (tag, impound_data, favorite, garage, type, jobVehicle, jobGarage) and shell_garage to players.
The standard QBCore columns state, mods, depotprice and hash are used as they are.
What the SQL creates, and what the resource creates on its own at start:
Table | Created by | Holds |
|---|---|---|
| SQL | Every garage: location, zone, type, access, price, interior, preview camera, owner and key holders. |
| SQL | Furniture placed in garages, and the custom furniture made in game. |
| SQL and at start | Which parking bay each car occupies in an MLO garage. |
| SQL and at start (when insurance is enabled) | Policies, each owner's no-claim step, and claims. |
Default garages import themselves. On the first start the resource reads
sql/default_garages.sqland adds 39 ready-made garages: public car parks across the map, piers, an airport hangar, and an impound for cars, boats and aircraft. It never overwrites a garage that already exists, so there is nothing to import by hand. Deleted one by mistake? Runimportdefaultgaragesin the server console.
Who Can Use the Creator#
Garages are created and edited in game with /garagecreator, and custom furniture with /garagefurniture. Both open for two kinds of player:
Automatic, nothing to configure. On ESX, the groups admin and superadmin. On QBCore and Qbox, the permissions god and admin, or the ACE command. The same check guards the admin commands such as /givecar and /mdvall.
Jobs that may build garages without being admins, in config/config.lua. Leave grade out to allow every grade of that job.
Config.CreatorJobs = {
{ job = 'mechanic', grade = { 1, 2 } },
-- { job = 'realestate' },
}Configuring the Resource#
Garages themselves are not configured in files: they live in the database and are placed in game. The files hold the behaviour, prices and integrations. Every value is tagged [EDIT] (safe to change), [ADV] (advanced), [CORE] or [AUTO] (leave alone).
File | Contents |
|---|---|
| Language, menu and target, blips, prices and fees, menu buttons, insurance, MLO garages, recovery points, default impounds, preview cameras, currency format, creator controls. |
| Job and gang garages with their fleets, liveries, tuning and extras. |
| The IPL showrooms a garage can use as its interior, and their parking spots. |
| Decoration distances, who may decorate, dynamic doors. |
| The furniture catalogue: categories, props, colours and prices. |
| Names for addon vehicles, vehicle classes and brand logos. |
| Your FiveManage token, used to upload furniture pictures. |
| Discord webhooks, one URL per log type. |
The values worth reviewing first:
Config.Locale = GetConvar('qs:locale', 'en') -- or: setr qs:locale "es" in server.cfg
Config.Menu = 'ox_lib' -- context menus for management, keys and recovery
Config.UseTarget = 'none' -- 'ox_target' | 'qb-target' | 'qb-radialmenu' | 'qs-radialmenu'
Config.ImpoundPrice = 500 -- default release fee at the impound
Config.ImpoundJobs = { 'police' }
Config.Intl = { locales = 'en-US', options = { style = 'currency', currency = 'USD', minimumFractionDigits = 0 } }
Config.DefaultImpounds = { vehicle = false, boat = false, plane = false } -- false = nearest impound
Config.Debug = true -- set to false on a live server
Config.Debugships switched on so a first install explains itself in the console. Turn it off before opening the server to players: it prints a lot and registers a test command.
Verifying the Installation#
Restart the server and read the console. A healthy first start looks like this:
[GARAGES] Imported the default garages (<n> rows). Edit them with /garagecreator.
GARAGES INFO: Furniture Creator initialized: 0 custom items loaded
[INFO]: qs-advancedgarages initiated successfully.If a webhook URL is empty you see Missing webhooks: ... instead of the last line. That is only a reminder; the garages work without logs. Then join the server and run through the first loop:
Store a car
Give yourself a car with
/givecar <your id> sultan. It is delivered to the impound, so collect it at Hayes Autos, then drive to Legion Square, stop on the marker and press E.Open the garage
Walk to the garage point and press E. The camera moves to the showroom, your car is on display with its stats, and Drive takes it out with its fuel, damage and keys.
Open the creator
/garagecreatorlists every garage on the server, with filters, a search and a teleport button. Continue with Usage.
Garages created, edited or deleted in the creator apply to every player straight away, with no restart.



