AI Core
Référence de l’API

Exports des scripts

Les exports de chaque script ai-*, et les API d’autres scripts qu’ils remplacent.

Les scripts ai-* ne s’appellent jamais entre eux pour une tâche partagée : objets, clés, alertes, prison, médical, apparences, entrées radiales et météo passent par ai-core (la lib), qui appelle les exports ci-dessous. Appelez-les vous-même seulement pour ce qui est propre à ce script. Les exports typés dans @aicore-fivem/shared fonctionnent avec resourceExport("ai-...") ; les autres avec callExport(resource, name, ...args) ou un simple appel exports[...].

Quand un script en remplace un autre (provide), les noms d’export de l’autre script répondent aussi : exports.ox_inventory:AddItem(...) arrive à ai-inventory.

ai-lib

L’interface joueur partagée. Exports client, typés AiLibClientExports ; notify, progress, showPrompt, menu, input, skillCheck et lockpick de la lib les appellent pour vous.

ExportRôle
Notify(notification: Notification): voidUne carte de notification (text, title?, kind, duration?).
ShowProgress(label: string, duration: number): voidAffiche la barre de progression pendant duration ms (l’appelant exécute l’action).
HideProgress(): voidLa masque.
ShowPrompt(id: string, text: string, at?: { x, y, z }): voidAffiche ou met à jour le prompt de l’appelant ; at le dessine au-dessus d’un point du monde.
HidePrompt(id: string): voidMasque un prompt.
OpenMenu(requestId: number, request: MenuRequest): voidUn menu ; le choix arrive comme MENU_EVENTS.menuResult.
OpenInput(requestId: number, request: InputRequest): voidUn dialogue de saisie ; les valeurs arrivent comme MENU_EVENTS.inputResult.
OpenMinigame(requestId: number, request: MinigameRequest): voidUn test d’adresse ou un crochetage ; le résultat arrive comme MENU_EVENTS.menuResult.
CloseDialog(): voidFerme le menu ou la saisie ouverts de l’appelant (réponse null).

L’événement serveur ai-lib:client:notify (LIB_UI.notifyEvent) avec une Notification affiche une carte sur l’écran de ce joueur.

ai-inventory

Exports serveur (propres) : les autres scripts ai-* les atteignent via la couche d’inventaire d’ai-core.

ExportRôle
AddItem(inv: number | string, item: string, count: number, metadata?, slot?): booleanAjoute des objets.
RemoveItem(inv: number | string, item: string, count: number, metadata?, slot?): booleanRetire des objets.
GetItemCount(inv: number | string, item: string, metadata?): numberCombien.
GetItems(inv: number | string): { name, label, count, slot, metadata }[]Chaque pile avec son libellé.
CanCarryItem(inv: number | string, item: string, count: number, metadata?): booleanSi ça rentre.
RegisterUsableItem(name: string, handler: (source, item) => unknown): voidSi handler renvoie false, l’objet reste ; sinon sa quantité consume est retirée.
RegisterStash(name: string, label: string, slots: number, maxWeight: number, jobs?: string[], personal?: boolean): voidUn coffre.
OpenInventory(source: number, inv: number | string): booleanOuvre un inventaire sur l’écran d’un joueur.
ClearInventory(inv: number | string): voidLe vide.
Items(name?: string): unknownUne définition d’objet (forme ox), ou toutes.
GetWeight(inv: number | string): { weight, maxWeight } | nullPoids porté et limite en grammes.

Exports client : OpenInventory(type, data), CloseInventory(), OpenSelf() (son propre inventaire avec le sol, le coffre ou la boîte à gants autour), GetItemCount(item), HasItem(items: string \| string[] \| Record<string, number>, amount?), GetPlayerItems().

Événement local serveur ai-inventory:usedItem (source, name, slot, metadata, status).

API ox_inventory

ai-inventory fait provide de ox_inventory et répond à ses exports (ox_inventory 2.44). Les inventaires sont nommés comme dans ox : une source de joueur, un nom de coffre, { id, owner } pour les coffres personnels, une plaque pour les coffres de véhicule.

  • Serveur : AddItem (renvoie success, response, appelle cb), RemoveItem, GetItem, GetItemCount, Search (count / slots), CanCarryItem, CanCarryWeight, CanCarryAmount, GetInventory, GetInventoryItems, GetSlot, GetSlotWithItem, GetSlotsWithItem, GetSlotIdWithItem, GetSlotIdsWithItem, GetEmptySlot, SetMetadata, SetDurability, SetMaxWeight, RegisterStash, ClearInventory, Items, ItemList, forceOpenInventory (coffre, joueur, boutique), CreateTemporaryStash, CustomDrop, RemoveInventory, SwapSlots.
  • Client : openInventory, closeInventory, Search, GetItemCount, GetPlayerItems, GetPlayerWeight, GetPlayerMaxWeight, Items, useSlot, getCurrentWeapon / GetCurrentWeapon ; displayMetadata, weaponWheel, setStashTarget sont acceptés et ne font rien.
  • Sans réponse : les hooks (registerHook, removeHooks), UpdateVehicle, ConfiscateInventory / ReturnInventory, GetContainerFromSlot, RegisterShop (les boutiques viennent du panneau).

