# 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.


---

# 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://docs.bhdscripts.com/scripts/bhd-garage/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.
