Installation guide — please follow each step carefully and exactly as described to ensure the script works correctly on your server. Skipping or modifying steps may cause the system to not function properly, so follow it step by step.
This script requires some mandatory dependencies to function correctly. Make sure to download and extract them inside your server’s main directory, keeping their original folder structure intact.
This script may cause conflicts or errors if you use other garage systems on your server.Common examples include qb-garages, esx_garages or other similar garages scripts.It’s strongly recommended to remove them completely before installation to prevent compatibility or functionality issues.
This script must always start after es_extended or qb-core, never before. We recommend placing it below them in your server.cfg, ensuring all dependencies are loaded first to prevent errors or unexpected behavior.
If you’re using qs-housing or plan to integrate it with a housing system, make sure to start it right above the housing resource for proper synchronization and functionality.
This script includes an essential database required for its operation.You must import it before starting your server, preferably using HeidiSQL or any other manager compatible with MariaDB/MySQL.
ESX
sql
ALTER TABLE
`users`
ADD
IF NOTEXISTS `shell_garage` TEXT NULLDEFAULT'';
DROPTABLE IF EXISTS `owned_vehicles`;
CREATE TABLE `owned_vehicles` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`owner` VARCHAR(255) NOT NULLCOLLATE'utf8mb4_bin',
`tag` VARCHAR(50) NULLDEFAULTNULLCOLLATE'utf8mb4_bin',
`plate` VARCHAR(250) NOT NULLCOLLATE'utf8mb4_bin',
`vehicle` LONGTEXT NULLDEFAULTNULLCOLLATE'utf8mb4_bin',
`type` VARCHAR(20) NOT NULLDEFAULT'vehicle'COLLATE'utf8mb4_bin',
`garage` VARCHAR(200) NULLDEFAULT'OUT'COLLATE'utf8mb4_bin',
`impound_data` TEXT NULLDEFAULT''COLLATE'utf8mb4_bin',
`favorite` INT(3) NOT NULLDEFAULT'0',
`stored` TINYINT(4) NULLDEFAULT'0',
`jobVehicle` VARCHAR(50) NULLDEFAULT''COLLATE'utf8mb4_bin',
`jobGarage` VARCHAR(50) NULLDEFAULT''COLLATE'utf8mb4_bin',
PRIMARY KEY (`id`) USING BTREE
) COLLATE='utf8mb4_bin' ENGINE = InnoDB AUTO_INCREMENT =1;
ALTER TABLE
`owned_vehicles` CONVERTTOCHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
DROPTABLE IF EXISTS `player_garages`;
CREATE TABLE `player_garages` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`creator` VARCHAR(80) NULLDEFAULTNULL,
`owner` VARCHAR(80) NULLDEFAULTNULL,
`name` VARCHAR(50) NULLDEFAULTNULL,
`price` INT(11) NOT NULL,
`coords` LONGTEXT NULLDEFAULTNULL,
`zone` LONGTEXT NULLDEFAULTNULL,
`shell` LONGTEXT NULLDEFAULTNULL,
`type` VARCHAR(50) NULLDEFAULT'vehicle',
`holders` TEXT NULLDEFAULTNULL,
`available` TINYINT(1) NULLDEFAULTNULL,
`isImpound` TINYINT(1) NULLDEFAULTNULL,
`jobs` LONGTEXT NULLDEFAULTNULL,
`gangs` LONGTEXT NULLDEFAULTNULL,
`interior_type` ENUM('ipl','shell') NOT NULLDEFAULT'ipl',
PRIMARY KEY (`id`) USING BTREE,
INDEX `creator` (`creator`) USING BTREE
)COLLATE='utf8mb4_unicode_ci';
CREATE TABLE IF NOTEXISTS `qs_garage_decorations` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`insideId` VARCHAR(50) NULLDEFAULTNULLCOLLATE'utf8mb3_general_ci',
`creator` VARCHAR(70) NOT NULLDEFAULT'0'COLLATE'utf8mb3_general_ci',
`modelName` VARCHAR(50) NOT NULLDEFAULT'0'COLLATE'utf8mb3_general_ci',
`coords` TEXT NULLDEFAULTNULLCOLLATE'utf8mb3_general_ci',
`rotation` TEXT NOT NULLDEFAULT''COLLATE'utf8mb3_general_ci',
`inStash` TINYINT(1) NOT NULLDEFAULT'0',
`inside` TINYINT(1) UNSIGNED NOT NULLDEFAULT'0',
`uniq` VARCHAR(50) NULLDEFAULTNULLCOLLATE'utf8mb3_general_ci',
`created` TIMESTAMPNULLDEFAULTNULL,
`lightData` TEXT NULLDEFAULTNULLCOLLATE'utf8mb3_general_ci',
PRIMARY KEY (`id`) USING BTREE,
INDEX `id` (`id`, `insideId`) USING BTREE
)COLLATE='utf8mb3_general_ci';
DROPTABLE IF EXISTS `qs_garage_furnitures`;
CREATE TABLE `qs_garage_furnitures` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`creator` VARCHAR(80) NULLDEFAULTNULL,
`category_key` VARCHAR(100) NOT NULL,
`object` VARCHAR(200) NOT NULL,
`label` VARCHAR(255) NOT NULL,
`description` TEXT NULLDEFAULTNULL,
`price` INT(11) NOT NULLDEFAULT'0',
`img` TEXT NULLDEFAULTNULL,
`colorlabel` VARCHAR(255) NULLDEFAULTNULL,
`type` VARCHAR(50) NULLDEFAULTNULL,
`stash` LONGTEXT NULLDEFAULTNULL,
`offset` LONGTEXT NULLDEFAULTNULL,
`colors` LONGTEXT NULLDEFAULTNULL,
PRIMARY KEY (`id`) USING BTREE,
INDEX `creator` (`creator`) USING BTREE,
INDEX `category_key` (`category_key`) USING BTREE
)COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB;
ALTER TABLE `owned_vehicles`
ADDCOLUMN IF NOTEXISTS `impound_data` TEXT NULLDEFAULT''COLLATE'utf8mb4_bin',
ADDCOLUMN IF NOTEXISTS `favorite` INT(3) NOT NULLDEFAULT'0',
ADDCOLUMN IF NOTEXISTS `stored` TINYINT(4) NULLDEFAULT'0',
ADDCOLUMN IF NOTEXISTS `jobVehicle` VARCHAR(50) NULLDEFAULT''COLLATE'utf8mb4_bin',
ADDCOLUMN IF NOTEXISTS `jobGarage` VARCHAR(50) NULLDEFAULT''COLLATE'utf8mb4_bin',
ADDCOLUMN IF NOTEXISTS `tag` VARCHAR(200) NULLDEFAULT'OUT'COLLATE'utf8mb4_bin';
ALTER TABLE `owned_vehicles` ADDCOLUMN `hash` BIGINTNULLDEFAULTNULL;
ALTER TABLE `player_garages` ADD IF NOTEXISTS `interior_type` ENUM('ipl','shell') NOT NULLDEFAULT'ipl';
ALTER TABLE `player_garages` ADD IF NOTEXISTS `enable_open_menu` TINYINT(1) NULLDEFAULTNULL;
ALTER TABLE `player_garages` ADD IF NOTEXISTS `enable_shell_entry` TINYINT(1) NULLDEFAULTNULL;
QB
sql
ALTER TABLE
`players`
ADDCOLUMN IF NOTEXISTS `shell_garage` TEXT NULLDEFAULT'';
ALTER TABLE
`player_vehicles`
ADDCOLUMN IF NOTEXISTS `tag` VARCHAR(50) NULLDEFAULTNULLCOLLATE'utf8mb4_bin',
ADDCOLUMN IF NOTEXISTS `impound_data` TEXT NULLDEFAULT''COLLATE'utf8mb4_bin',
ADDCOLUMN IF NOTEXISTS `favorite` INT(3) NOT NULLDEFAULT'0',
ADDCOLUMN IF NOTEXISTS `garage` VARCHAR(200) NULLDEFAULT'OUT'COLLATE'utf8mb4_bin',
ADDCOLUMN IF NOTEXISTS `type` VARCHAR(50) NULLDEFAULT'vehicle'COLLATE'utf8mb4_bin',
ADDCOLUMN IF NOTEXISTS `jobVehicle` VARCHAR(50) NULLDEFAULT''COLLATE'utf8mb4_bin',
ADDCOLUMN IF NOTEXISTS `jobGarage` VARCHAR(50) NULLDEFAULT''COLLATE'utf8mb4_bin';
DROPTABLE IF EXISTS `player_garages`;
CREATE TABLE `player_garages` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`creator` VARCHAR(80) NULLDEFAULTNULL,
`owner` VARCHAR(80) NULLDEFAULTNULL,
`name` VARCHAR(50) NULLDEFAULTNULL,
`price` INT(11) NOT NULL,
`coords` LONGTEXT NULLDEFAULTNULL,
`zone` LONGTEXT NULLDEFAULTNULL,
`shell` LONGTEXT NULLDEFAULTNULL,
`type` VARCHAR(50) NULLDEFAULT'vehicle',
`holders` TEXT NULLDEFAULTNULL,
`available` TINYINT(1) NULLDEFAULTNULL,
`isImpound` TINYINT(1) NULLDEFAULTNULL,
`jobs` LONGTEXT NULLDEFAULTNULL,
`gangs` LONGTEXT NULLDEFAULTNULL,
`interior_type` ENUM('ipl','shell') NOT NULLDEFAULT'ipl',
PRIMARY KEY (`id`) USING BTREE,
INDEX `creator` (`creator`) USING BTREE
)COLLATE='utf8mb4_unicode_ci';
CREATE TABLE IF NOTEXISTS `qs_garage_decorations` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`insideId` VARCHAR(50) NULLDEFAULTNULLCOLLATE'utf8mb3_general_ci',
`creator` VARCHAR(70) NOT NULLDEFAULT'0'COLLATE'utf8mb3_general_ci',
`modelName` VARCHAR(50) NOT NULLDEFAULT'0'COLLATE'utf8mb3_general_ci',
`coords` TEXT NULLDEFAULTNULLCOLLATE'utf8mb3_general_ci',
`rotation` TEXT NOT NULLDEFAULT''COLLATE'utf8mb3_general_ci',
`inStash` TINYINT(1) NOT NULLDEFAULT'0',
`inside` TINYINT(1) UNSIGNED NOT NULLDEFAULT'0',
`uniq` VARCHAR(50) NULLDEFAULTNULLCOLLATE'utf8mb3_general_ci',
`created` TIMESTAMPNULLDEFAULTNULL,
`lightData` TEXT NULLDEFAULTNULLCOLLATE'utf8mb3_general_ci',
PRIMARY KEY (`id`) USING BTREE,
INDEX `id` (`id`, `insideId`) USING BTREE
)COLLATE='utf8mb3_general_ci';
DROPTABLE IF EXISTS `qs_garage_furnitures`;
CREATE TABLE `qs_garage_furnitures` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`creator` VARCHAR(80) NULLDEFAULTNULL,
`category_key` VARCHAR(100) NOT NULL,
`object` VARCHAR(200) NOT NULL,
`label` VARCHAR(255) NOT NULL,
`description` TEXT NULLDEFAULTNULL,
`price` INT(11) NOT NULLDEFAULT'0',
`img` TEXT NULLDEFAULTNULL,
`colorlabel` VARCHAR(255) NULLDEFAULTNULL,
`type` VARCHAR(50) NULLDEFAULTNULL,
`stash` LONGTEXT NULLDEFAULTNULL,
`offset` LONGTEXT NULLDEFAULTNULL,
`colors` LONGTEXT NULLDEFAULTNULL,
PRIMARY KEY (`id`) USING BTREE,
INDEX `creator` (`creator`) USING BTREE,
INDEX `category_key` (`category_key`) USING BTREE
)COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB;
ALTER TABLE `player_garages` ADD IF NOTEXISTS `interior_type` ENUM('ipl','shell') NOT NULLDEFAULT'ipl';
ALTER TABLE `player_garages` ADD IF NOTEXISTS `enable_open_menu` TINYINT(1) NULLDEFAULTNULL;
ALTER TABLE `player_garages` ADD IF NOTEXISTS `enable_shell_entry` TINYINT(1) NULLDEFAULTNULL;
Quasar Advanced Garages includes a vehicle damage system that keeps every dent and scratch until the car is repaired. It works on its own, not with ESX or QB repair systems.
You can fix vehicles in three simple ways:
You can use exports['qs-advancedgarages']:RepairSpecificVehicle(plate) or exports['qs-advancedgarages']:RepairNearestVehicle().
Use /repairvehicle (admin only). You can change who can use it in server/custom/framework/*.
Enable Config.RepairKit = true in config.lua to use the repair kit item with a short repair animation
This system makes damage persistent and realistic, perfectly integrated with the garage system.