AI Core

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.

CoucheLibAdaptateurs
Inventaireinventoryai-inventory, ox_inventory, qb-inventory, tgiann-inventory et d’autres
Clés de véhiculevehicleKeysai-vehiclekeys, qbx_vehiclekeys et d’autres
Dispatchdispatch.alertai-policealert et scripts d’alerte
Téléphonephonetgiann-phone, lb-phone
Météo et heureworldl’API qb-weathersync (ai-weathersync, qb-weathersync, Renewed), cd_easytime ; pauses comptées par motif
Prisonprisonai-prison, qb-prison
Apparenceappearanceai-appearance, tgiann-clothing
Médicalmedicalai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, ars_ambulancejob
Menu radialradialai-radialmenu, qb-radialmenu, ox_lib
Gestesgesturesai-smallresources, tgiann-emotes
HUDhud, keyHintsai-hud, tgiann-lumihud
Heures de pointeisPrimeTimetgiann-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, Player de QB) reflétés à partir des événements de changement d’AI Core, jamais en interrogeant AI Core à chaque lecture ;
  • le PlayerData client 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.

Sur cette page