Configuration

Professional configuration guide for the Taintless Vehicle Shop system. Complete documentation for system configuration and customization options.

Documentation Sections


System Configuration (Customize Table)

Global system parameters and operational settings.

Customize = {
    Locale = 'en',
    Framework = nil,
    NotifySystem = nil,
    NotifyStyle = 'top-center',
    TestDriveTime = 35,
    Currency = 'USD',
    DebugMessage = false,

    Finance = {
        Command = 'vfinance',
    },

    Client = {
        SetUI = function(value) -- ... end,
        GiveKeys = function(plate, vehicle, type) -- ... end,
    }
}

Locale

Determines the language for the UI.

  • Values: 'en', 'tr', 'de', 'es', 'fr', 'bg', 'cs', 'it', 'pt' etc.

Framework

Specifies your server's framework.

  • Values: nil (for auto-detection), 'QBCore', 'ESX', 'Qbox'.

NotifySystem

Selects the notification system.

  • Values: nil (for auto-detection), 'ox_lib'.

NotifyStyle

Defines the on-screen position for notifications.

  • Values: 'top-left', 'top-center', 'bottom-right', etc.

TestDriveTime

Sets the duration of test drives in seconds.

  • Value: 35 (in seconds).

Currency

Sets the currency symbol used throughout the shop.

  • Values: 'USD', 'EUR', 'GBP', etc.

DebugMessage

Enables or disables debug prints in the console.

  • Values: true or false.

Finance.Command

The chat command for players to check their vehicle financing status.

  • Value: 'vfinance'.

Client.SetUI

A client-side function to manage UI visibility (e.g., hide the HUD) when the shop is open.

SetUI = function(value) -- true: hide, false: show
    if GetResourceState('uz_PureHud') == 'started' then
        exports['uz_PureHud']:SetHudVisibility(value)
    end
end,

Client.GiveKeys

A client-side function that handles giving vehicle keys to a player after a purchase or for a test drive. Configure this to match your server's key system.

GiveKeys = function(plate, vehicle, type) -- type: 'buy' or 'testdrive'
    if GetResourceState('qb-vehiclekeys') == 'started' then
        TriggerEvent("vehiclekeys:client:SetOwner", plate)
    end
end

PlateFormat

Custom license plate format configuration.

PlateFormat = '1AA111AA'
  • Format Options:

    • 1: Number (0-9)

    • A: Letter (A-Z)

    • Example: '1AA111AA' generates plates like 2AB345CD

    • Example: 'AA1111' generates plates like AB1234


Dealership Management (Customize.DealershipLocations)

Individual dealership configuration and operational parameters.

name

Dealership identification and map blip label.

name = 'Premium Deluxe Motorsport',

categories

Available vehicle categories. Must correspond to Customize.Vehicles keys.

categories = {'sports', 'super', 'muscle'},

job

Job-based access control for dealership.

job = 'cardealer', -- Optional: Restricts dealership access to specific job
  • Configuration:

    • Set to job name for restricted access

    • Remove or set to nil for public access

    • Supports multiple dealerships with different job requirements

coords

Dealership coordinate configuration.

  • openShowroom: vector3 - Dealership menu access point

  • showroomVehicleSpawn: vector3 - Showroom vehicle display location

  • buyVehicleSpawn: vector4 - Purchase vehicle spawn location

  • testDriveSpawn: vector4 - Test drive vehicle spawn location

  • alternativeSpawns: {vector4, ...} - Secondary spawn locations

blip

Map marker configuration.

  • hide: false

  • id: 326 (Marker identifier)

  • color: 3 (Marker color)

  • scale: 0.6 (Marker scale)

interactType & drawtextType

User interaction configuration.

  • interactType: 'default' (marker), 'target' (target system)

  • drawtextType: 'default' (native text display)

setMarker

Marker rendering function for showroom location.

setMarker = function(coords)
    DrawMarker(21, coords.x, coords.y, coords.z, ... )
end,

interaction

Showroom vehicle interaction system.

interaction = {
    enabled = true, -- Global interaction control
    engine = { enabled = true, icon = 'fa-solid fa-gear' },
    boot = { enabled = true, icon = 'fa-solid fa-box' },
    bonnet = { enabled = true, icon = 'fa-solid fa-car-battery' },
    doors = { enabled = true, icon = 'fa-solid fa-door-closed' },
    lights = { enabled = true, icon = 'fa-solid fa-lightbulb' },
},

customRoom

Virtual showroom configuration.

  • enabled: true - Virtual room activation

  • image: '1.gif' - Background image (webp, jpg, png, gif)

  • roomDimensions: {...} - Room size parameters

  • Wall: {...} - Wall visibility configuration

colourOptions

Vehicle color configuration system.

colourOptions = {
    { hex = '#000000', index = 0 }, -- Black
    { hex = '#e81416', index = 27 }, -- Red
},

finance

Dealership financing configuration.

  • paymentCount: Total installment quantity

  • downPaymentRate: Initial payment percentage (e.g., 0.2 for 20%)

  • interestRate: Applied interest rate (e.g., 0.05 for 5%)

  • paymentIntervalHours: Payment frequency (in-game hours)

  • repoGracePeriodHours: Repossession grace period

camera

Showroom camera system configuration.

  • distance, height, angle, fov: Camera positioning parameters

  • sensitivityX, sensitivityY: Input sensitivity settings

  • min/maxDistance, min/maxHeight: Camera movement constraints


Vehicle Configuration

Vehicle category management and inventory configuration.

Customize.CategoryLabels

Vehicle category display configuration.

Customize.CategoryLabels = {
    ['sports'] = 'Sports Cars',
    ['sedans'] = 'Sedans',
    ['super'] = 'Super Cars',
}

Customize.Vehicles

Complete vehicle inventory configuration.

Customize.Vehicles = {
    ['super'] = { -- Category identifier
        {
            name = 'Adder',      -- Display name
            brand = 'Truffade',  -- Manufacturer
            model = 'adder',     -- Spawn model
            price = 86065,       -- Base price
            hash = `adder`,      -- Model hash
        },
    },
}

Configuration Note: Vehicle additions require entry in appropriate category. New categories require CategoryLabels and Vehicles configuration.

Last updated

Was this helpful?