Le pont framework est la partie de TS-Lib qui masque les différences entre :
qb-core (qbcore)
qbx_core (qbox)
es_extended (esx)
- un mode standalone minimal
Au lieu de multiplier les if framework == 'qbcore' then ... elseif framework == 'esx' ..., vous appelez Bridge.Framework.* et TS-Lib route vers la bonne implémentation.
Statut et tests
Fonctionnement de la sélection
Valeurs prises en charge dans ts-lib/config.lua :
- Clés de framework :
qbcore, esx, qbox, standalone
- Mappées vers les noms de ressources via
Config.Data.Framework :
Quand Config.Framework = 'auto', TS-Lib parcourt ce tableau et prend la première ressource démarrée.
API côté client
Bridge.Framework.Client.PlayerData
Table de données joueur unifiée, remplie au chargement du joueur et synchronisée lors des changements de métier.
- QBCore / Qbox : basée sur
QBCore.Functions.GetPlayerData()
- ESX : basée sur les données métier de
xPlayer quand c’est possible
- Standalone : stub minimal (pas de système de métier)
Bridge.Framework.Client.Functions.GetPlayerJob()
Retourne :
true, jobTable en cas de succès
false, errorMessage si aucun métier n’est disponible (par ex. en standalone)
Bridge.Framework.Client.Functions.Notify(message, type?)
Helper de notification générique :
- QBCore / Qbox :
QBCore.Functions.Notify
- ESX :
ESX.ShowNotification ou repli sur une notification native simple
- Standalone : notification native simple
Événements client
Tous les frameworks pris en charge déclenchent les mêmes événements normalisés une fois le pont chargé :
ts-lib:client:onPlayerLoaded (playerData)
ts-lib:client:onPlayerUnloaded ()
ts-lib:client:onJobUpdated (job)
Vous pouvez les écouter directement, ou utiliser le système d’événements interne :
API côté serveur
Bridge.Framework.Server.Functions.GetPlayerJob(source)
Bridge.Framework.Server.Functions.GetPlayersByJobName(jobName, checkOnDuty?)
Bridge.Framework.Server.Functions.GetPlayers()
Retourne une liste de sources joueurs, via la méthode la plus adaptée à chaque framework :
- QBCore :
QBCore.Functions.GetPlayers()
- Qbox :
exports.qbx_core:GetQBPlayers()
- ESX :
ESX.GetPlayers() (ou GetPlayers() en secours)
- Standalone :
GetPlayers()
Bridge.Framework.Server.Functions.GetVehicleType(model)
Quand c’est possible, utilise les tables véhicule partagées du framework ; sinon retombe sur 'automobile'.
Événements serveur
Événements normalisés quel que soit le framework sous-jacent :
ts-lib:server:onPlayerLoaded (source)
ts-lib:server:onPlayerUnloaded (source?)
ts-lib:server:onJobUpdated (job)
Abonnement côté serveur via l’émetteur d’événements :
Notes par framework
QBCore / Qbox
- QBCore :
exports['qb-core']:GetCoreObject()
- Qbox :
exports['qbx_core']:GetCoreObject() et exports.qbx_core:GetQBPlayers()
Les métiers sont normalisés dans une structure du type :
ESX
- Utilise
exports['es_extended']:getSharedObject().
- Les ponts mappent les infos métier ESX sur les mêmes clés que les frameworks de style QB.
Standalone
Le mode standalone garde volontairement une surface minimale :
- Pas de système de métier (
GetPlayerJob renvoie une erreur).
GetPlayers() enveloppe simplement la native FiveM.
GetVehicleType retourne toujours 'automobile'.
Dernière modification le 22 juillet 2026