> 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/systeme-de-notifications.md).

# Système de notifications

## 🔔 Système de notifications

**BSensei Vehicle Control** permet d’utiliser plusieurs systèmes de notifications selon les ressources installées sur ton serveur.

Le système actif se sélectionne dans `config.lua`, tandis que les intégrations personnalisées se trouvent dans `client/editable.lua`.

***

### 📁 Localisation des fichiers

La configuration des notifications se trouve ici :

```
BSensei_vehicle_control/config.lua
```

Les fonctions modifiables se trouvent ici :

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

Les messages affichés sont regroupés dans :

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

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

```
restart BSensei_vehicle_control
```

***

### ⚙️ Choisir le système de notifications

Dans `config.lua`, repère cette section :

```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
```

⚠️ Respecte exactement les majuscules, minuscules et tirets bas indiqués dans les exemples.

***

### 🟦 Notifications ESX

Le système utilisé par défaut est celui d’ESX Legacy :

```lua
Config.Notifications.System = 'esx'
```

Le script utilisera alors :

```lua
ESX.ShowNotification(message)
```

Aucune ressource supplémentaire n’est nécessaire.

Ordre conseillé dans le `server.cfg` :

```
ensure es_extended
ensure BSensei_vehicle_control
```

***

### 🔴 Notifications `ox_lib`

Pour utiliser les notifications de `ox_lib` :

```lua
Config.Notifications.System = 'ox_lib'
```

Vérifie également le nom de la ressource :

```lua
Config.Notifications.Resources.OxLib = 'ox_lib'
```

Ordre conseillé dans le `server.cfg` :

```
ensure ox_lib
ensure es_extended
ensure BSensei_vehicle_control
```

Le script transmet notamment :

```
Le titre
Le message
Le type de notification
La durée
La position
```

Exemple de configuration :

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

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

***

### 🟢 Notifications `okokNotify`

Pour utiliser `okokNotify` :

```lua
Config.Notifications.System = 'okokNotify'
```

Vérifie également le nom de la ressource :

```lua
Config.Notifications.Resources.OkOkNotify = 'okokNotify'
```

Ordre conseillé :

```
ensure okokNotify
ensure es_extended
ensure BSensei_vehicle_control
```

Le script utilisera une notification similaire à celle-ci :

```lua
exports['okokNotify']:Alert(
    'Vehicle Control',
    message,
    4500,
    'info'
)
```

***

### 🛠️ Système personnalisé

Pour connecter ton propre HUD ou système de notifications :

```lua
Config.Notifications.System = 'custom'
```

Ouvre ensuite :

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

Repère cette partie :

```lua
if system == 'custom' then
    -- Exemple :
    -- exports['mon_hud']:Notify(title, message, notificationType, duration)
    -- TriggerEvent('mon_hud:notify', title, message, notificationType, duration)

    ESX.ShowNotification(message)
    return
end
```

Remplace uniquement la notification ESX située dans cette section.

#### Exemple avec un export personnalisé

```lua
if system == 'custom' then
    exports['mon_hud']:Notify(
        title,
        message,
        notificationType,
        duration
    )

    return
end
```

#### Exemple avec un événement personnalisé

```lua
if system == 'custom' then
    TriggerEvent(
        'mon_hud:notify',
        title,
        message,
        notificationType,
        duration
    )

    return
end
```

⚠️ Modifie uniquement la partie `custom` afin de conserver les autres intégrations.

***

### 🏷️ Titre des notifications

Le titre affiché avec les systèmes compatibles se configure ici :

```lua
Config.Notifications.Title = 'Vehicle Control'
```

Exemple personnalisé :

```lua
Config.Notifications.Title = 'Gestion du véhicule'
```

Ce titre est principalement utilisé avec :

```
ox_lib
okokNotify
custom
```

Les notifications natives ESX n’affichent généralement pas de titre séparé.

***

### ⏱️ Durée d’affichage

La durée est exprimée en millisecondes :

```lua
Config.Notifications.Duration = 4500
```

Exemples :

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

Exemple avec une durée de six secondes :

