Configuration Reference
All configuration options for ktx_garages in shared/config.lua.
Configuration Reference
All configuration lives in shared/config.lua under Config.GarageSystem.
General
Config.GarageSystem = {
debugMode = false, -- Print debug messages to F8 (client) and terminal (server)
debugMenu = false, -- Enable debug vehicle spawning and garage teleports
setIntoGarageOnRestart = false, -- Store vehicles back into their last garage on resource restart
language = "english", -- "english" | "french" | "german" (or custom file name)
persistVehicles = false, -- Vehicles stay in world permanently after leaving garage
framework = "esx", -- "esx" | "qb-core" | "qbox" | "ox" | "custom"
ESXMode = "legacy", -- "legacy" | "old" (only used when framework = "esx")
activityLogRetentionDays = 30, -- Days to keep activity log entries (auto-cleanup on startup)
screenBlur = true, -- Apply screen blur when opening garage menus
}Tip: For
persistVehiclesbehavior per framework, see the Persistence Guide.
Database
Maps ktx_garages to your framework's database tables. Each field tells the resource which column to read/write.
database = {
owned_vehicles = {
table = "player_vehicles", -- Table containing player vehicles
identifier = "citizenid", -- Column with the player identifier
vehicle = "mods", -- Column with serialized vehicle data (props/mods)
garage = "garage", -- Column storing which garage the vehicle is in
plate = "plate", -- Column with the license plate
stored = "state" -- Column tracking vehicle state (in garage or out)
},
users = {
table = "players", -- Players table
identifier = "citizenid", -- Player identifier column
position = "position" -- Column storing player position (JSON)
},
ktx_garages = "ktx_garages",
garage_definitions = "ktx_garages_builder"
}Note: QB-Core state values:
0= vehicle is out in the world,1= garaged,2= impound.
Builder
builder = {
enabled = true, -- Toggle the in-game garage builder
ace = "ktx_garages.builder", -- ACE permission required (set false to disable ACE check)
allowedGroups = { -- Framework groups that can use the builder
admin = true,
superadmin = true
},
allowEveryone = false, -- Allow all players to use the builder (overrides above)
defaultPreviewModel = "adder", -- Default ghost vehicle model in slot placement
defaultSalePercentage = 0.2, -- Fraction of price returned on sale (0.2 = 20%)
defaultFriendlyFire = false -- Allow player damage inside garages by default
},
builderCommand = "garages", -- Chat command to open builder toolsTip: Permission checks are layered. The builder grants access if ANY of these pass: ACE permission, framework group, or
allowEveryone.
Co-Ownership
coOwnership = {
maxCoOwners = 5, -- Maximum co-owners per garage
allowEntryWhenOwnerOffline = true, -- Co-owners can enter when the owner is offline
allowCoOwnerInvites = false, -- Co-owners can send guest invites
},Logging
UseOxlibLogger = false, -- Use ox_lib logger instead of Discord webhooks
discord = {
enable = true,
webhookURL = "", -- Your Discord webhook URL (keep secret)
username = "ktx_garages Logs",
color = 15844367, -- Embed color (decimal)
title = "Player log"
},Warning: The
discordblock andUseOxlibLoggerare server-only. They are stripped from client memory at startup to prevent cheater extraction.
NPCs
Garage seller NPCs that players can interact with to browse available garages.
npcactive = true, -- Enable NPC garage sellers
npcs = {
{
position = vector3(109.24, -636.58, 44.24),
heading = 71.00,
model = "csb_reporter", -- Ped model name
useDistance = 2.0, -- Interaction distance
blipColor = 69, -- Blip color ID
blipSprite = 369, -- Blip sprite ID
blipText = "Garage Seller" -- Blip label on map
},
},Add more entries to the npcs array for additional seller locations.
Vehicle Type Groups
Defines categories of vehicles based on GTA vehicle class IDs. Used by the type whitelist/blacklist system.
vehicleTypeGroups = {
car = { label = "Cars", types = {0, 5, 6}, icon = "car" },
bike = { label = "Motorcycles", types = {3, 7, 11}, icon = "motorcycle" },
bicycle = { label = "Bicycles", types = {12}, icon = "bicycle" },
plane = { label = "Planes", types = {1}, icon = "plane" },
heli = { label = "Helicopters", types = {8, 9}, icon = "helicopter" },
boat = { label = "Boats", types = {13, 15}, icon = "ship" },
train = { label = "Trains", types = {14}, icon = "train" },
}Each types array contains GTA vehicle class IDs. A vehicle's class determines which group it belongs to. You can add custom groups or rearrange class IDs.
Interiors
Available interiors for the garage builder. Add custom interiors to this array.
Config.GarageSystem.interiors = {
{
id = "imp_dt1_02_cargarage",
name = "Import/Export Downtown Garage",
shortName = "Downtown",
category = "CEO Garages",
position = vector3(-191.0133, -579.1428, 135.0)
},
-- ... more interiors
}Built-in interiors:
| Category | Interiors |
|---|---|
| CEO Garages | Downtown, Del Perro, Davis Quartz, La Mesa |
| Warehouses | Import/Export Warehouse |
| Apartments | 2 Car, 6 Car, 10 Car |
| Airports | Smuggler's Run Hangar |
| Casino | Casino Parking Garage, Casino Car Park |
To add a custom interior, append an entry with a unique id, the interior's position in the game world, and descriptive labels.