AI Core
Referência da API

Eventos e estado

Os eventos que o ai-core e os scripts ai-* disparam, com seus dados, os state bags que eles escrevem e os eventos de ESX / QB que a ponte dispara.

Os nomes de eventos são constantes em @aicore-fivem/shared (CORE, KEY_HINTS, MENU_EVENTS, LIB_UI, VEHICLES_EVENTS, SEATBELT_EVENT), então o código TypeScript nunca digita o texto.

TypeScript
import { CORE, type CharacterInfo } from "@aicore-fivem/shared";

on(CORE.playerLoadedEvent, (src: number, character: CharacterInfo) => {
  console.log(`${character.firstname} joined as ${src}`);
});
Lua
AddEventHandler('ai-core:playerLoaded', function(src, character)
  print(('%s joined as %d'):format(character.firstname, src))
end)

Para a vida inteira de um personagem (carga, descarga, já carregado antes de um reinício) use o onCharacter da lib (aiLib.onCharacter em Lua) em vez desses dois eventos à mão.

Eventos locais do servidor

Disparados com TriggerEvent no servidor; outros recursos e a ponte espelham o estado do jogador a partir deles.

EventoConstanteDados
ai-core:playerLoadedCORE.playerLoadedEvent(src, character: CharacterInfo) depois que um personagem é carregado e surge.
ai-core:playerUnloadedCORE.playerUnloadedEvent(src, charId, reason: "dropped" | "switch") antes de o estado de um personagem ser descartado.
ai-core:moneyChangedCORE.moneyChangedEvent(src, account: string, balance: number, delta: number, reason: string)
ai-core:jobsChangedCORE.jobsChangedEvent(src, jobs: JobMembership[])
ai-core:dutyChangedCORE.dutyChangedEvent(src, job: string | null)
ai-core:gangsChangedCORE.gangsChangedEvent(src, gangs: GangMembership[])
ai-core:activeGangChangedCORE.activeGangChangedEvent(src, gang: string | null)
ai-core:metaChangedCORE.metaChangedEvent(src, key, value | null) um valor de metadados mudou.
ai-core:definitionsChangedCORE.definitionsChangedEvent(file: "jobs" | "gangs", name) um emprego ou gangue mudou no painel.
ai-core:characterScreenCORE.characterScreenEvent(src, charIds: number[]) a tela de personagens carrega; um script de roupas pode responder com retratos.
ai-core:inventoryChangedCORE.inventoryChangedEvent(resource: string | null) o inventário por trás da camada de inventário mudou.
ai-core:itemUsedCORE.itemUsedEvent(src, name: string, status: Record<string, number> | null) um jogador usou um item; status = as necessidades que ele dá (fome, sede, estresse).
ai-core:playerDiedCORE.playerDiedEvent(src, killer: number | null, weaponHash: number) um jogador com personagem carregado morreu.
ai-inventory:usedItem(source, name, slot, metadata, status) depois de cada uso no ai-inventory. Os outros scripts escutam ai-core:itemUsed.
ai-vehicles:ownersVEHICLES_EVENTS.owners(puts: [plate, ownerType, ownerId][], removes: plate[]) os donos de veículos em memória mudaram (um lote por tick).
chatMessage(source, author, text) antes de o ai-chat entregar uma mensagem; CancelEvent() a descarta.

Eventos locais do cliente

EventoConstanteDados
ai-core:client:playerLoadedCORE.clientPlayerLoadedEvent(data: AiPlayerData) o personagem local está carregado.
ai-core:client:playerUnloadedCORE.clientPlayerUnloadedEvent()
ai-core:client:deadCORE.clientDeadEvent(dead: boolean) o jogador local caiu ou levantou, em qualquer script de morte.
ai-core:client:cacheCORE.clientCacheEvent(key, value) um valor em cache mudou: ped, vehicle, seat, weapon.
ai-core:client:hudVisibleCORE.clientHudVisibleEvent(visible: boolean) os HUDs aparecem ou somem.
ai-core:client:worldSyncCORE.clientWorldSyncEvent(paused: boolean) a sincronização de clima e hora pausou ou voltou a rodar.
ai-core:client:definitionsCORE.clientDefinitionsEvent(file: "jobs" | "gangs", name, definition | null)
ai-core:client:characterPortraitCORE.clientCharacterPortraitEvent(charId: number, url: string) um retrato para a tela de personagens.
ai-core:client:keyHintsKEY_HINTS.changedEvent(hints: KeyHintView[]) as dicas de teclas que os HUDs mostram agora.
ai-smallresources:seatbeltSEATBELT_EVENT(worn: boolean | null) o cinto mudou.