```lua
Config.Notifications.Duration = 6000
```

***

### 📍 Position des notifications

Cette option est principalement utilisée avec `ox_lib` :

```lua
Config.Notifications.Position = 'top-right'
```

Positions courantes :

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

Exemple :

```lua
Config.Notifications.Position = 'bottom-right'
```

***

### 🎨 Types de notifications

Le script utilise différents types selon la situation :

```
inform
success
error
warning
```

#### `success`

Utilisé pour confirmer une activation réussie :

```
Ancre jetée
Stationnaire activé
Régulateur activé
Véhicule verrouillé
```

#### `inform`

Utilisé pour une désactivation ou une information simple :

```
Ancre relevée
Stationnaire désactivé
Régulateur désactivé
```

#### `warning`

Utilisé lorsque le joueur doit ralentir ou stabiliser son véhicule :

```
Bateau trop rapide
Hélicoptère trop rapide
Mouvement vertical trop important
```

#### `error`

Utilisé lorsqu’une action est impossible :

```
Aucun véhicule
Joueur non conducteur
Fonction indisponible
Néons non installés
```

Le fichier `client/editable.lua` adapte automatiquement certains types selon le système utilisé.

***

### 🌍 Modifier les messages

Les textes affichés dans les notifications ne se modifient pas dans `editable.lua`.

Ils sont regroupés dans :

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

Exemple :

```lua
anchorEnabled = "⚓ Ancre jetée."
```

Exemple personnalisé :

```lua
anchorEnabled = "⚓ Le bateau est maintenant ancré."
```

Autre exemple :

```lua
hoverEnabled = "🚁 Maintien stationnaire activé."
```

Exemple personnalisé :

```lua
hoverEnabled = "🚁 L'hélicoptère est désormais maintenu en position."
```

⚠️ Conserve les variables comme `%s` lorsqu’elles sont présentes.

***

### 🔧 Modifier le nom des ressources

Si une ressource possède un nom différent sur ton serveur, adapte cette partie :

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

Exemple avec un dossier `okokNotify-v2` :

```lua
Config.Notifications.Resources.OkOkNotify = 'okokNotify-v2'
```

Le nom doit correspondre exactement au dossier présent dans `resources`.

***

### 🔄 Système de secours automatique

Si le système sélectionné n’est pas démarré ou n’est pas reconnu, le script utilise automatiquement les notifications ESX.

Exemple :

```lua
Config.Notifications.System = 'ox_lib'
```

Si `ox_lib` n’est pas démarré, le message sera finalement affiché avec :

```lua
ESX.ShowNotification(message)
```

Ce système évite qu’une erreur de configuration bloque complètement les messages du script.

***

### ⚠️ Erreurs à éviter

* Ne renomme pas la fonction `BSenseiEditable.Notify`
* Ne supprime pas le fichier `client/editable.lua`
* Respecte l’écriture exacte de `ox_lib`
* Respecte l’écriture exacte de `okokNotify`
* Démarre la ressource sélectionnée avant Vehicle Control
* Ne sélectionne pas `custom` sans configurer sa section
* Ne modifie pas les événements internes du script
* Vérifie le nom exact des dossiers dans `Config.Notifications.Resources`
* Redémarre la ressource après chaque modification

***

### 🧪 Vérification des notifications

Après une modification, utilise :

```
restart BSensei_vehicle_control
```

Teste ensuite :

1. L’ouverture du menu hors d’un véhicule
2. Une fonction réservée au conducteur
3. L’ancre avec un bateau trop rapide
4. L’activation et la désactivation de l’ancre
5. L’activation du stationnaire
6. Le régulateur de vitesse
7. Le verrouillage du véhicule
8. L’utilisation des néons sur un véhicule non équipé

Vérifie également la console F8 si aucune notification n’apparaît.

***

### 🧰 Exemple avec `ox_lib`

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

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

Ordre conseillé :

```
ensure ox_lib
ensure es_extended
ensure BSensei_vehicle_control
```

***

➡️ **Étape suivante : Dépendances nécessaires**


---

# 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/systeme-de-notifications.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.
