> For the complete documentation index, see [llms.txt](https://bsensei-script.gitbook.io/bsensei-script-documentation-officiel-fivem/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://bsensei-script.gitbook.io/bsensei-script-documentation-officiel-fivem/bsensei-vehicle-control-controle-complet-des-vehicules/configuration.md).

# Configuration

## ⚙️ Configuration complète du script

Le fichier `config.lua` permet de personnaliser le fonctionnement de **BSensei Vehicle Control**.

Tu peux modifier les commandes, les touches, le régulateur, l’ancre des bateaux, le stationnaire des hélicoptères, les néons, les notifications et l’apparence générale de l’interface.

***

### 📁 Localisation du fichier

Le fichier de configuration se trouve ici :

```
BSensei_vehicle_control/config.lua
```

Après chaque modification, redémarre la ressource :

```
restart BSensei_vehicle_control
```

***

### 🌍 Langue du script

La langue active se sélectionne avec :

```lua
Config.Locale = 'fr'
```

Langues incluses :

```
fr
en
```

#### Français

```lua
Config.Locale = 'fr'
```

#### Anglais

```lua
Config.Locale = 'en'
```

Les traductions se trouvent dans :

```
BSensei_vehicle_control/shared/locales.lua
```

***

### 🔔 Système de notifications

Cette section permet de choisir le système de notifications utilisé par le script :

```lua
Config.Notifications = {
    System = 'esx',
    Title = 'Vehicle Control',
    Duration = 4500,
    Position = 'top-right',

    Resources = {
        ESX = 'es_extended',
        OxLib = 'ox_lib',
        OkOkNotify = 'okokNotify'
    }
}
```

Systèmes disponibles :

```
esx
ox_lib
okokNotify
custom
```

#### `System`

Sélectionne le système utilisé :

```lua
System = 'esx'
```

Exemple avec `ox_lib` :

```lua
System = 'ox_lib'
```

Exemple avec `okokNotify` :

```lua
System = 'okokNotify'
```

Pour connecter un système personnel :

```lua
System = 'custom'
```

L’intégration personnalisée se réalise dans :

```
BSensei_vehicle_control/client/editable.lua
```

***

#### `Title`

Titre affiché dans les notifications compatibles :

```lua
Title = 'Vehicle Control'
```

Exemple personnalisé :

```lua
Title = 'Gestion du véhicule'
```

***

#### `Duration`

Durée d’affichage des notifications en millisecondes :

```lua
Duration = 4500
```

Exemples :

```
3000 = 3 secondes
4500 = 4,5 secondes
6000 = 6 secondes
```

***

#### `Position`

Position utilisée principalement avec `ox_lib` :

```lua
Position = 'top-right'
```

Positions courantes :

```
top
top-right
top-left
bottom
bottom-right
bottom-left
center-right
center-left
```

***

#### `Resources`

Cette partie définit le nom exact des ressources utilisées :

```lua
Resources = {
    ESX = 'es_extended',
    OxLib = 'ox_lib',
    OkOkNotify = 'okokNotify'
}
```

Modifie ces valeurs uniquement si les dossiers portent un autre nom sur ton serveur.

***

### 🎮 Ouverture du menu

Cette section configure la commande et la touche du menu principal :

```lua
Config.OpenMenu = {
    Command = 'vehiclemenu',
    DefaultKey = 'F5'
}
```

#### Commande

```lua
Command = 'vehiclemenu'
```

La commande utilisée sera :

```
/vehiclemenu
```

Exemple personnalisé :

```lua
Command = 'vehicule'
```

La nouvelle commande sera :

```
/vehicule
```

***

#### Touche par défaut

```lua
DefaultKey = 'F5'
```

Les joueurs peuvent modifier cette touche dans :

```
Paramètres FiveM → Assignation des touches → FiveM
```

💡 Changer cette valeur modifie uniquement la touche proposée par défaut aux nouveaux joueurs.

***

### ⚓ Configuration de l’ancre

Cette section contrôle le système d’ancrage des bateaux et jet-skis :

```lua
Config.Anchor = {
    Command = 'ancre',
    DefaultKey = 'G',
    MaxSpeed = 8.0,
    FreezeJetSkis = true,
    FreezeAllBoats = false,

    ForceFreezeModels = {
        `seashark`,
        `seashark2`,
        `seashark3`
    }
}
```

***

#### Commande de l’ancre

```lua
Command = 'ancre'
```

Commande utilisée en jeu :

```
/ancre
```

***

#### Touche de l’ancre

```lua
DefaultKey = 'G'
```

Cette touche fonctionne uniquement lorsque le joueur se trouve dans un bateau compatible.

Elle ne déclenche aucune action Vehicle Control dans une voiture.

***

#### Vitesse maximale

```lua
MaxSpeed = 8.0
```

La valeur est exprimée en kilomètres par heure.

Le joueur doit rouler à moins de cette vitesse pour pouvoir jeter l’ancre.

Exemple plus strict :

```lua
MaxSpeed = 3.0
```

Exemple plus permissif :

```lua
MaxSpeed = 15.0
```

***

#### Immobilisation des jet-skis

```lua
FreezeJetSkis = true
```

* `true` : les jet-skis sont totalement immobilisés
* `false` : seule l’ancre native GTA est utilisée

Les jet-skis peuvent dériver avec la physique native de GTA. Il est donc conseillé de conserver cette option sur `true`.

***

#### Immobilisation de tous les bateaux

```lua
FreezeAllBoats = false
```

* `true` : tous les bateaux sont complètement figés lorsqu’ils sont ancrés
* `false` : seuls les modèles configurés sont figés

💡 Il est conseillé de conserver cette option sur `false` afin de garder un comportement plus naturel pour les gros bateaux.

***

#### Modèles forcés

```lua
ForceFreezeModels = {
    `seashark`,
    `seashark2`,
    `seashark3`
}
```

Cette liste contient les modèles devant être complètement immobilisés.

Pour ajouter un autre véhicule maritime :

```lua
ForceFreezeModels = {
    `seashark`,
    `seashark2`,
    `seashark3`,
    `dinghy`
}
```

⚠️ Utilise le nom technique du modèle FiveM.

***

### 🚁 Configuration du stationnaire

Cette section contrôle le maintien stationnaire des hélicoptères :

```lua
Config.Hover = {
    Command = 'stationnaire',
    DefaultKey = 'H',
    MaxActivationSpeed = 70.0,
    MaxVerticalSpeed = 12.0,
    LockHeading = true,
    HardLock = true
}
```

***

#### Commande du stationnaire

```lua
Command = 'stationnaire'
```

Commande utilisée :

```
/stationnaire
```

***

#### Touche du stationnaire

```lua
DefaultKey = 'H'
```

Cette touche fonctionne uniquement dans un hélicoptère.

Elle ne déclenche aucune action Vehicle Control lorsqu’un joueur se trouve dans une voiture.

***

#### Vitesse maximale d’activation

```lua
MaxActivationSpeed = 70.0
```

La valeur est exprimée en kilomètres par heure.

L’hélicoptère doit être en dessous de cette vitesse pour activer le stationnaire.

Exemple plus réaliste :

```lua
MaxActivationSpeed = 40.0
```

***

#### Vitesse verticale maximale

```lua
MaxVerticalSpeed = 12.0
```

Cette valeur limite la vitesse de montée ou de descente lors de l’activation.

Si l’hélicoptère monte ou descend trop rapidement, le joueur devra d’abord le stabiliser.

Exemple plus strict :

```lua
MaxVerticalSpeed = 6.0
```

***

#### Verrouillage de l’orientation

```lua
LockHeading = true
```

* `true` : l’orientation de l’hélicoptère est conservée
* `false` : l’appareil peut pivoter pendant le stationnaire

***

#### Verrouillage renforcé

```lua
HardLock = true
```

* `true` : la position est maintenue de manière ferme
* `false` : le stationnaire utilise un maintien plus souple

Il est conseillé de conserver cette option sur `true` pour éviter que l’hélicoptère perde progressivement de l’altitude.

***

### 💜 Configuration des néons

Cette section contrôle la détection et les effets lumineux :

```lua
Config.Neons = {
    StateBagKey = 'neonInstalled',

    Effects = {
        static = true,
        pulse = true,
        breathe = true,
        rainbow = true,
        strobe = true,
        scanner = true,
        frontBack = true
    },

    PulseDelay = 420,
    StrobeDelay = 90,
    ScannerDelay = 150,
    FrontBackDelay = 260,
    RainbowDelay = 55,
    BreatheDelay = 45
}
```

***

#### Détection des néons installés

```lua
StateBagKey = 'neonInstalled'
```

Cette valeur correspond au state bag utilisé pour savoir si les néons ont réellement été installés sur le véhicule.

Ton script de customisation doit définir cette valeur sur `true`.

Exemple avec l’export fourni :

```lua
exports['BSensei_vehicle_control']:SetNeonInstalled(vehicle, true)
```

Pour retirer les néons :

```lua
exports['BSensei_vehicle_control']:SetNeonInstalled(vehicle, false)
```

⚠️ Sans cette intégration, le menu peut indiquer que les néons ne sont pas installés.

***

### 🌈 Effets disponibles

Chaque effet peut être activé ou désactivé indépendamment :

```lua
Effects = {
    static = true,
    pulse = true,
    breathe = true,
    rainbow = true,
    strobe = true,
    scanner = true,
    frontBack = true
}
```

#### Effet fixe

```lua
static = true
```

Conserve la couleur actuellement installée sur le véhicule.

#### Pulsation

```lua
pulse = true
```

Allume et éteint les néons à intervalles réguliers.

#### Respiration

```lua
breathe = true
```

Crée une transition lumineuse plus douce.

#### Arc-en-ciel

```lua
rainbow = true
```

Change automatiquement la couleur des néons.

#### Stroboscope

```lua
strobe = true
```

Crée un clignotement rapide.

#### Balayage

```lua
scanner = true
```

Active successivement chaque côté du véhicule.

#### Avant et arrière

```lua
frontBack = true
```

Alterne entre les néons avant et arrière.

Pour désactiver un effet :

```lua
strobe = false
```

***

### ⏱️ Vitesse des effets

Les délais sont exprimés en millisecondes :

```lua
PulseDelay = 420
StrobeDelay = 90
ScannerDelay = 150
FrontBackDelay = 260
RainbowDelay = 55
BreatheDelay = 45
```

Une valeur plus petite rend l’effet plus rapide.

Une valeur plus grande rend l’effet plus lent.

#### Exemple de stroboscope plus lent

```lua
StrobeDelay = 180
```

#### Exemple d’arc-en-ciel plus rapide

```lua
RainbowDelay = 30
```

⚠️ Évite les valeurs extrêmement basses afin de ne pas créer un effet trop agressif ou inutilement gourmand.

***

### 🔒 Verrouillage des véhicules

Cette section contrôle le bouton de verrouillage :

```lua
Config.VehicleLock = {
    Enabled = true,
    AllowPassengers = false
}
```

#### Activation

```lua
Enabled = true
```

* `true` : le verrouillage est disponible
* `false` : la fonction est désactivée

***

#### Autorisation des passagers

```lua
AllowPassengers = false
```

* `false` : seul le conducteur peut verrouiller le véhicule
* `true` : les passagers peuvent également utiliser cette fonction

Il est conseillé de conserver cette option sur `false`.

***

### 🏎️ Régulateur de vitesse

Cette section configure le limiteur de vitesse :

```lua
Config.SpeedLimiter = {
    Enabled = true,
    Minimum = 10,
    Maximum = 250,
    Default = 80
}
```

#### Activation

```lua
Enabled = true
```

* `true` : régulateur disponible
* `false` : fonction désactivée

***

#### Vitesse minimale

```lua
Minimum = 10
```

Le joueur ne pourra pas sélectionner une vitesse inférieure à 10 km/h.

***

#### Vitesse maximale

```lua
Maximum = 250
```

Le joueur ne pourra pas sélectionner une vitesse supérieure à 250 km/h.

Exemple pour un serveur plus réaliste :

```lua
Maximum = 180
```

***

#### Vitesse proposée par défaut

```lua
Default = 80
```

Cette vitesse est présélectionnée lors de l’ouverture du menu.

La valeur doit rester comprise entre `Minimum` et `Maximum`.

***

### 🎨 Apparence de l’interface

Cette section contient les valeurs visuelles principales :

```lua
Config.UI = {
    DefaultScale = 1.0,
    DefaultOpacity = 0.96,
    DefaultColor = '#d10bd1',
    DefaultRadius = 22,

    DefaultPosition = {
        x = 50,
        y = 50
    }
}
```

***

#### Taille de l’interface

```lua
DefaultScale = 1.0
```

Exemples :

```
0.80 = 80 %
1.00 = 100 %
1.20 = 120 %
```

***

#### Opacité

```lua
DefaultOpacity = 0.96
```

Exemples :

```
1.00 = totalement opaque
0.80 = légèrement transparent
0.50 = très transparent
```

***

#### Couleur principale

```lua
DefaultColor = '#d10bd1'
```

La couleur utilise un code hexadécimal HTML.

Exemples :

```
#d10bd1 = violet
#2ecc71 = vert
#3498db = bleu
#e74c3c = rouge
#f1c40f = jaune
```

***

#### Arrondi des panneaux

```lua
DefaultRadius = 22
```

La valeur est exprimée en pixels.

Une valeur plus élevée donne des panneaux plus arrondis.

***

#### Position de départ

```lua
DefaultPosition = {
    x = 50,
    y = 50
}
```

Les coordonnées sont exprimées en pixels depuis le coin supérieur gauche de l’écran.

Les joueurs peuvent ensuite déplacer l’interface et sauvegarder leur propre position.

Les préférences sont enregistrées localement avec le système KVP de FiveM.

***

### 🧪 Mode debug

```lua
Config.Debug = false
```

* `false` : fonctionnement normal
* `true` : informations supplémentaires dans les consoles

Active-le uniquement pendant les tests :

```lua
Config.Debug = true
```

Une fois les vérifications terminées :

```lua
Config.Debug = false
```

⚠️ Il est conseillé de laisser le debug désactivé sur un serveur en production.

***

### 🧰 Exemple de configuration complète

```lua
Config = {}

Config.Locale = 'fr'

Config.Notifications = {
    System = 'esx',
    Title = 'Vehicle Control',
    Duration = 4500,
    Position = 'top-right',

    Resources = {
        ESX = 'es_extended',
        OxLib = 'ox_lib',
        OkOkNotify = 'okokNotify'
    }
}

Config.OpenMenu = {
    Command = 'vehiclemenu',
    DefaultKey = 'F5'
}

Config.Anchor = {
    Command = 'ancre',
    DefaultKey = 'G',
    MaxSpeed = 8.0,
    FreezeJetSkis = true,
    FreezeAllBoats = false,

    ForceFreezeModels = {
        `seashark`,
        `seashark2`,
        `seashark3`
    }
}

Config.Hover = {
    Command = 'stationnaire',
    DefaultKey = 'H',
    MaxActivationSpeed = 70.0,
    MaxVerticalSpeed = 12.0,
    LockHeading = true,
    HardLock = true
}

Config.Neons = {
    StateBagKey = 'neonInstalled',

    Effects = {
        static = true,
        pulse = true,
        breathe = true,
        rainbow = true,
        strobe = true,
        scanner = true,
        frontBack = true
    },

    PulseDelay = 420,
    StrobeDelay = 90,
    ScannerDelay = 150,
    FrontBackDelay = 260,
    RainbowDelay = 55,
    BreatheDelay = 45
}

Config.VehicleLock = {
    Enabled = true,
    AllowPassengers = false
}

Config.SpeedLimiter = {
    Enabled = true,
    Minimum = 10,
    Maximum = 250,
    Default = 80
}

Config.UI = {
    DefaultScale = 1.0,
    DefaultOpacity = 0.96,
    DefaultColor = '#d10bd1',
    DefaultRadius = 22,

    DefaultPosition = {
        x = 50,
        y = 50
    }
}

Config.Debug = false
```

***

### ⚠️ Erreurs à éviter

* Ne supprime pas `Config = {}`
* Conserve les virgules entre les différentes valeurs
* Garde les guillemets autour des textes
* N’utilise pas une vitesse minimale supérieure à la vitesse maximale
* Ne supprime pas les accents graves autour des modèles de véhicules
* Vérifie le nom exact des ressources de notifications
* N’active pas un système non installé
* Ne modifie pas `StateBagKey` sans modifier également le script de customisation
* Évite les délais de néons extrêmement faibles
* Laisse `Config.Debug` sur `false` en production
* Redémarre la ressource après chaque modification

***

➡️ **Étape suivante : Traductions**


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://bsensei-script.gitbook.io/bsensei-script-documentation-officiel-fivem/bsensei-vehicle-control-controle-complet-des-vehicules/configuration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