API qb-inventory

ai-inventory fait provide de qb-inventory (API 2.0). Les objets renvoyés portent les deux formes : count / metadata et amount / info.

  • Serveur : AddItem(identifier, item, amount, slot, info), RemoveItem, HasItem (nom, liste ou { name = amount }), GetItemCount, GetItemByName, GetItemsByName, GetItemBySlot, CanAddItem, GetFreeWeight, GetSlots, ClearInventory, SetItemData, CreateInventory, OpenInventory, OpenInventoryById, RemoveInventory, CloseInventory.
  • Client : HasItem, CloseInventory.
  • Sans réponse : hooks et listeners, CreateShop / OpenShop, SetInventory, GetInventory, SaveInventory, LoadInventory, UseItem, GetFirstSlotByItem, GetSlotsByItem, GetTotalWeight.

ai-vehicles

Véhicules possédés. Exports serveur, typés AiVehiclesServerExports. VehicleOwner vaut { type: "character" \| "job" \| "gang" \| "resource", id }.

ExportRôle
CreateVehicle(owner: VehicleOwner, model: string, garage: string | null, props?): { id, plate } | nullEnregistre un nouveau véhicule possédé.
GetVehicle(ref: number | string): OwnedVehicle | nullUn véhicule par id ou plaque.
GetVehicles(owner: VehicleOwner): OwnedVehicle[]Les véhicules d’un personnage en ligne, ou la flotte d’un métier ou d’un gang.
IsOwnedPlate(plate: string): booleanSi une plaque appartient à un véhicule possédé.
GetVehicleIdByEntity(entity: number): number | nullL’id d’un véhicule possédé sorti.
GetPlateOwners(): [plate, type, id][]Chaque véhicule possédé en mémoire (suivre ensuite ai-vehicles:owners).
GetEntity(id: number): number | nullL’entité sortie d’un véhicule.
SaveVehicle(id: number, change: { props?, fuel?, engine?, body?, state?, garage? }): voidEnregistre l’état et l’apparence ; le tuning enregistré reste.
SaveTuning(id: number, props: unknown): voidEnregistre les props complètes avec le tuning (garages de tuning seulement).
StoreVehicle(id: number, garage: string | null, state?: VehicleState): voidRange un véhicule dans un garage (garage, out, impound).
SetOwner(id: number, owner: VehicleOwner): voidChange le propriétaire.
DeleteVehicle(id: number): voidSupprime un véhicule.
SpawnVehicle(id: number, at: { x, y, z, heading }, asker: number, cb: (netId: number | null) => void, purpose?: KeyPurpose, setup?): voidCrée l’entité ; cb reçoit son net id.

ai-vehicles fait provide de qbx_vehicles : GetPlayerVehicles(filters), GetPlayerVehicle(id), CreatePlayerVehicle(request), SetPlayerVehicleOwner(id, citizenid), DeletePlayerVehicles(idType, idValue), GetVehicleIdByPlate(plate), DoesPlayerVehiclePlateExist(plate), SaveVehicle(entity, options) (les filtres par citizenid demandent que le propriétaire soit en ligne).

ai-vehicleshop

ExportRôle
GetCatalogPrice(model: string): number | nullLe prix catalogue d’un modèle (serveur).

ai-vehiclekeys

Exports serveur, aussi sous qbx_vehiclekeys. Un véhicule est une entité ou une plaque. Les scripts donnent les clés via ai-core (GiveVehicleKeys, lib vehicleKeys), qui appelle ceux-ci tant qu’ai-vehiclekeys est le système de clés actif.

ExportRôle
HasKeys(source: number, vehicle: number | string): booleanSi le joueur a les clés.
GiveKeys(source: number, vehicle: number | string): voidDonne les clés.
RemoveKeys(source: number, vehicle: number | string): voidRetire les clés.
SetLockState(vehicle, state)Verrouille ("lock", true, 2) ou déverrouille une entité véhicule.
IsPlayerNearVehicle(source, vehicle)Si le joueur se tient près du véhicule.

