AI Core

Camadas e a ponte

Como o AI Core fica entre os scripts - camadas de integração, substitutos e a ponte ESX / QB / Qbox.

Camadas de integração

Um script nunca chama os exports de outro script para uma tarefa compartilhada. Ele chama a lib, a lib chama o AI Core, e o AI Core encaminha para o script que o servidor roda para aquela tarefa. Cada camada escolhe seu adaptador na inicialização (o painel de administração pode substituir a escolha) e de novo quando um candidato inicia ou para.

CamadaLibAdaptadores
Inventárioinventoryai-inventory, ox_inventory, qb-inventory, tgiann-inventory e mais
Chaves de veículosvehicleKeysai-vehiclekeys, qbx_vehiclekeys e outros
Dispatchdispatch.alertai-policealert e scripts de alerta
Celularphonetgiann-phone, lb-phone
Clima e horaworlda API do qb-weathersync (ai-weathersync, qb-weathersync, Renewed), cd_easytime; pausas contadas por motivo
Prisãoprisonai-prison, qb-prison
Aparênciaappearanceai-appearance, tgiann-clothing
Médicomedicalai-death, qbx_medical, qb-ambulancejob, esx_ambulancejob, ars_ambulancejob
Menu radialradialai-radialmenu, qb-radialmenu, ox_lib
Gestosgesturesai-smallresources, tgiann-emotes
HUDhud, keyHintsai-hud, tgiann-lumihud
Horário nobreisPrimeTimetgiann-policealert, senão o horário do painel

Adicionar um script a uma camada é um arquivo de adaptador e uma linha no registro.

A ponte

O ai-core faz provide de es_extended, qb-core e qbx_core e responde às APIs deles a partir de arquivos Lua em bridge/:

  • core objects (exports['qb-core']:GetCoreObject(), ESX = exports.es_extended:getSharedObject(), os eventos legados), exports do Qbox;
  • player objects (xPlayer, Player do QB) espelhados a partir dos eventos de mudança do AI Core, nunca perguntando ao AI Core a cada leitura;
  • PlayerData do cliente montado a partir do próprio canal de dados de jogador do AI Core;
  • eventos de framework com os mesmos argumentos e o mesmo momento (QBCore:Client:OnPlayerLoaded, esx:setJob...);
  • callbacks, itens usáveis, comandos (listados no painel), notificações, menus, avisos de texto e barras de progresso desenhados com a UI do AI Core;
  • inclusões de arquivos (@qb-core/shared/locale.lua, @es_extended/imports.lua, @qbx_core/modules/playerdata.lua).

A ponte roda sobre uma cópia do lado Lua do ai-lib, então os helpers de framework (streaming, zonas, keybinds, progresso, limites de taxa) compartilham o código da lib.

Nesta página