Docs /Foltone Garage/Configuration
v2.0.0

Configuration — foltone_garage

Configuration is split across two files: Config.lua (general options) and config_garage.lua (garages, pounds, service vehicles).

Config.lua — General options

Framework

Config.Framework = "esx" -- "esx", "qbcore" or "qbx"
ValueFrameworkRequired dependencies
"esx"ESX Legacyes_extended, oxmysql
"qbcore"QBCoreqb-core, oxmysql
"qbx"QBXqbx_core, oxmysql

Locale

Config.Locale = "en" -- "en" or "fr"

Translations are located in locales/en.lua and locales/fr.lua. You can add your own language by creating a new file.

Config.MenuType = "nui" -- "nui" or "rageui"
ModeDescription
"nui"Modern HTML panel with 4 tabs (vehicles, store, pound, label)
"rageui"Classic RageUI menu with 3 sub-menus (vehicles, store, pound)

The "rageui" mode does not support custom vehicle labels.

Interaction type

Config.InteractionType = "ox_target" -- 5 options available
ModeDescriptionDependency
"ox_target"3D target via ox_targetox_target
"qb-target"3D target via qb-targetqb-target
"interact"3D target via interactinteract
"drawtext"Help text on screen with E keyNone
"marker"Floor marker with E keyNone

Interaction distance

Config.InteractionDistance = 2.5

Distance in meters to trigger interaction (drawtext and marker modes only).

Draw text (drawtext mode)

Config.DrawText = {
    label = "interact_label", -- locale key
}

Marker (marker mode)

Config.Marker = {
    type = 1,
    scale = vector3(1.0, 1.0, 0.5),
    color = { r = 59, g = 130, b = 246, a = 120 },
}
ParameterDescription
typeGTA marker type (1 = cylinder)
scaleMarker dimensions
colorRGBA color of the marker

PED

Config.Ped = {
    model = "a_m_y_business_03",
    scenario = "WORLD_HUMAN_STAND_IMPATIENT",
}
ParameterDescription
modelGarage manager PED model
scenarioPED animation (native GTA scenario)

Blip

Config.Blip = {
    enabled = true,
    sprite = 357,
    color = 3,
    scale = 0.7,
}
ParameterDescription
enabledEnable/disable map blips
spriteGTA blip sprite ID
colorGTA blip color ID
scaleBlip size

Pound system

Config.Pound = {
    basePrice = 500,
    pricePerHour = 100,
    maxPrice = 5000,
    minPrice = 200,
}
ParameterDescription
basePriceBase price to retrieve an impounded vehicle
pricePerHourAdditional amount per hour spent in the pound
maxPriceMaximum price cap for the pound fee
minPriceMinimum guaranteed price (never goes below this)

The price is calculated dynamically based on the time elapsed since impoundment.

Custom label

Config.Label = {
    maxLength = 30,
}
ParameterDescription
maxLengthMaximum allowed length for a vehicle label

config_garage.lua — Garages and pounds

Default garage names

ConfigGarage.defaultGarageCarName = "garage"
ConfigGarage.defaultGarageBoatName = "garage_bateau1"
ConfigGarage.defaultGaragePlaneName = "garage_plane1"
ConfigGarage.defaultGarageHeliName = "garage_heli1"

These names correspond to the garages where vehicles will be placed when stored from a garage with saveGarage = false.

Garage entry structure

{
    garageName = "garage",           -- unique identifier (lowercase, no spaces)
    garageLabel = "Downtown Garage", -- label shown in the menu
    saveGarage = true,               -- save vehicles to this garage in DB
    job = nil,                       -- required job (exclusive access for this job)
    job2 = nil,                      -- secondary job (gang / alternative job)
    annyJob = nil,                   -- restrict access to ANY grade of this job
    -- maxVehicles = 10,             -- vehicle limit (optional, comment out for unlimited)
    distanceStore = 25.0,            -- storage radius in meters
    positionMenu = vector3(x, y, z), -- PED / interaction position
    spawnVehPositions = {
        vector4(x, y, z, heading),   -- vehicle spawn positions
    },
    storeVeh = vector3(x, y, z),     -- vehicle storage zone
}
ParameterDescription
garageNameUnique garage identifier — must be unique if saveGarage = true
garageLabelName shown in the interface
saveGarageIf true, vehicles are associated with this garage in the DB
jobIf set, only players with this job can access the garage
job2Secondary job (useful for gangs or job duplicates)
annyJobRestricts access to any grade of this job (police, ambulance…)
maxVehiclesMax number of vehicles (optional — comment out for unlimited)
distanceStoreMaximum distance to store a vehicle from storeVeh
positionMenuPED / interaction point coordinates
spawnVehPositionsArray of spawn positions (heading included)
storeVehVehicle storage point

Service vehicles

For job garages, you can define service vehicles accessible from the Store tab (or the corresponding sub-menu in RageUI):

serviceVehicles = {
    { model = "police",  label = "Police Cruiser" },
    { model = "police2", label = "Police Buffalo" },
},

Service vehicles are only available to players with the required job. They are not saved to the database.

Custom blip color per garage

blipColor = 38,
color = {r = 20, g = 100, b = 80},
ParameterDescription
blipColorGTA blip color for this specific garage
colorRGB color of the indicator in the NUI interface

Vehicle types

Vehicles are organized into 4 categories:

KeyDescription
"car"Cars and motorcycles
"boat"Boats
"plane"Planes
"heli"Helicopters

Each type can be enabled or disabled:

["car"] = {
    enable = true,
    positionGarageList = { ... },
},

Adding a garage

Add an entry to the positionGarageList array of the desired type:

{
    garageName = "my_garage",
    garageLabel = "My New Garage",
    saveGarage = true,
    job = nil,
    job2 = nil,
    annyJob = nil,
    distanceStore = 25.0,
    positionMenu = vector3(x, y, z),
    spawnVehPositions = {
        vector4(x, y, z, 0.0),
    },
    storeVeh = vector3(x, y, z)
},

Pounds (poundList)

ConfigGarage.poundList = {
    ["car"] = {
        ["pound_car_1"] = {
            label = "Davis Pound",
            positionMenu = vector3(x, y, z),
            spawnVehPositions = { vector4(x, y, z, heading) },
        },
    },
    ["boat"] = { ... },
    ["plane"] = { ... },
    ["heli"] = { ... },
}
ParameterDescription
labelPound name shown in the interface
positionMenuPED / interaction point of the pound
spawnVehPositionsSpawn positions for retrieved vehicles

Adding a pound

Add an entry to the desired vehicle type array:

["pound_car_3"] = {
    label = "North Pound",
    positionMenu = vector3(x, y, z),
    spawnVehPositions = { vector4(x, y, z, 0.0) },
},

The key must be unique per vehicle type (e.g. "pound_car_3", "pound_boat_2").