# Configuration

***

### 1. Configure `cl_config.lua`

In this section, you will configure the client-side configuration file `cl_config.lua`. Follow the instructions below to set it up according to your framework (ESX or QBcore).

{% tabs %}
{% tab title="cl\_config.lua" %}

```lua
Config = {}

Config.Header = {
    title = "RESMONSTUDIO",          -- Title displayed in the header of the UI.                      
    name = "Vehinspect"              -- The name of the system (used for identification within the header).
}

Config.Options = {
    Language = 'en',                 -- The default language for all messages and notifications. 'en' stands for English.
    UseNewEsx = true,                -- Whether to use the newer version of ESX (EssentialMode). Set to `true` to enable.
    UseVersionCheck = true,          -- Whether to perform version checks for resource compatibility (set to `true` to enable).
    
    Overextended = {
        Enabled = false,              -- Enable or disable Overextended support for features like OxTarget.
        UseOXInventory = false,       -- Enable integration with OX Inventory system for interactions.
        UseOxTarget = false,          -- Enable or disable OxTarget integration for interactive elements.
        TargetIcon = "fa-solid fa-wrench",  -- The icon shown when interacting with vehicles or objects.
        TargetText = "Inspect Vehicle",    -- The text shown during interaction with a vehicle.
    },
    
    SharedObject = {
        client = "esx:getSharedObject",  -- The shared object used for client-side communication with ESX.
        server = "esx:getSharedObject"   -- The shared object used for server-side communication with ESX.
    },

    TUV = {                           -- Configuration settings related to the Technical Vehicle Inspection (TUV).
        MinDays = 1,                  -- The minimum number of days a vehicle can have before needing inspection.
        MaxDays = 30,                 -- The maximum number of days a vehicle’s inspection is valid.
        Givetuv = {                   -- Settings for giving a vehicle TUV (inspection certificate).
            allowed = { ["police"] = true, ["mechanic"] = true },  -- Jobs allowed to issue TUV (e.g., police and mechanic).
            UseMoney = { enabled = true, cost = 500 }   -- Whether giving TUV requires a monetary fee. If enabled, the cost is 500.
        },
        Removetuv = {                 -- Settings for removing a vehicle’s TUV (inspection certificate).
            allowed = { ["police"] = true, ["mechanic"] = true },  -- Jobs allowed to remove TUV (e.g., police and mechanic).
            UseMoney = { enabled = true, cost = 1500 }  -- Whether removing TUV requires a monetary fee. If enabled, the cost is 1500.
        },
        Locktuv = {                   -- Settings for locking a vehicle’s TUV (making it unchangeable).
            allowed = { ["police"] = true },  -- Only 'police' job can lock the TUV.
            UseMoney = { enabled = true, cost = 5000 }  -- Whether locking the TUV requires a fee. If enabled, the cost is 5000.
        },
        Relocktuv = {                 -- Settings for relocking a vehicle’s TUV (preventing changes again).
            allowed = { ["police"] = true },  -- Only 'police' job can relock the TUV.
            UseMoney = { enabled = true, cost = 10000 }  -- Whether relocking the TUV requires a fee. If enabled, the cost is 10000.
        }
    },
    
    UseItem = {
        enabled = true,                -- Enable or disable the item-based interaction for vehicle inspection.
        item = 'inspect',              -- The name of the item that triggers the inspection action when used.
        allowed = {                    -- Job restrictions for using the item to inspect vehicles.
            enabled = true,            -- Whether job-based restrictions are enabled.
            ["police"] = true,         -- Allow police job to use the inspection item.
            ["mechanic"] = true        -- Allow mechanic job to use the inspection item.
        },
    },

    Command = {
        enabled = true,                -- Enable or disable the command-based interaction for vehicle inspection.
        command = "inspect",           -- The command that triggers vehicle inspection when typed in chat.
        key = "F9",                    -- The keyboard key binding to trigger the inspection command.
        allowed = {                    -- Job-based restrictions for using the command.
            enabled = true,            -- Whether job restrictions are enabled for the command.
            ["police"] = true,         -- Allow the police job to use the command.
            ["mechanic"] = true        -- Allow the mechanic job to use the command.
        }
    },
    
    Positions = {
        [1] = {
            enabled = true,             -- Enable or disable the position for vehicle inspection.
            coords = vector3(-68.24, -1333.27, 29.28),  -- Coordinates in the game world where the inspection position is located.
            allowed = {                 -- Job restrictions for interacting at this position.
                enabled = true,         -- Whether job-based restrictions apply to this position.
                Useallowjob = { ["police"] = true, ["mechanic"] = true }  -- Which jobs are allowed to interact at this position.
            },

            ped = { 
                enabled = false,         -- Set to true if a ped (NPC) should be spawned at this position.
                model = "a_m_m_hasjew_01", -- The model (character) of the ped to spawn at this position.
                heading = 186.21          -- The heading (direction) the ped will face.
            },
    
            entity = {
                enabled = false,         -- Set to true if an object (prop) should be spawned at this position.
                object = "prop_office_desk_01", -- The model of the object (prop) to spawn at this position.
            },
            
            marker = {                   -- Settings for a marker that appears at the position.
                enabled = true,          -- Whether the marker is visible at this position.
                type = 21,               -- The type of marker (ID).
                drawDistance = 15.0,     -- The distance at which the marker will be visible to the player.
                scale = vector3(1.0, 1.0, 1.0),  -- The scale (size) of the marker.
                color = { red = 255, green = 0, blue = 0, alpha = 100 },  -- The color and transparency of the marker.
                moveUpAndDown = false,   -- Whether the marker should move up and down.
                rotate = true            -- Whether the marker should rotate.
            },
            blip = {                     -- Settings for the blip on the map at this position.
                enabled = true,          -- Whether the blip is visible on the map.
                sprite = 446,            -- The sprite ID for the blip icon.
                scale = 0.7,             -- The size of the blip on the map.
                color = 27,              -- The color of the blip.
                display = 4,             -- The display mode of the blip (e.g., when in range).
                shortRange = true,       -- Whether the blip is visible only when close to the player.
                text = 'TüV Inspection'  -- The text label for the blip.
            }
        },
    }
}

-- Function to show a help notification
function ShowHelpNotify(msg, E)
    ESX.ShowHelpNotification(msg, E)
    -- exports["rs_hud"]:HelpNotify(msg, E)
end  

-- Function to show a notification
function Notify(msg)
    TriggerEvent('esx:showNotification', msg)
    -- TriggerEvent('rs_notify', 'Vehicle - Inspection', msg , 'info', 5000)
end
```

