AI Core
Référence de l’API

Événements et état

Les événements que déclenchent ai-core et les scripts ai-*, avec leurs données, les state bags qu’ils écrivent et les événements ESX / QB que déclenche le pont.

Les noms d’événements sont des constantes de @aicore-fivem/shared (CORE, KEY_HINTS, MENU_EVENTS, LIB_UI, VEHICLES_EVENTS, SEATBELT_EVENT) : le code TypeScript ne tape jamais la chaîne.

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)

Pour toute la vie d’un personnage (chargement, déchargement, déjà chargé avant un redémarrage), utilisez onCharacter de la lib (aiLib.onCharacter en Lua) au lieu de gérer ces deux événements à la main.

Événements locaux serveur

Déclenchés avec TriggerEvent sur le serveur ; les autres ressources et le pont en tirent l’état des joueurs.

ÉvénementConstanteDonnées
ai-core:playerLoadedCORE.playerLoadedEvent(src, character: CharacterInfo) après le chargement et l’apparition d’un personnage.
ai-core:playerUnloadedCORE.playerUnloadedEvent(src, charId, reason: "dropped" | "switch") avant que l’état d’un personnage soit abandonné.
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) une valeur de métadonnées a changé.
ai-core:definitionsChangedCORE.definitionsChangedEvent(file: "jobs" | "gangs", name) un métier ou un gang a changé dans le panneau.
ai-core:characterScreenCORE.characterScreenEvent(src, charIds: number[]) l’écran des personnages se charge ; un script de vêtements peut répondre avec des portraits.
ai-core:inventoryChangedCORE.inventoryChangedEvent(resource: string | null) l’inventaire derrière la couche d’inventaire a changé.
ai-core:itemUsedCORE.itemUsedEvent(src, name: string, status: Record<string, number> | null) un joueur a utilisé un objet ; status = les besoins qu’il donne (faim, soif, stress).
ai-core:playerDiedCORE.playerDiedEvent(src, killer: number | null, weaponHash: number) un joueur avec un personnage chargé est mort.
ai-inventory:usedItem(source, name, slot, metadata, status) après chaque utilisation dans ai-inventory. Les autres scripts écoutent ai-core:itemUsed.
ai-vehicles:ownersVEHICLES_EVENTS.owners(puts: [plate, ownerType, ownerId][], removes: plate[]) les propriétaires des véhicules en mémoire ont changé (un lot par tick).
chatMessage(source, author, text) avant qu’ai-chat livre un message ; CancelEvent() le supprime.

Événements locaux client

ÉvénementConstanteDonnées
ai-core:client:playerLoadedCORE.clientPlayerLoadedEvent(data: AiPlayerData) le personnage local est chargé.
ai-core:client:playerUnloadedCORE.clientPlayerUnloadedEvent()
ai-core:client:deadCORE.clientDeadEvent(dead: boolean) le joueur local est tombé ou s’est relevé, dans n’importe quel script de mort.
ai-core:client:cacheCORE.clientCacheEvent(key, value) une valeur en cache a changé : ped, vehicle, seat, weapon.
ai-core:client:hudVisibleCORE.clientHudVisibleEvent(visible: boolean) les HUD s’affichent ou se masquent.
ai-core:client:worldSyncCORE.clientWorldSyncEvent(paused: boolean) la synchro météo et heure est en pause ou reprend.
ai-core:client:definitionsCORE.clientDefinitionsEvent(file: "jobs" | "gangs", name, definition | null)
ai-core:client:characterPortraitCORE.clientCharacterPortraitEvent(charId: number, url: string) un portrait pour l’écran des personnages.
ai-core:client:keyHintsKEY_HINTS.changedEvent(hints: KeyHintView[]) les aides de touches que les HUD affichent en ce moment.
ai-smallresources:seatbeltSEATBELT_EVENT(worn: boolean | null) la ceinture a changé.

Réponses de l’interface d’ai-lib

Utile seulement si vous appelez vous-même les exports d’ai-lib (menu, input, skillCheck et les prompts de la lib écoutent pour vous).

