É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.
import { CORE, type CharacterInfo } from "@aicore-fivem/shared";
on(CORE.playerLoadedEvent, (src: number, character: CharacterInfo) => {
console.log(`${character.firstname} joined as ${src}`);
});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énement | Constante | Données |
|---|---|---|
ai-core:playerLoaded | CORE.playerLoadedEvent | (src, character: CharacterInfo) après le chargement et l’apparition d’un personnage. |
ai-core:playerUnloaded | CORE.playerUnloadedEvent | (src, charId, reason: "dropped" | "switch") avant que l’état d’un personnage soit abandonné. |
ai-core:moneyChanged | CORE.moneyChangedEvent | (src, account: string, balance: number, delta: number, reason: string) |
ai-core:jobsChanged | CORE.jobsChangedEvent | (src, jobs: JobMembership[]) |
ai-core:dutyChanged | CORE.dutyChangedEvent | (src, job: string | null) |
ai-core:gangsChanged | CORE.gangsChangedEvent | (src, gangs: GangMembership[]) |
ai-core:activeGangChanged | CORE.activeGangChangedEvent | (src, gang: string | null) |
ai-core:metaChanged | CORE.metaChangedEvent | (src, key, value | null) une valeur de métadonnées a changé. |
ai-core:definitionsChanged | CORE.definitionsChangedEvent | (file: "jobs" | "gangs", name) un métier ou un gang a changé dans le panneau. |
ai-core:characterScreen | CORE.characterScreenEvent | (src, charIds: number[]) l’écran des personnages se charge ; un script de vêtements peut répondre avec des portraits. |
ai-core:inventoryChanged | CORE.inventoryChangedEvent | (resource: string | null) l’inventaire derrière la couche d’inventaire a changé. |
ai-core:itemUsed | CORE.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:playerDied | CORE.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:owners | VEHICLES_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énement | Constante | Données |
|---|---|---|
ai-core:client:playerLoaded | CORE.clientPlayerLoadedEvent | (data: AiPlayerData) le personnage local est chargé. |
ai-core:client:playerUnloaded | CORE.clientPlayerUnloadedEvent | () |
ai-core:client:dead | CORE.clientDeadEvent | (dead: boolean) le joueur local est tombé ou s’est relevé, dans n’importe quel script de mort. |
ai-core:client:cache | CORE.clientCacheEvent | (key, value) une valeur en cache a changé : ped, vehicle, seat, weapon. |
ai-core:client:hudVisible | CORE.clientHudVisibleEvent | (visible: boolean) les HUD s’affichent ou se masquent. |
ai-core:client:worldSync | CORE.clientWorldSyncEvent | (paused: boolean) la synchro météo et heure est en pause ou reprend. |
ai-core:client:definitions | CORE.clientDefinitionsEvent | (file: "jobs" | "gangs", name, definition | null) |
ai-core:client:characterPortrait | CORE.clientCharacterPortraitEvent | (charId: number, url: string) un portrait pour l’écran des personnages. |
ai-core:client:keyHints | KEY_HINTS.changedEvent | (hints: KeyHintView[]) les aides de touches que les HUD affichent en ce moment. |
ai-smallresources:seatbelt | SEATBELT_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énement | Constante | Données |
|---|---|---|
ai-lib:client:menuResult | MENU_EVENTS.menuResult | (resource, requestId, itemId | null) un choix ou une fermeture (menus, sélecteur d’objets, mini-jeux). |
ai-lib:client:menuHover | MENU_EVENTS.menuHover | (resource, requestId, itemId) l’entrée sous le pointeur. |
ai-lib:client:menuToggle | MENU_EVENTS.menuToggle | (resource, requestId, itemId, checked) une ligne interrupteur a été basculée. |
ai-lib:client:inputResult | MENU_EVENTS.inputResult | (resource, requestId, values | null) le dialogue de saisie a été validé ou fermé. |
ai-lib:client:promptPressed | LIB_UI.promptPressedEvent | (resource, id) la touche d’interaction a été pressée sur le prompt de cette ressource. |
ai-lib:client:cancelProgress | LIB_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> | GlobalState | Combien de joueurs sont en service dans un métier (dutyCountKey(job)). |
ai:inventory | GlobalState | Nom de ressource de l’inventaire actif. |
ai:vehicleKeys | GlobalState | Nom de ressource du système de clés actif. |
ai:appearance | GlobalState | Nom de ressource du script de vêtements actif. |
ai:medical | GlobalState | Nom de ressource du script de mort actif. |
ai:interaction | GlobalState | "prompt" ou "target" : comment les Points de la lib font interagir les joueurs. |
ai:pvp | GlobalState | Si les joueurs peuvent se blesser entre eux. |
ai:clock, ai:weather | GlobalState | L’horloge et la météo d’ai-weathersync. |
door:<id> | GlobalState | ai-doorlock : si une porte est verrouillée. |
dead | Joueur | true tant qu’il est à terre (ai-death). |
cuffed | Joueur | true tant qu’il est menotté (ai-police). |
proximity | Joueur | Portée de voix { index, distance, mode } (ai-voice). |
radioChannel, callChannel, callSpeaker, muted, submix | Joueur | L’état radio, appel et sourdine d’ai-voice. |
ai:owned, ai:vid | Véhicule | Un véhicule possédé et son id dans ai-vehicles. |
ai:props, ai:setup | Véhicule | L’apparence qu’ai-core applique sur le client propriétaire. |
fuel | Véhicule | 0-100, tenu par le script de carburant. |
siren:lx, siren:manu, siren:lightbar | Véhicule | Les 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 / Qbox | ESX |
|---|---|---|
| Serveur | QBCore:Server:PlayerLoaded, QBCore:Server:OnPlayerUnload, QBCore:Server:OnMoneyChange, QBCore:Server:OnJobUpdate, QBCore:Server:OnGangUpdate | esx:playerLoaded, esx:playerDropped, esx:playerLogout, esx:setJob |
| Client | QBCore:Client:OnPlayerLoaded, QBCore:Client:OnPlayerUnload, QBCore:Player:SetPlayerData, QBCore:Client:OnJobUpdate, QBCore:Client:SetDuty, QBCore:Client:OnGangUpdate, QBCore:Client:OnMoneyChange | esx:playerLoaded, esx:onPlayerLogout, esx:setAccountMoney, esx:setJob |
Événements d’autres scripts auxquels AI Core répond :
| Événement | Géré par |
|---|---|
QBCore:GetObject, esx:getSharedObject | Le pont : l’objet core. |
QBCore:Server:TriggerCallback, esx:triggerServerCallback | Le pont : les callbacks du framework. |
QBCore:Notify, esx:showNotification, esx:showAdvancedNotification, esx:showHelpNotification | Le pont : la notification ou le prompt d’AI Core. |
police:server:policeAlert | ai-core : client (text), serveur (text, camId, playerSource), envoyé au système d’alerte actif. |
hospital:client:Revive | ai-death : réanime le joueur. |
qb-weathersync:client:DisableSync / EnableSync, cd_easytime:PauseSync, vSync:toggle | ai-core : comptés comme motifs de pause de la synchro du monde. |