> For the complete documentation index, see [llms.txt](https://docs.bhdscripts.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bhdscripts.com/scripts/bhd-garage/configuration.md).

# Configuration

This file controls client-side settings, affecting vehicle interactions, impounds, and other in-game features.

{% code title="config.lua" lineNumbers="true" %}

```lua
lib.locale()
Config = {
    Debug = { Prints = true, Zones = false},
    TimeForImpound = 3, -- Time in minutes for vehicle to be impounded
    CallVehicles = true, -- Call vehicles from different garages
    AutomaticlyStartEngine = true, -- Automaticly start engine when player enters the vehicle 
    JobBlipColor = 25, -- Color of the blip for the job garage
    TargetNPCDistance = 4, -- Target distance to open garage
    TargetCarDistance = 4, -- Target distance to store vehicle
    FriendCarSharing = true, -- Vehicle sharing
    VehicleTransfer = true, -- Vehicle transfering between players
    VehicleImagesInTheMenu = true, -- Show vehicle images in the garage menu
    DefaultGarageName = "San Andreas Ave",
    ImpoundsByType = {
        ["car"] = "Impound - City",
        ["boat"] = "Impound - Boats",
        ["air"] = "Impound - Planes",
    },
    SaveVehiclePropsInImpound
    DefaultImpoundName = "Impound - City",
    ImpoundShowOfficerName = true, -- Show officer name in impound window
    ImpoundPrice = 100, -- Price for impound form garage menu
    AutoImpound = {
        enabled = true,         -- Transfer vehicles to the impound if they are not found in the world and are not found in the garage.
        time = 4 * 60 * 1000,   -- How often to check for vehicles that need to be impounded.
    },
    VehiclesWithoutKeys = {
        [`bmx`] = true,
        [`bmxP2`] = true,
        [`cruiser`] = true,
        [`fixter`] = true,
        [`scorcher`] = true,
        [`tribike`] = true,
        [`tribike2`] = true,
        [`tribike3`] = true,
        [`iak_wheelchair`] = true,
        [`serv_electricscooter`] = true,
        [`paulblart`] = true,
        [`elektrovozitko_2`] = true,
        [`paulblartpd`] = true,
        [`elektrovozitko`] = true,
        [`PV_bmwe36`] = true,
        [`PV_rover`] = true,
        [`PV_urus`] = true,
        [`PV_sianr`] = true,
        [`PV_lgss`] = true,
        [`PV_jeep`] = true,
        [`PV_gtr`] = true,
        [`PV_dawn`] = true,
        [`PV_bugvr`] = true,
        [`PV_bugatti`] = true,
    },
    Creator = {
        NpcHash = "s_m_m_dockwork_01",
        DefaultBlip = {
            scale = 0.65,
            color = 3,
            carSprite = 357,
            airSprite = 360,
            boatSprite = 356,
        }
    },
    ImpoundDispatchCall = { -- Call when the player has confiscated vehicle and need officer to get the car out of the impound
        code = "10-58",
        jobs = {'police', 'sheriff', 'sahp'},
        blip = {
            scale = 0.65,
            color = 1,
            sprite = 369,
            name = locale("ui_impound_police_dispatch_blip_name"),
        }
    },
    Impound = {
        NpcAnim = true,
        NpcDriveCoords = vec3(408.81, -1637.90, 29.29),
        NpcHash = 's_m_m_dockwork_01',
        TimeDeleteVehicle = 15000,
        ProgressBarTime = 10000,
        Command = 'odtahnout',
        jobs = {'police', 'sheriff', 'sahp', 'lsfd'},
        anim = {
            clip = nil,
            dict = nil,
            scenario = 'WORLD_HUMAN_CLIPBOARD',
        }
    },
    Keys = {
        Toggle = true, -- Toggle the key system
        Distance = 7,
        NewKeyNPC = {
            {
                price = 5000,
                hash = 'a_m_y_beachvesp_02',
                anim = {
                    clip = nil,
                    dict = nil,
                    scenario = 'WORLD_HUMAN_SMOKING',
                },
                pos = vec4(48.6932,-1594.689,28.5978, 52.21),
                icon = 'fas fa-key',
                time = 30, -- seconds
                Blip = {
                    Sprite = 255,
                    Display = 4,
                    Scale = 0.81,
                    Colour = 0,
                    label = locale("locksmith_title"),
                    ShortRange = true,
                },
            },
        },
        ItemName = "carkeys",
        LockPick = {
            alarmTime = 15000,
            animDict = "anim@amb@clubhouse@tutorial@bkr_tut_ig3@",
            anim = "machinic_loop_mechandplayer",
            item = "lockpick",
            Dispatch = true,
        },
        HotWire = {
            Skills = {
                { { areaSize = 60, speedMultiplier = 1 }, { areaSize = 60, speedMultiplier = 0.5 } }, { '1', '2' }
            },
            animDict = "veh@std@ds@base",
            anim = "hotwire",
            item = "wire_cutters",
        },
    },
    VIN = {
        length = 10,
        allowedChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",
        check = {
            commandToggle = true,
            commandName = 'checkvin',
            targetToggle = true,
        },
        scratch = {
            toggle = true,
            npc = {
                {
                    price = 5000,
                    hash = 'a_m_y_beachvesp_02',
                    anim = {
                        clip = nil,
                        dict = nil,
                        scenario = 'WORLD_HUMAN_SMOKING',
                    },
                    pos = vec4(478.0636, -1311.9880, 29.2332, 29.9929),
                    icon = 'fas fa-key',
                    time = 5, -- In minutes
                    Blip = {
                        Sprite = 255,
                        Display = 4,
                        Scale = 0.81,
                        Colour = 0,
                        label = locale("garage_blip_scratch_vin"),
                        ShortRange = true,
                    },
                },
            }
        }
    },
    FakePlate = {
        Command = "plate",
        Distance = 5, -- How far the player can be to take off the plate
        Chance = 50, -- Chance that the lockpick will break after failed minigame
        Duration = 5, -- How long should progress bar take in seconds
        RemoveLockpick = false, -- If the lockpick should be removed after taking off the plate
        LockpickItem = "lockpick", -- Name of the lockpick item
        PlateItem = "plate", -- Name of the plate item
    }
}
```

{% endcode %}

#### **Key Settings**

* **Debug**: Enables debugging features.
  * `Prints`: Outputs debug information in the console.
  * `Zones`: Debugs garage zones.
* **TimeForImpound**: Sets how long before a vehicle is impounded (in minutes).
* **CallVehicles**: Allows calling vehicles from different garages.
* **AutomaticlyStartEngine**: Automatically starts the engine when entering a vehicle.
* **JobBlipColor**: Defines the blip color for job garages.
* **TargetNPCDistance**: The distance required to interact with garage NPCs.
* **TargetCarDistance**: The distance required to store a vehicle.
* **FriendCarSharing**: Enables sharing of vehicles with friends.
* **VehicleTransfer**: Allows transferring vehicles between players.
* **DefaultGarageName**: The default name for personal garages.

#### **Impound System**

* **ImpoundsByType**: Defines impound locations based on vehicle type.
* **DefaultImpoundName**: Sets the default impound name.
* **SaveVehiclePropsInImpound**: Sets if vehicle props should be saved when the vehicle is impounded so they can be restored. So you could take out not functioning vehicle
* **ImpoundPrice**: Sets the price for retrieving an impounded vehicle.
* **ImpoundShowOfficerName**: Displays officer names in the impound menu.
* **AutoImpound**: Automatically impounds vehicles left in the world.
  * `enabled`: Enables/disables automatic impound.
  * `time`: Frequency of impound checks (in milliseconds).

#### **Vehicles Without Keys**

A list of vehicles that do not require keys to be operated (e.g., bicycles, wheelchairs, certain emergency vehicles).

#### **Creator Settings**

Defines default NPCs and blips for garage creation.

* **NpcHash**: The NPC model used.
* **DefaultBlip**: Customization for blip appearance.

#### **Impound Dispatch System**

Handles notifications when a vehicle is impounded.

* **code**: Dispatch code for impound requests.
* **jobs**: Defines which jobs can request impound dispatch.
* **blip**: Customizes the dispatch blip.

#### **Impound Menu Settings**

* **NpcAnim**: Enables animations for impound NPCs.
* **NpcDriveCoords**: Coordinates where the NPC will drive impounded vehicles.
* **TimeDeleteVehicle**: Time (in milliseconds) before the impounded vehicle is deleted.
* **ProgressBarTime**: Time (in milliseconds) for progress bar during impound process.
* **Command**: The command used for impounding a vehicle.
* **Jobs**: Jobs that are allowed to impound vehicles.

#### **Key System**

* **Toggle**: Enables/disables the key system.
* **Distance**: Defines how far the player can be to lock/unlock the vehicle.
* **NewKeyNPC**: Settings for NPCs that provide new vehicle keys.
  * Includes price, location, animations, and blip settings.
* **LockPick**: Configures vehicle lockpicking.
  * `alarmTime`: Alarm trigger time.
  * `animDict` & `anim`: Defines lockpicking animations.
  * `item`: The required lockpicking tool.
  * `Dispatch`: Enables police alerts on failed attempts.
* **HotWire**: Configures hotwiring mechanics.
  * Defines skills, animations, and required tools.

#### **VIN System**

* **length**: VIN number length.
* **allowedChars**: Defines allowed characters in the VIN.
* **check**: Toggles commands for checking VIN numbers.
* **scratch**: Configures VIN scratching (removing identification).
  * Includes NPC settings, pricing, and locations.

#### **Fake Plate System**

* **Command**: The command to remove plates.
* **Distance**: The required distance for plate removal.
* **Chance**: The probability of breaking the lockpick.
* **Duration**: The time taken to remove a plate.
* **RemoveLockpick**: Whether the lockpick should be removed after failure.
* **LockpickItem**: The item required for plate removal.
* **PlateItem**: The item representing the fake plate.

***

📌 **Note:** Ensure that both `config.lua` and `config_s.lua` are properly configured before launching the resource to avoid issues.