ai-death

Exports serveur, typés AiDeathServerExports ; Revive et IsDead aussi sous qbx_medical. Les scripts utilisent plutôt la couche médicale d’ai-core (lib medical).

ExportRôle
Revive(source: number): booleanRelève un joueur à terre ; false s’il n’est pas à terre.
IsDead(source: number): booleanSi le joueur est à terre.
Heal(source: number): voidSanté pleine pour un joueur qui n’est pas à terre.

L’événement client hospital:client:Revive envoyé par le serveur réanime le joueur.

ai-prison

Exports serveur ; la couche prison d’ai-core (lib prison) les appelle.

ExportRôle
JailPlayer(source, minutes, by?)Emprisonne un joueur ; true si ça a marché.
ReleasePlayer(source)Libère un joueur emprisonné.
GetJailTime(source)Minutes restantes (0 s’il est libre).

ai-policealert

ExportRôle
DispatchAlert(alert: DispatchAlert): voidAffiche une carte d’alerte ; seule la couche dispatch d’ai-core l’appelle (les scripts utilisent SendDispatchAlert / lib dispatch).

ai-doorlock

Exports serveur, typés AiDoorlockServerExports ; les portes par leur id du panneau. Répond aussi à setDoorState et getDoor d’ox_doorlock.

ExportRôle
SetDoorState(id: string, locked: boolean): voidVerrouille ou déverrouille une porte.
IsLocked(id: string): booleanSi une porte est verrouillée.

ai-banking

L’argent des sociétés pour les scripts QB (un compte est un nom de métier). Exports serveur, aussi sous qb-banking ; getAccountMoney, addAccountMoney, removeAccountMoney de Renewed-Banking répondent de même.

ExportRôle
GetAccountBalance(job)Le solde bancaire du compte d’un métier.
AddMoney(job, amount, reason)L’alimente.
RemoveMoney(job, amount, reason)Y prélève.

ai-hud

ExportCôtéRôle
OpenSettings()ClientOuvre les réglages du HUD.
SetMinimapAlways(on: boolean)ClientL’interrupteur propre d’un admin : la minicarte à pied, quoi que dise le panneau.
GetMinimapAlways(): booleanClientSi elle est gardée.
GetNeeds(source)Serveurhunger, thirst, stress du joueur, ou null.
SetNeed(source, need, value)ServeurFixe un besoin.
AddNeed(source, need, delta)ServeurChange un besoin de delta.

ai-smallresources

Exports client.

ExportRôle
GetSeatbelt(): boolean | nullSi le joueur porte sa ceinture ; null à pied ou ceintures désactivées. Les changements arrivent comme ai-smallresources:seatbelt.
IsHandsUp(): booleanMains en l’air (les scripts utilisent lib gestures).
IsPointing(): booleanPointage.

ai-sirens

Exports client pour les véhicules d’urgence ; vehicle vaut par défaut celui où le joueur est assis. Les changements d’état fonctionnent sur le client du conducteur.

ExportRôle
SetLights(vehicle, on)Feux allumés ou éteints.
ToggleLights(vehicle)Bascule les feux.
SetSirenTone(vehicle, tone)Tonalité 0-3 (0 = arrêt).
ToggleSiren(vehicle)Sirène allumée ou éteinte.
CycleTone(vehicle)La tonalité suivante.
GetSirenTone(vehicle)La tonalité actuelle.
AreLightsOn(vehicle)Si les feux sont allumés.
GetAirManuState(vehicle)L’état de la tonalité manuelle.
GetLightbarModel(vehicle)Le modèle de rampe lumineuse, ou null.

ai-exitsleeping

ExportCôtéRôle
AddCreateCheck(id, fn(source, charId, coords) => boolean)ServeurRenvoyez false pour ne laisser aucun corps endormi (un appartement, une zone d’événement) ; retiré quand la ressource qui l’a ajouté s’arrête.
PlayerLoaded()ClientRéveille le personnage quand le mode de réveil est « export ».
SetHidden(reason, hidden)ClientMasque tous les corps endormis sur ce client tant qu’un motif est posé (intérieurs, shells).
SetCarryBlocked(reason, blocked)ClientMasque l’option de porter tant qu’un motif est posé.

ai-appearance

Exports client, typés AiAppearanceClientExports ; les scripts utilisent lib appearance.

ExportRôle
ApplyAppearance(ped: number, appearance: unknown): booleanApplique une apparence ai-appearance à un ped de son modèle.
GetPedAppearance(ped: number): unknownL’apparence du joueur local, null pour les autres peds.

ai-radialmenu

