# Configuration

Here is the full `config.lua` for **Imperium Garages.**

```lua
--[[
  ___ __  __ ___  ___ ___ ___ _   _ __  __    ___  ___ ___ ___ ___ _____ ___ 
 |_ _|  \/  | _ \| __| _ \_ _| | | |  \/  |  / __|/ __| _ \_ _| _ \_   _/ __|
  | || |\/| |  _/| _||   /| || |_| | |\/| |  \__ \ (__|   /| ||  _/ | | \__ \
 |___|_|  |_|_|  |___|_|_\___|\___/|_|  |_|  |___/\___|_|_\___|_|   |_| |___/
                                                                           
  TEBEX   : https://imperium-scripts.tebex.io
  GITBOOK : https://imperiumscripts.gitbook.io/imperium-scripts/
  DISCORD : https://discord.gg/u5TxHBjQdS
--]]

Config = {}
Locales = {}

-- ═══════════════════════════════════════════════════════════════
-- FRAMEWORK & SYSTEMS
-- Set to 'auto' for automatic detection or specify manually
-- ═══════════════════════════════════════════════════════════════


Config.Locale = 'en'                -- 'en', 'fr', 'es', 'pt', 'de', 'it'

Config.Framework = 'auto'           -- 'auto', 'ESX', 'QBCore'
Config.InventorySystem = 'auto'     -- 'auto', 'ox_inventory', 'qb-inventory', 'qs-inventory', 'esx_inventory'
Config.NotificationSystem = 'auto'  -- 'auto', 'ox_lib', 'esx', 'qbcore', 'okokNotify', 'mythic'
Config.TargetSystem = 'auto'        -- 'auto', 'ox_target', 'qb-target', 'qtarget'
Config.InteractionType = 'target'   -- 'target' , 'marker' , 'textui' (use text UI (exports['is-textui']))

-- NPC Settings (for Target System)
Config.NPC = {
    model = 'cs_bankman', -- Model of the NPC
    scenario = 'WORLD_HUMAN_CLIPBOARD', -- Animation scenario (optional)
}

-- TextUI Settings
Config.TextUI = {
    openGarage = '[E] Open Garage',
    storeVehicle = '[E] Store Vehicle',
    impound = '[E] Retrieve Impounded Vehicle'
} 

-- ═══════════════════════════════════════════════════════════════
-- ECONOMY & COSTS
-- ═══════════════════════════════════════════════════════════════

Config.Currency = '$'
Config.UseBankMoney = true -- If true, takes money from bank. If false, cash.

Config.Costs = {
    StoreVehicle = 0,         -- Cost to store a vehicle (usually free)
    RetrieveVehicle = 50,     -- Cost to take out a vehicle
    ImpoundRetrieval = 1500,  -- Base cost to retrieve from impound
    ImpoundWaitTime = 3600,   -- Time in seconds before a vehicle is free (1 hour)
    ImpoundMaxPrice = 5000,   -- Maximum price to pay to retrieve IMMEDIATELY
    PricePerHour = 250,       -- Additional cost per hour added to the base price
    ImpoundMuliplier = 1.0,   -- Multiplier for impound cost based on vehicle value (if applicable)
}

Config.ImpoundCommand = {
    Enabled = true,
    Command = 'impound',
    Job = 'police',
    MaxDuration = 24, -- Hours
    Durations = {
        {label = '1 Hour', value = 1},
        {label = '2 Hours', value = 2},
        {label = '6 Hours', value = 6},
        {label = '12 Hours', value = 12},
        {label = '24 Hours', value = 24},
    }
}

-- ═══════════════════════════════════════════════════════════════
-- GARAGE CONFIGURATION
-- ═══════════════════════════════════════════════════════════════

-- Default visual settings for markers (if Config.InteractionType = 'marker')
Config.Marker = {
    type = 36,
    r = 255, g = 0, b = 0, a = 100,
    scale = {x = 1.0, y = 1.0, z = 1.0}
}

Config.Garages = {
    -- PUBLIC GARAGES
    ['legion_square'] = {
        label = 'Legion Square',
        type = 'public',
        entrance = vector3(215.09, -805.17, 30.81),
        spawnPoints = {
            vector4(216.84, -802.02, 30.78, 69.82), 
            vector4(218.09, -799.42, 30.76, 66.17), 
            vector4(219.29, -797.23, 30.75, 65.4), 
            vector4(219.59, -794.44, 30.75, 69.35), 
            vector4(220.63, -792.03, 30.75, 63.76), 
            vector4(206.81, -798.35, 30.99, 248.53)
        },
        storePoints = { vector3(215.09, -805.17, 30.81) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['islington_south'] = {
        label = 'Islington South',
        type = 'public',
        entrance = vector3(273.0, -343.85, 44.91),
        spawnPoints = { vector4(270.75, -340.51, 44.92, 342.03) },
        storePoints = { vector3(273.0, -343.85, 44.91) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['grove_street'] = {
        label = 'Grove Street',
        type = 'public',
        entrance = vector3(14.66, -1728.52, 29.3),
        spawnPoints = { vector4(23.93, -1722.9, 29.3, 310.58) },
        storePoints = { vector3(14.66, -1728.52, 29.3) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['mirror_park'] = {
        label = 'Mirror Park',
        type = 'public',
        entrance = vector3(1032.84, -765.1, 58.18),
        spawnPoints = { vector4(1023.2, -764.27, 57.96, 319.66) },
        storePoints = { vector3(1032.84, -765.1, 58.18) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['beach'] = {
        label = 'Beach',
        type = 'public',
        entrance = vector3(-1248.69, -1425.71, 4.32),
        spawnPoints = { vector4(-1244.27, -1422.08, 4.32, 37.12) },
        storePoints = { vector3(-1248.69, -1425.71, 4.32) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['spa'] = {
        label = 'Spa',
        type = 'public',
        entrance = vector3(4237.81, 7965.13, 97.78),
        spawnPoints = { vector4(4230.75, 7971.96, 97.87, 149.85) },
        storePoints = { vector3(4237.81, 7965.13, 97.78) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['great_ocean_highway'] = {
        label = 'Great Ocean Highway',
        type = 'public',
        entrance = vector3(-2961.58, 375.93, 15.02),
        spawnPoints = { vector4(-2964.96, 372.07, 14.78, 86.07) },
        storePoints = { vector3(-2961.58, 375.93, 15.02) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['sandy_south'] = {
        label = 'Sandy South',
        type = 'public',
        entrance = vector3(217.33, 2605.65, 46.04),
        spawnPoints = { vector4(216.94, 2608.44, 46.33, 14.07) },
        storePoints = { vector3(217.33, 2605.65, 46.04) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['sandy_north'] = {
        label = 'Sandy North',
        type = 'public',
        entrance = vector3(1878.44, 3760.1, 32.94),
        spawnPoints = { vector4(1880.14, 3757.73, 32.93, 215.54) },
        storePoints = { vector3(1878.44, 3760.1, 32.94) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['north_vinewood_blvd'] = {
        label = 'North Vinewood Blvd',
        type = 'public',
        entrance = vector3(365.21, 295.65, 103.46),
        spawnPoints = { vector4(364.84, 289.73, 103.42, 164.23) },
        storePoints = { vector3(365.21, 295.65, 103.46) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['grapeseed'] = {
        label = 'Grapeseed',
        type = 'public',
        entrance = vector3(1713.06, 4745.32, 41.96),
        spawnPoints = { vector4(1710.64, 4746.94, 41.95, 90.11) },
        storePoints = { vector3(1713.06, 4745.32, 41.96) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['paleto_bay'] = {
        label = 'Paleto Bay',
        type = 'public',
        entrance = vector3(107.32, 6611.77, 31.98),
        spawnPoints = { vector4(110.84, 6607.82, 31.86, 265.28) },
        storePoints = { vector3(107.32, 6611.77, 31.98) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },

    ['garage_usedcars'] = {
        label = 'Garage Imperium Motors',
        type = 'public',
        entrance =vector4(1195.925293, 2726.914307, 37.991211, 266.456696),
        spawnPoints = {
            vector4(1202.386841, 2726.083496, 37.991211, 263.622070), 
            vector4(-1550.44, 811.84, 184.92, 110.71),
            vector4(-1551.86, 814.29, 184.92, 106.65) 
        },
        storePoints = {vector3(1202.386841, 2726.083496, 37.991211) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.0, label = 'Garage' }
    },
    ['garage_ath'] = {
        label = 'Garage Ath',
        type = 'public',
        entrance = vector3(-1522.48, -546.10, 33.19),
        spawnPoints = {
            vector4(-1523.68, -550.12, 33.25, 218.45),
            vector4(-1526.33, -551.95, 33.31, 225.72),
            vector4(-1529.18, -553.55, 33.37, 221.95) 
        },
        storePoints = { vector3(-1522.48, -546.10, 33.19) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },
    ['garage_paleto_center'] = {
        label = 'Garage Paleto Center',
        type = 'public',
        entrance = vector3(-121.45, 6279.94, 31.29),
        spawnPoints = {
            vector4(-129.92, 6286.37, 31.35, 45.92),
            vector4(-131.84, 6284.04, 31.35, 48.23),
            vector4(-134.22, 6281.46, 31.35, 43.95) 
        },
        storePoints = { vector3(-121.45, 6279.94, 31.29) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' }
    },


    -- JOB SPAWNERS
    ['mechanic'] = {
        label = 'Mechanic',
        type = 'job',
        job = 'mechanic',
        entrance = vector3(-125.63, -392.82, 37.27),
        spawnPoints = { vector4(-134.10, -406.80, 37.27, 158.20) },
        storePoints = { vector3(-125.63, -392.82, 37.27) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' },
        availableVehicles = {
            { model = 'flatbed', label = 'Flatbed', grade = 0, livery = 2, type = 'car' }
        }
    },
    ['ambulance_station'] = {
        label = 'Hopital Ambulancier',
        type = 'job',
        job = 'ambulance',
        entrance = vector3(-479.39, -1012.19, 24.29),
        spawnPoints = {
            vector4(-464.57, -1017.38, 24.29, 358.91),
            vector4(-458.44, -1017.18, 24.29, 3.65),
            vector4(-452.86, -1017.20, 24.29, 1.16),
            vector4(-447.20, -1016.27, 24.29, 360.00)
        },
        storePoints = { vector3(-479.39, -1012.19, 24.29) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' },
        availableVehicles = {
            { model = 'roadrunnerambulance', label = 'Roadrunner Ambulance', grade = 0, livery = 1, type = 'car' },
            { model = 'equatormug', label = 'BF Equator MUG', grade = 0, livery = 1, type = 'car' },
            { model = 'mug90cx', label = 'Vulcar 90CX MUG', grade = 0, livery = 1, type = 'car' },
            { model = 'mugodyssey', label = 'BF Odyssey MUG', grade = 0, livery = 1, type = 'car' }
        }
    },
    ['police_station'] = {
        label = 'Police Station',
        type = 'job',
        job = 'police',
        entrance = vector3(-432.06, -490.95, 14.43),
        spawnPoints = {
            vector4(-434.43, -489.20, 14.42, 356.16),
            vector4(-438.32, -488.90, 14.42, 353.47),
            vector4(-442.08, -488.23, 14.42, 348.93),
            vector4(-446.10, -487.85, 14.42, 355.15)
        },
        storePoints = { vector3(-432.06, -490.95, 14.43) },
        blip = { enabled = true, id = 830, color = 0, scale = 0.7, label = 'Garage' },
        availableVehicles = {
            { model = 'police', label = 'Police', grade = 0, livery = 1, type = 'car' },
            { model = 'police2', label = 'Police 2', grade = 2, livery = 3, type = 'car' },
            { model = 'buffalo', label = 'Buffalo', grade = 0, livery = 1, type = 'car' },
        }
    },
    ['impound_lot'] = {
        label = 'Imperium impound',
        type = 'depot', -- Special type for retrieving lost/impounded cars
        
        entrance = vector3(409.2, -1623.0, 29.3),
        spawnPoints = {
            vector4(401.0, -1632.0, 29.3, 230.0)
        },
        storePoints = {}, -- You can't store cars at impound usually
        
        blip = {
            enabled = true,
            id = 67,
            color = 47,
            scale = 0.8,
            label = 'Impound'
        }
    }
}

-- ═══════════════════════════════════════════════════════════════
-- VEHICLE PROPS & SAVING
-- ═══════════════════════════════════════════════════════════════

-- Intervals to auto-save vehicle stats (fuel, body, engine) while driving
Config.AutoSaveInterval = 60000 -- 1 minute

-- Minimum health values to consider a vehicle "broken"
Config.EngineDamageThreshold = 100.0 -- If engine health is below this, it might not start
Config.BodyDamageThreshold = 100.0

-- ═══════════════════════════════════════════════════════════════
-- PHOTO STUDIO SETTINGS
-- ═══════════════════════════════════════════════════════════════
Config.PhotoStudio = {
    enabled = true,
    coords = vector4(-73.57, -822.04, 285.00, 103.97), -- Example: Maze bank tower
    camOffset = vector3(-2.85, 4.00, 0.72), -- Closer to vehicle (Zoomed in)
    pointAtOffset = vector3(0.0, 0.0, 0.0), -- Where camera looks (center of car)
    screenshot = true, -- Auto-take screenshot with screenshot-basic
    quality = 0.4, -- Lower quality for smaller file size (JPG)
    delay = 5.0, -- Delay in seconds before taking the photo (allows texture loading)
    
    -- Vehicle Color in Photo Studio:
    -- 'random' = Random RGB Color
    -- {255, 0, 0} = Red (RGB)
    -- 111 = White (Game Color Index)
    -- 27 = Red (Game Color Index)
    color = 'random' 
}

Config.Debug = false                -- Enable/disable debug prints

```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://imperiumscripts.gitbook.io/imperium-scripts/scripts/imperium-used-cars-dealerships/configuration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