{% endtab %}
{% endtabs %}

***

### 2. Configure `sv_config.lua`

In this section, you will configure the server-side configuration file `sv_config.lua`. Follow the instructions below to set it up according to your framework (ESX or QBcore)

{% tabs %}
{% tab title="sv\_config.lua" %}

```lua
CFG = {}

CFG.Webhooks = {
    Color = "16777215",  -- White color (hexadecimal value for white is 16777215)
    Author = "ResmonStudio",  -- This is the author name displayed in the webhook message
    AuthorURL = "https://i.ibb.co/PZDN7K4/logo.png",  -- Link to the logo image of ResmonStudio
    ThumbURL = "https://i.ibb.co/PZDN7K4/logo.png",  -- The logo is used as the thumbnail in the webhook
    Username = "RS | Logs",  -- This name will appear as the username of the webhook sender
    Webhooks = {
        inspection = {'PUT_YOUR_WEBHOOK_HERE'},  -- Replace this with your actual inspection webhook URL
    }
}

-- Function to remove a specified amount of money from a player's account
function xPlayerRemoveMoney(xPlayer, amount)
    xPlayer.removeMoney(amount)
end

-- Function to get the current money balance of a player
function xPlayerGetMoney(xPlayer)
    return xPlayer.getMoney()
end
```

{% endtab %}
{% endtabs %}

***

### 3. Select Languages in `sh_languages.lua`

In the `sh_languages.lua` file, you can manage all available language options. To set your preferred language and its corresponding translations, navigate to `cl_config.lua` and specify your desired locale. This allows you to customize the different languages.

{% tabs %}
{% tab title="sh\_languages.lua" %}