Respostas da interface do ai-lib

Só são necessárias quando você chama os exports do ai-lib por conta própria (menu, input, skillCheck e os prompts da lib escutam por você).

EventoConstanteDados
ai-lib:client:menuResultMENU_EVENTS.menuResult(resource, requestId, itemId | null) uma escolha ou um fechamento (menus, seletor de itens, minigames).
ai-lib:client:menuHoverMENU_EVENTS.menuHover(resource, requestId, itemId) o item sob o ponteiro.
ai-lib:client:menuToggleMENU_EVENTS.menuToggle(resource, requestId, itemId, checked) uma linha de interruptor foi trocada.
ai-lib:client:inputResultMENU_EVENTS.inputResult(resource, requestId, values | null) o diálogo de entrada foi confirmado ou fechado.
ai-lib:client:promptPressedLIB_UI.promptPressedEvent(resource, id) a tecla de interação foi pressionada no prompt daquele recurso.
ai-lib:client:cancelProgressLIB_UI.cancelProgressEvent() a tecla de cancelar foi pressionada durante uma barra de progresso.

State bags

Leia-os com as classes de estado da lib (GlobalKey, PlayerState, EntityState, GlobalGroup), ou com GlobalState[...], Player(src).state[...], Entity(e).state[...] em Lua. Só o recurso dono escreve.

ChaveOndeValor
ai:duty:<job>GlobalStateQuantos jogadores estão em serviço em um emprego (dutyCountKey(job)).
ai:inventoryGlobalStateNome do recurso do inventário ativo.
ai:vehicleKeysGlobalStateNome do recurso do sistema de chaves ativo.
ai:appearanceGlobalStateNome do recurso do script de roupas ativo.
ai:medicalGlobalStateNome do recurso do script de morte ativo.
ai:interactionGlobalState"prompt" ou "target": como os jogadores interagem com os Points da lib.
ai:pvpGlobalStateSe os jogadores podem ferir uns aos outros.
ai:clock, ai:weatherGlobalStateO relógio e o clima do ai-weathersync.
door:<id>GlobalStateai-doorlock: se uma porta está trancada.
deadPlayertrue enquanto caído (ai-death).
cuffedPlayertrue enquanto algemado (ai-police).
proximityPlayerAlcance de voz { index, distance, mode } (ai-voice).
radioChannel, callChannel, callSpeaker, muted, submixPlayerEstado de rádio, chamada e mudo do ai-voice.
ai:owned, ai:vidVehicleUm veículo com dono e seu id no ai-vehicles.
ai:props, ai:setupVehicleA aparência que o ai-core aplica no cliente dono.
fuelVehicle0-100, mantido pelo script de combustível.
siren:lx, siren:manu, siren:lightbarVehicleLuzes, tom manual e barra de luzes do ai-sirens.

Eventos de framework (ponte)

A ponte do ai-core dispara os eventos de ESX e QB com os mesmos argumentos, então os scripts escritos para esses frameworks os recebem.

LadoQB / QboxESX
ServidorQBCore:Server:PlayerLoaded, QBCore:Server:OnPlayerUnload, QBCore:Server:OnMoneyChange, QBCore:Server:OnJobUpdate, QBCore:Server:OnGangUpdateesx:playerLoaded, esx:playerDropped, esx:playerLogout, esx:setJob
ClienteQBCore:Client:OnPlayerLoaded, QBCore:Client:OnPlayerUnload, QBCore:Player:SetPlayerData, QBCore:Client:OnJobUpdate, QBCore:Client:SetDuty, QBCore:Client:OnGangUpdate, QBCore:Client:OnMoneyChangeesx:playerLoaded, esx:onPlayerLogout, esx:setAccountMoney, esx:setJob

Eventos de outros scripts que o AI Core responde:

EventoRespondido por
QBCore:GetObject, esx:getSharedObjectA ponte: o objeto core.
QBCore:Server:TriggerCallback, esx:triggerServerCallbackA ponte: callbacks do framework.
QBCore:Notify, esx:showNotification, esx:showAdvancedNotification, esx:showHelpNotificationA ponte: a notificação ou o prompt do AI Core.
police:server:policeAlertai-core: cliente (text), servidor (text, camId, playerSource), enviado ao sistema de alertas ativo.
hospital:client:Reviveai-death: reanima o jogador.
qb-weathersync:client:DisableSync / EnableSync, cd_easytime:PauseSync, vSync:toggleai-core: contam como motivos de pausa da sincronização do mundo.

Nesta página