Installation
Before you start, make sure you're logged into the CFX portal. This ensures you can download the asset and receive future updates.
Downloading Dependencies
Server cfg
# iZaap Studios - Garages
ensure oxmysql
ensure izaap_garageSQL
Import the included SQL file into your database:
Creates:
izaap_garages,izaap_jobvehicles,izaap_impoundsAdds optional columns to:
player_vehicles(QB) /owned_vehicles(ESX)Safe to re-run (won’t crash if columns already exist)
.SQL
/* iZaap Garage — FULL SQL (ESX + QB + QBOX) | ALL-IN-ONE | SAFE RE-RUN */
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
DROP PROCEDURE IF EXISTS `izaap_add_column_if_missing`;
DELIMITER $$
CREATE PROCEDURE `izaap_add_column_if_missing`(
IN p_table VARCHAR(64),
IN p_column VARCHAR(64),
IN p_definition TEXT
)
BEGIN
IF EXISTS (
SELECT 1
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = p_table
) THEN
IF NOT EXISTS (
SELECT 1
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = p_table
AND COLUMN_NAME = p_column
) THEN
SET @q = CONCAT('ALTER TABLE `', p_table, '` ADD COLUMN `', p_column, '` ', p_definition);
PREPARE stmt FROM @q;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END IF;
END IF;
END$$
DELIMITER ;
CREATE TABLE IF NOT EXISTS `izaap_garages` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`label` VARCHAR(64) NOT NULL,
`type` VARCHAR(16) NOT NULL DEFAULT 'car',
`radius` DOUBLE NOT NULL DEFAULT 5,
`coords` LONGTEXT NULL,
`ped_coords` LONGTEXT NULL,
`min_z` DOUBLE NOT NULL DEFAULT 0,
`max_z` DOUBLE NOT NULL DEFAULT 0,
`blip` TINYINT(1) NOT NULL DEFAULT 0,
`blip_sprite` INT(11) NOT NULL DEFAULT 0,
`blip_color` INT(11) NOT NULL DEFAULT 0,
`access_type` VARCHAR(16) NOT NULL DEFAULT 'public',
`access_job` VARCHAR(50) NULL DEFAULT NULL,
`access_job_grade` INT(11) NOT NULL DEFAULT 0,
`access_private` LONGTEXT NULL,
`garage_mode` VARCHAR(16) NOT NULL DEFAULT 'owned',
PRIMARY KEY (`id`),
KEY `idx_label` (`label`),
KEY `idx_access_type` (`access_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CALL izaap_add_column_if_missing('izaap_garages','ped_model', 'VARCHAR(64) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('izaap_garages','ped_scenario', 'VARCHAR(64) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('izaap_garages','ped_x', 'DOUBLE NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('izaap_garages','ped_y', 'DOUBLE NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('izaap_garages','ped_z', 'DOUBLE NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('izaap_garages','ped_w', 'DOUBLE NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('izaap_garages','ped_heading', 'DOUBLE NULL DEFAULT NULL');
CREATE TABLE IF NOT EXISTS `izaap_jobvehicles` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`model` VARCHAR(64) NOT NULL,
`job` VARCHAR(50) NOT NULL,
`allowed_grades` LONGTEXT NULL,
`vehicle_props` LONGTEXT NULL,
PRIMARY KEY (`id`),
KEY `idx_job` (`job`),
KEY `idx_model` (`model`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `izaap_impounds` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`label` VARCHAR(64) NOT NULL,
`type` VARCHAR(16) NOT NULL DEFAULT 'car',
`coords` LONGTEXT NULL,
`spawn_coords` LONGTEXT NULL,
`blip` TINYINT(1) NOT NULL DEFAULT 0,
`blip_sprite` INT(11) NOT NULL DEFAULT 0,
`blip_color` INT(11) NOT NULL DEFAULT 0,
`allowed_jobs` LONGTEXT NULL,
PRIMARY KEY (`id`),
KEY `idx_label` (`label`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CALL izaap_add_column_if_missing('player_vehicles','recover_due', 'TINYINT(1) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('player_vehicles','favorite', 'TINYINT(1) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('player_vehicles','custom_name','VARCHAR(32) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('owned_vehicles','recover_due', 'TINYINT(1) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('owned_vehicles','favorite', 'TINYINT(1) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('owned_vehicles','custom_name','VARCHAR(32) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('player_vehicles','impounded', 'TINYINT(1) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('player_vehicles','impound_id', 'INT(11) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('player_vehicles','impound_label', 'VARCHAR(64) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('player_vehicles','impound_reason', 'VARCHAR(255) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('player_vehicles','impounded_by', 'VARCHAR(64) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('player_vehicles','impounded_by_name', 'VARCHAR(64) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('player_vehicles','impounded_at', 'INT(11) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('player_vehicles','impound_fee', 'INT(11) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('player_vehicles','impound_fee_before', 'INT(11) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('player_vehicles','impound_fee_after', 'INT(11) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('player_vehicles','impound_release_at', 'INT(11) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('player_vehicles','impound_prev_garage', 'VARCHAR(64) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('owned_vehicles','impounded', 'TINYINT(1) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('owned_vehicles','impound_id', 'INT(11) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('owned_vehicles','impound_label', 'VARCHAR(64) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('owned_vehicles','impound_reason', 'VARCHAR(255) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('owned_vehicles','impounded_by', 'VARCHAR(64) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('owned_vehicles','impounded_by_name', 'VARCHAR(64) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('owned_vehicles','impounded_at', 'INT(11) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('owned_vehicles','impound_fee', 'INT(11) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('owned_vehicles','impound_fee_before', 'INT(11) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('owned_vehicles','impound_fee_after', 'INT(11) NOT NULL DEFAULT 0');
CALL izaap_add_column_if_missing('owned_vehicles','impound_release_at', 'INT(11) NULL DEFAULT NULL');
CALL izaap_add_column_if_missing('owned_vehicles','impound_prev_garage', 'VARCHAR(64) NULL DEFAULT NULL');
-- DROP PROCEDURE IF EXISTS `izaap_add_column_if_missing`;
SET FOREIGN_KEY_CHECKS = 1;Permissions
Example: Grant permission to an admin group
Example: Grant permission to a specific license
Last updated
