Capas y el puente
Cómo se sitúa AI Core entre los scripts - capas de integración, sustitutos y el puente ESX / QB / Qbox.
Capas de integración
Un script nunca llama a los exports de otro script para una tarea compartida. Llama a la lib, la lib llama a AI Core y AI Core reenvía al script que el servidor use para esa tarea. Cada capa elige su adaptador al iniciar (el panel de administración puede cambiarlo) y de nuevo cuando un candidato se inicia o se detiene.
| Capa | Lib | Adaptadores |
|---|---|---|
| Inventario | inventory | ai-inventory, ox_inventory, qb-inventory, tgiann-inventory y más |
| Llaves de vehículos | vehicleKeys | ai-vehiclekeys, qbx_vehiclekeys y otros |
| Dispatch | dispatch.alert | ai-policealert y scripts de alertas |
| Teléfono | phone | tgiann-phone, lb-phone |
| Clima y hora | world | la API de qb-weathersync (ai-weathersync, qb-weathersync, Renewed), cd_easytime; las pausas se cuentan por motivo |
| Prisión | prison | ai-prison, qb-prison |
| Apariencia | appearance | ai-appearance, tgiann-clothing |
| Médico | medical | ai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, ars_ambulancejob |
| Menú radial | radial | ai-radialmenu, qb-radialmenu, ox_lib |
| Gestos | gestures | ai-smallresources, tgiann-emotes |
| HUD | hud, keyHints | ai-hud, tgiann-lumihud |
| Horas de máxima actividad | isPrimeTime | tgiann-policealert, si no, las horas del panel |
Añadir un script a una capa es un archivo de adaptador y una línea en el registro.
El puente
ai-core hace provide de es_extended, qb-core y qbx_core y responde a sus API desde archivos Lua en bridge/:
- objetos core (
exports['qb-core']:GetCoreObject(),ESX = exports.es_extended:getSharedObject(), los eventos antiguos), exports de Qbox; - objetos de jugador (
xPlayer,Playerde QB) reflejados a partir de los eventos de cambio de AI Core, nunca preguntando a AI Core en cada lectura; PlayerDatadel cliente construido a partir del propio canal de datos de jugador de AI Core;- eventos del framework con los mismos argumentos y el mismo momento (
QBCore:Client:OnPlayerLoaded,esx:setJob...); - callbacks, objetos usables, comandos (listados en el panel), notificaciones, menús, avisos de texto y barras de progreso dibujados con la interfaz de AI Core;
- inclusiones de archivos (
@qb-core/shared/locale.lua,@es_extended/imports.lua,@qbx_core/modules/playerdata.lua).
El puente funciona sobre una copia de la parte Lua de ai-lib, así que las utilidades del framework (streaming, zonas, keybinds, progreso, límites de frecuencia) comparten el código de la lib.