```lua
Config.Languages = {
    ["en"] = { -- English
        ["HelpNotify"] = "Press [E] to interact",
        ["AccessDenied"] = "You are not allowed to access this position.",
        ["JobDenied"] = "Your job cannot perform this action.",
        ["InvalidTuvDays"] = "Please enter a valid number of days (%d-%d).",
        ["MissingAdditionalInfo"] = "Please provide a reason in the Additional Info field.",
        ["NoVehiclesSelected"] = "No vehicle selected.",
        ["ActionSuccess"] = "You have successfully made the %s action for vehicle %s and paid %d.",
        ["ActionSuccessNoMoney"] = "You have successfully made the %s action for vehicle %s.",
        ["NotEnoughMoney"] = "You don't have enough money for this action. You need %d.",
        ["VehicleLocked"] = "Vehicle is locked and cannot be given TÜV.",
        ["Givetuv"] = "Your vehicle with plate %s has been given TÜV certification.",
        ["Removetuv"] = "The TÜV certification for your vehicle with plate %s has been removed.",
        ["Locktuv"] = "The TÜV status of your vehicle with plate %s has been locked.",
        ["Relocktuv"] = "The TÜV status of your vehicle with plate %s has been relocked.",
        ["Reason"] = "Reason",
        ["InspectionDate"] = "Inspection Date"
    },
    ["de"] = { -- German
        ["HelpNotify"] = "Drücke [E] um zu interagieren",
        ["AccessDenied"] = "Du darfst diesen Standort nicht betreten.",
        ["JobDenied"] = "Dein Job kann diese Aktion nicht durchführen.",
        ["InvalidTuvDays"] = "Bitte geben Sie eine gültige Anzahl an Tagen (%d-%d) ein.",
        ["MissingAdditionalInfo"] = "Bitte geben Sie einen Grund im Feld 'Zusätzliche Info' an.",
        ["NoVehiclesSelected"] = "Kein Fahrzeug ausgewählt.",
        ["ActionSuccess"] = "Du hast die %s Aktion für Fahrzeug %s erfolgreich durchgeführt und %d bezahlt.",
        ["ActionSuccessNoMoney"] = "Du hast die %s Aktion für Fahrzeug %s erfolgreich durchgeführt.",
        ["NotEnoughMoney"] = "Du hast nicht genug Geld für diese Aktion. Du benötigst %d.",
        ["VehicleLocked"] = "Das Fahrzeug ist gesperrt und kann nicht mit TÜV versehen werden.",
        ["Givetuv"] = "Ihr Fahrzeug mit Kennzeichen %s hat eine TÜV-Zertifizierung erhalten.",
        ["Removetuv"] = "Die TÜV-Zertifizierung für Ihr Fahrzeug mit Kennzeichen %s wurde entfernt.",
        ["Locktuv"] = "Der TÜV-Status Ihres Fahrzeugs mit Kennzeichen %s wurde gesperrt.",
        ["Relocktuv"] = "Der TÜV-Status Ihres Fahrzeugs mit Kennzeichen %s wurde entsperrt.",
        ["Reason"] = "Grund",
        ["InspectionDate"] = "Prüfungsdatum"
    },
    ["cz"] = { -- Czech
        ["HelpNotify"] = "Stiskněte [E] pro interakci",
        ["AccessDenied"] = "Nemáte přístup na tuto pozici.",
        ["JobDenied"] = "Vaše práce tuto akci nemůže provést.",
        ["InvalidTuvDays"] = "Zadejte platný počet dní (%d-%d).",
        ["MissingAdditionalInfo"] = "Uveďte důvod v poli Další informace.",
        ["NoVehiclesSelected"] = "Nebylo vybráno žádné vozidlo.",
        ["ActionSuccess"] = "Úspěšně jste provedli akci %s pro vozidlo %s a zaplatili %d.",
        ["ActionSuccessNoMoney"] = "Úspěšně jste provedli akci %s pro vozidlo %s.",
        ["NotEnoughMoney"] = "Nemáte dostatek peněz pro tuto akci. Potřebujete %d.",
        ["VehicleLocked"] = "Vozidlo je zamčeno a nelze mu přiřadit TÜV.",
        ["Givetuv"] = "Vaše vozidlo s SPZ %s získalo TÜV certifikaci.",
        ["Removetuv"] = "Certifikace TÜV vašeho vozidla s SPZ %s byla odstraněna.",
        ["Locktuv"] = "TÜV status vašeho vozidla s SPZ %s byl uzamčen.",
        ["Relocktuv"] = "TÜV status vašeho vozidla s SPZ %s byl znovu odemknut.",
        ["Reason"] = "Důvod",
        ["InspectionDate"] = "Datum kontroly"
    },
    ["fr"] = { -- French
        ["HelpNotify"] = "Appuyez sur [E] pour interagir",
        ["AccessDenied"] = "Vous n'êtes pas autorisé à accéder à cet emplacement.",
        ["JobDenied"] = "Votre emploi ne peut pas effectuer cette action.",
        ["InvalidTuvDays"] = "Veuillez entrer un nombre valide de jours (%d-%d).",
        ["MissingAdditionalInfo"] = "Veuillez fournir une raison dans le champ Informations supplémentaires.",
        ["NoVehiclesSelected"] = "Aucun véhicule sélectionné.",
        ["ActionSuccess"] = "Vous avez réussi à effectuer l'action %s pour le véhicule %s et payé %d.",
        ["ActionSuccessNoMoney"] = "Vous avez réussi à effectuer l'action %s pour le véhicule %s.",
        ["NotEnoughMoney"] = "Vous n'avez pas assez d'argent pour cette action. Vous avez besoin de %d.",
        ["VehicleLocked"] = "Le véhicule est verrouillé et ne peut pas recevoir le TÜV.",
        ["Givetuv"] = "Votre véhicule avec la plaque %s a reçu la certification TÜV.",
        ["Removetuv"] = "La certification TÜV de votre véhicule avec la plaque %s a été retirée.",
        ["Locktuv"] = "Le statut TÜV de votre véhicule avec la plaque %s a été verrouillé.",
        ["Relocktuv"] = "Le statut TÜV de votre véhicule avec la plaque %s a été reverrouillé.",
        ["Reason"] = "Raison",
        ["InspectionDate"] = "Date d'inspection"
    },
    ["es"] = { -- Spanish
        ["HelpNotify"] = "Presiona [E] para interactuar",
        ["AccessDenied"] = "No tienes permiso para acceder a esta ubicación.",
        ["JobDenied"] = "Tu trabajo no puede realizar esta acción.",
        ["InvalidTuvDays"] = "Por favor, ingresa un número válido de días (%d-%d).",
        ["MissingAdditionalInfo"] = "Por favor, proporciona una razón en el campo Información Adicional.",
        ["NoVehiclesSelected"] = "No se seleccionó ningún vehículo.",
        ["ActionSuccess"] = "Has realizado con éxito la acción %s para el vehículo %s y pagado %d.",
        ["ActionSuccessNoMoney"] = "Has realizado con éxito la acción %s para el vehículo %s.",
        ["NotEnoughMoney"] = "No tienes suficiente dinero para esta acción. Necesitas %d.",
        ["VehicleLocked"] = "El vehículo está bloqueado y no puede recibir TÜV.",
        ["Givetuv"] = "Tu vehículo con matrícula %s ha recibido la certificación TÜV.",
        ["Removetuv"] = "Se ha eliminado la certificación TÜV de tu vehículo con matrícula %s.",
        ["Locktuv"] = "El estado TÜV de tu vehículo con matrícula %s ha sido bloqueado.",
        ["Relocktuv"] = "El estado TÜV de tu vehículo con matrícula %s ha sido re-bloqueado.",
        ["Reason"] = "Razón",
        ["InspectionDate"] = "Fecha de inspección"
    },
    ["pt"] = { -- Portuguese
        ["HelpNotify"] = "Pressione [E] para interagir",
        ["AccessDenied"] = "Você não tem permissão para acessar esta posição.",
        ["JobDenied"] = "Seu trabalho não pode executar esta ação.",
        ["InvalidTuvDays"] = "Por favor, insira um número válido de dias (%d-%d).",
        ["MissingAdditionalInfo"] = "Por favor, forneça um motivo no campo Informações Adicionais.",
        ["NoVehiclesSelected"] = "Nenhum veículo selecionado.",
        ["ActionSuccess"] = "Você realizou com sucesso a ação %s para o veículo %s e pagou %d.",
        ["ActionSuccessNoMoney"] = "Você realizou com sucesso a ação %s para o veículo %s.",
        ["NotEnoughMoney"] = "Você não tem dinheiro suficiente para esta ação. Você precisa de %d.",
        ["VehicleLocked"] = "O veículo está trancado e não pode receber TÜV.",
        ["Givetuv"] = "Seu veículo com placa %s recebeu a certificação TÜV.",
        ["Removetuv"] = "A certificação TÜV do seu veículo com placa %s foi removida.",
        ["Locktuv"] = "O status TÜV do seu veículo com placa %s foi bloqueado.",
        ["Relocktuv"] = "O status TÜV do seu veículo com placa %s foi re-bloqueado.",
        ["Reason"] = "Razão",
        ["InspectionDate"] = "Data de inspeção"
    },
    ["pl"] = { -- Polish
        ["HelpNotify"] = "Naciśnij [E], aby się interaktywnie",
        ["AccessDenied"] = "Nie masz dostępu do tej pozycji.",
        ["JobDenied"] = "Twoja praca nie może wykonać tej akcji.",
        ["InvalidTuvDays"] = "Proszę podać prawidłową liczbę dni (%d-%d).",
        ["MissingAdditionalInfo"] = "Proszę podać powód w polu Dodatkowe Informacje.",
        ["NoVehiclesSelected"] = "Nie wybrano żadnego pojazdu.",
        ["ActionSuccess"] = "Pomyślnie wykonano akcję %s dla pojazdu %s i zapłacono %d.",
        ["ActionSuccessNoMoney"] = "Pomyślnie wykonano akcję %s dla pojazdu %s.",
        ["NotEnoughMoney"] = "Nie masz wystarczająco dużo pieniędzy na tę akcję. Potrzebujesz %d.",
        ["VehicleLocked"] = "Pojazd jest zablokowany i nie może otrzymać TÜV.",
        ["Givetuv"] = "Twój pojazd z rejestracją %s otrzymał certyfikat TÜV.",
        ["Removetuv"] = "Certyfikat TÜV dla twojego pojazdu z rejestracją %s został usunięty.",
        ["Locktuv"] = "Status TÜV twojego pojazdu z rejestracją %s został zablokowany.",
        ["Relocktuv"] = "Status TÜV twojego pojazdu z rejestracją %s został ponownie zablokowany.",
        ["Reason"] = "Powód",
        ["InspectionDate"] = "Data inspekcji"
    },
    ["tr"] = { -- Turkish
        ["HelpNotify"] = "Etkileşim için [E] tuşuna basın",
        ["AccessDenied"] = "Bu konuma erişiminiz yok.",
        ["JobDenied"] = "Mesleğiniz bu işlemi gerçekleştiremez.",
        ["InvalidTuvDays"] = "Lütfen geçerli bir gün sayısı girin (%d-%d).",
        ["MissingAdditionalInfo"] = "Lütfen Ek Bilgi alanına bir neden girin.",
        ["NoVehiclesSelected"] = "Hiçbir araç seçilmedi.",
        ["ActionSuccess"] = "%s işlemini araç %s için başarıyla gerçekleştirdiniz ve %d ödediniz.",
        ["ActionSuccessNoMoney"] = "%s işlemini araç %s için başarıyla gerçekleştirdiniz.",
        ["NotEnoughMoney"] = "Bu işlem için yeterli paranız yok. %d gerekiyor.",
        ["VehicleLocked"] = "Araç kilitli ve TÜV verilemez.",
        ["Givetuv"] = "Plakası %s olan aracınıza TÜV sertifikası verildi.",
        ["Removetuv"] = "Plakası %s olan aracınızın TÜV sertifikası kaldırıldı.",
        ["Locktuv"] = "Plakası %s olan aracınızın TÜV durumu kilitlendi.",
        ["Relocktuv"] = "Plakası %s olan aracınızın TÜV durumu tekrar kilitlendi.",
        ["Reason"] = "Sebep",
        ["InspectionDate"] = "Muayene Tarihi"
    }
}
```

{% endtab %}
{% endtabs %}


---

# 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://resmonstudio.gitbook.io/resmonstudio-or-documentations/assets/rs_vehinspect/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.