Exports client propres (typés AiRadialClientExports) : AddItem(item) (onSelect est accepté comme onPressed), RemoveItem(id, parent?), Refresh(). Les scripts utilisent lib radial.

Il fait provide des API d’autres roues :

  • qb-radialmenu : AddOption(data, id?) renvoie l’id, RemoveOption(id).
  • tgiann-radialmenu-target : AddMenuItem(item | items, parentId?), RemoveMenuItem(id, parentId?), ClearMenuItems(), RegisterSubMenu({ id, items }), RefreshMenu(), DisableMenu(state), IsMenuDisabled(), OpenMenu(), CloseMenu(), IsMenuOpen(), HasMenuItem(id), SetMenuItemHidden(id, state), IsMenuItemHidden(id), UpdateMenuItem(id, { label?, icon? }), ResetMenuItem(id).

ai-target

Répond à l’API client d’ox_target sous ai-target et ox_target : addSphereZone, addBoxZone, addPolyZone, removeZone, zoneExists, addModel, removeModel, addEntity, removeEntity, addLocalEntity, removeLocalEntity, addGlobalPed / Vehicle / Object / Player et leurs removeGlobal*, disableTargeting, isActive. addGlobalOption n’est pas proposé (il journalise un avertissement). Les scripts utilisent lib Points, qui choisit prompt ou target selon le réglage du propriétaire.

ai-voice

Remplace pma-voice 7.x (fait provide de pma-voice, mumble-voip, tokovoip, toko-voip, tokovoip_script).

  • Serveur, noms pma-voice : setPlayerRadio, setPlayerCall, getPlayersInRadioChannel / GetPlayersInRadioChannel, addChannelCheck, overrideRadioNameGetter, isValidPlayer.
  • Serveur, propres : getBackend, setPlayerProximityMode(source, index), setPlayerRange(source, metres | null), getPlayerProximity(source), toggleMute(source, seconds?), addProximityCheck(fn(source, index, distance)) (false refuse), addPlayerRadioListen / removePlayerRadioListen / setPlayerRadioActive(source, channel), getPlayerRadioChannels(source) ({ active, channels }), addCallCheck(fn(source, callId)) (true autorise), setPlayerCallSpeaker(source, on) / getPlayerCallSpeaker(source), setPlayerSubmix(source, name | null).
  • Client : les exports client de pma-voice (setRadioChannel, setCallChannel, setRadioVolume, setCallVolume, setVoiceProperty, overrideProximityRange, toggleMutePlayer, toggleRadioAnim...) plus addRadioDisableBit / removeRadioDisableBit, registerCustomSubmix, setEffectSubmix ; propres addRadioChannel / removeRadioChannel / setActiveRadioChannel / getRadioChannels, setCallSpeaker / getCallSpeaker, setRadioAnimDisabled, createSubmix(name, spec) / getSubmix / editSubmix / listSubmixes, cycleProximity, getBackend, isRadioTalking.
  • Événements locaux : client pma-voice:setTalkingMode, pma-voice:radioActive, pma-voice:toggleRadioAnim ; serveur pma-voice:playerMuted.

ai-weathersync

Exports sous ai-weathersync et qb-weathersync (tout son contrat) : setWeather, setTime, setBlackout, setTimeFreeze, setDynamicWeather, nextWeatherStage, getWeatherState, getTime, getBlackoutState, getTimeFreezeState, getDynamicWeather. Les scripts utilisent GetWeather / SetWeather... d’ai-core (lib world), qui fonctionnent avec n’importe quel script météo.

ai-chat

Remplace la ressource chat de FiveM.

  • Client : exports addMessage(message), addSuggestion(name, help, params) ; événements chat:addMessage, chatMessage (author, color, text), chat:addSuggestion(s), chat:removeSuggestion, chat:addMode / chat:removeMode, chat:clear.
  • Serveur : exports addMessage(target, message), registerMessageHook(fn), registerMode(data) ; événement chatMessage (source, author, text) avant la livraison (annulez-le pour supprimer le message).

ai-mysql

Remplace oxmysql : exports sous ai-mysql et oxmysql : query, single, scalar, insert, update, prepare, rawExecute, transaction, startTransaction, store, isReady, awaitConnection, execute, fetch, chacun aussi en <name>_async / <name>Sync. Les noms de ghmattimysql (execute, scalar, transaction, store) et de mysql-async (mysql_execute, mysql_insert, mysql_fetch_all, mysql_fetch_scalar, mysql_transaction, mysql_store) aussi ; événements oxmysql:error, oxmysql:transaction-error. Voir Base de données.

Sur cette page