Couches et pont
Comment AI Core se place entre les scripts - couches d’intégration, remplaçants et le pont ESX / QB / Qbox.
Couches d’intégration
Un script n’appelle jamais les exports d’un autre script pour une tâche partagée. Il appelle la lib, la lib appelle AI Core, et AI Core transmet au script que le serveur utilise pour cette tâche. Chaque couche choisit son adaptateur au démarrage (le panneau d’administration peut forcer le choix) et à nouveau quand un candidat démarre ou s’arrête.
| Couche | Lib | Adaptateurs |
|---|---|---|
| Inventaire | inventory | ai-inventory, ox_inventory, qb-inventory, tgiann-inventory et d’autres |
| Clés de véhicule | vehicleKeys | ai-vehiclekeys, qbx_vehiclekeys et d’autres |
| Dispatch | dispatch.alert | ai-policealert et scripts d’alerte |
| Téléphone | phone | tgiann-phone, lb-phone |
| Météo et heure | world | l’API qb-weathersync (ai-weathersync, qb-weathersync, Renewed), cd_easytime ; pauses comptées par motif |
| Prison | prison | ai-prison, qb-prison |
| Apparence | appearance | ai-appearance, tgiann-clothing |
| Médical | medical | ai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, ars_ambulancejob |
| Menu radial | radial | ai-radialmenu, qb-radialmenu, ox_lib |
| Gestes | gestures | ai-smallresources, tgiann-emotes |
| HUD | hud, keyHints | ai-hud, tgiann-lumihud |
| Heures de pointe | isPrimeTime | tgiann-policealert, sinon les heures du panneau |
Ajouter un script à une couche, c’est un fichier d’adaptateur et une ligne dans le registre.
Le pont
ai-core fait un provide de es_extended, qb-core et qbx_core et répond à leurs API depuis des fichiers Lua dans bridge/ :
- les objets core (
exports['qb-core']:GetCoreObject(),ESX = exports.es_extended:getSharedObject(), les anciens événements), les exports Qbox ; - les objets joueur (
xPlayer,Playerde QB) reflétés à partir des événements de changement d’AI Core, jamais en interrogeant AI Core à chaque lecture ; - le
PlayerDataclient construit à partir du canal de données joueur propre à AI Core ; - les événements de framework avec les mêmes arguments et le même timing (
QBCore:Client:OnPlayerLoaded,esx:setJob...) ; - callbacks, objets utilisables, commandes (listées dans le panneau), notifications, menus, invites de texte et barres de progression dessinés avec l’interface d’AI Core ;
- les inclusions de fichiers (
@qb-core/shared/locale.lua,@es_extended/imports.lua,@qbx_core/modules/playerdata.lua).
Le pont tourne sur une copie du côté Lua d’ai-lib, donc les utilitaires de framework (streaming, zones, raccourcis clavier, progression, limites de fréquence) partagent le code de la lib.