ÉvénementConstanteDonnées
ai-lib:client:menuResultMENU_EVENTS.menuResult(resource, requestId, itemId | null) un choix ou une fermeture (menus, sélecteur d’objets, mini-jeux).
ai-lib:client:menuHoverMENU_EVENTS.menuHover(resource, requestId, itemId) l’entrée sous le pointeur.
ai-lib:client:menuToggleMENU_EVENTS.menuToggle(resource, requestId, itemId, checked) une ligne interrupteur a été basculée.
ai-lib:client:inputResultMENU_EVENTS.inputResult(resource, requestId, values | null) le dialogue de saisie a été validé ou fermé.
ai-lib:client:promptPressedLIB_UI.promptPressedEvent(resource, id) la touche d’interaction a été pressée sur le prompt de cette ressource.
ai-lib:client:cancelProgressLIB_UI.cancelProgressEvent() la touche d’annulation a été pressée pendant une barre de progression.

State bags

Lisez-les avec les classes d’état de la lib (GlobalKey, PlayerState, EntityState, GlobalGroup), ou en Lua avec GlobalState[...], Player(src).state[...], Entity(e).state[...]. Seule la ressource propriétaire écrit.

CléOùValeur
ai:duty:<job>GlobalStateCombien de joueurs sont en service dans un métier (dutyCountKey(job)).
ai:inventoryGlobalStateNom de ressource de l’inventaire actif.
ai:vehicleKeysGlobalStateNom de ressource du système de clés actif.
ai:appearanceGlobalStateNom de ressource du script de vêtements actif.
ai:medicalGlobalStateNom de ressource du script de mort actif.
ai:interactionGlobalState"prompt" ou "target" : comment les Points de la lib font interagir les joueurs.
ai:pvpGlobalStateSi les joueurs peuvent se blesser entre eux.
ai:clock, ai:weatherGlobalStateL’horloge et la météo d’ai-weathersync.
door:<id>GlobalStateai-doorlock : si une porte est verrouillée.
deadJoueurtrue tant qu’il est à terre (ai-death).
cuffedJoueurtrue tant qu’il est menotté (ai-police).
proximityJoueurPortée de voix { index, distance, mode } (ai-voice).
radioChannel, callChannel, callSpeaker, muted, submixJoueurL’état radio, appel et sourdine d’ai-voice.
ai:owned, ai:vidVéhiculeUn véhicule possédé et son id dans ai-vehicles.
ai:props, ai:setupVéhiculeL’apparence qu’ai-core applique sur le client propriétaire.
fuelVéhicule0-100, tenu par le script de carburant.
siren:lx, siren:manu, siren:lightbarVéhiculeLes feux, la tonalité manuelle et la rampe lumineuse d’ai-sirens.

Événements de framework (pont)

Le pont d’ai-core déclenche les événements ESX et QB avec les mêmes arguments, pour que les scripts écrits pour ces frameworks les entendent.

CôtéQB / QboxESX
ServeurQBCore:Server:PlayerLoaded, QBCore:Server:OnPlayerUnload, QBCore:Server:OnMoneyChange, QBCore:Server:OnJobUpdate, QBCore:Server:OnGangUpdateesx:playerLoaded, esx:playerDropped, esx:playerLogout, esx:setJob
ClientQBCore: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

Événements d’autres scripts auxquels AI Core répond :

ÉvénementGéré par
QBCore:GetObject, esx:getSharedObjectLe pont : l’objet core.
QBCore:Server:TriggerCallback, esx:triggerServerCallbackLe pont : les callbacks du framework.
QBCore:Notify, esx:showNotification, esx:showAdvancedNotification, esx:showHelpNotificationLe pont : la notification ou le prompt d’AI Core.
police:server:policeAlertai-core : client (text), serveur (text, camId, playerSource), envoyé au système d’alerte actif.
hospital:client:Reviveai-death : réanime le joueur.
qb-weathersync:client:DisableSync / EnableSync, cd_easytime:PauseSync, vSync:toggleai-core : comptés comme motifs de pause de la synchro du monde.

Sur cette page