AI Core
Essentielsai-lib

ai-lib pour les développeurs

Charger ai-lib dans une ressource Lua ou JavaScript, où se trouve la référence de la lib, et les exports client et events propres à ai-lib.

ai-lib transporte @aicore-fivem/lib pour les ressources qui n’embarquent pas le paquet npm. Les fonctions elles-mêmes sont documentées une seule fois, dans la référence de la lib :

Le charger

fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
lua54 'yes'

dependency 'ai-lib'
shared_script '@ai-lib/init.lua'
client_script 'client.lua'
server_script 'server.lua'
client.lua
local L = aiLib.locale()
aiLib.notify(L('WELCOME'), 'success')

Les modules se chargent à la première utilisation (aiLib.Points, aiLib.progress...), à l’intérieur de votre ressource, donc les points, raccourcis et callbacks que vous créez appartiennent à votre ressource et disparaissent quand elle s’arrête. Les fonctions qui attendent (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor) doivent s’exécuter dans un thread ou un gestionnaire d’event.

Exports client

Les fonctions notify, progress, showPrompt, menu, input, skillCheck et lockpick de la lib les appellent pour vous ; utilisez les fonctions de la lib. Ils sont typés AiLibClientExports dans @aicore-fivem/shared (resourceExport("ai-lib")). Les invites, menus et zones appartiennent à la ressource appelante et disparaissent quand elle s’arrête.

Notify

Affiche une carte de notification sur l’écran de ce joueur.

Côté : client · Attend : non

Signature
Notify(notification: Notification): void
Lua
exports['ai-lib']:Notify({ text = 'Saved', kind = 'success' })
-- identique via la lib : aiLib.notify('Saved', 'success')

Notification

Prop

Type

Retour

Rien. Une notification sans text est ignorée. Quand le propriétaire a choisi un autre script de notification dans le panneau, la carte y va ; si ce script ne la prend pas, ai-lib la dessine.

Exemple

client.ts
import { notify } from "@aicore-fivem/lib/client";

notify("Your vehicle was stored", "success", 5000);
server.ts
import { notify, onClientEvent } from "@aicore-fivem/lib/server";

// La même carte sur l’écran d’un joueur, envoyée depuis le serveur.
onClientEvent("myscript:collectPay", (source) => {
  notify(source, "You were paid $500", "info");
});

ShowProgress et HideProgress

Affiche la barre de progression pendant un temps donné, ou la masque. Seulement la barre : le script appelant exécute l’action, son animation et la logique d’annulation. Utilisez plutôt progress (client) ou progressFor (serveur) de la lib, qui font tout cela.

Côté : client · Attend : non

Signature
ShowProgress(label: string, duration: number): void
HideProgress(): void

Prop

Type

Tant que la barre s’affiche, la touche d’annulation (Retour arrière) déclenche l’event local ai-lib:client:cancelProgress.

ShowPrompt et HidePrompt

Affiche ou met à jour une des invites de la ressource appelante, ou la masque. Utilisez showPrompt / hidePrompt de la lib, ou mieux Points de la lib, qui affiche et masque les invites selon la distance pour vous.

Côté : client · Attend : non

Signature
ShowPrompt(id: string, text: string, at?: PromptAnchor): void
HidePrompt(id: string): void

Prop

Type

Quand le joueur appuie sur la touche d’interaction alors que votre invite est au-dessus, l’event local ai-lib:client:promptPressed (resource, id) se déclenche ; le onPromptPressed de la lib le filtre pour votre ressource.

CloseDialog

Ferme le menu ou la boîte de saisie ouverts de la ressource appelante. L’appel menu.show / input en attente répond null, comme si le joueur l’avait fermé. Côté : client · Attend : non.

Signature
CloseDialog(): void

Exports de plomberie

Ils sont utilisés par les fonctions propres à la lib. Vous ne les appelez pas.

ExportUtilisé par
OpenMenu(requestId, request), OpenInput(requestId, request), OpenMinigame(requestId, request)menu.show, input, skillCheck, lockpick de la lib. Les réponses reviennent sous la forme ai-lib:client:menuResult / inputResult avec l’id de la requête.
AddZone(key, shape, interval, inside), RemoveZone(key)Zones de la lib dans les ressources JavaScript : ai-lib vérifie les zones de chaque ressource sur un seul minuteur et répond avec ai-lib:client:zone (owner, key, inside).
AddModelPoint(key, def, entity), RemoveModelPoint(key)Points.addModel / addVehicle de la lib en mode invite : ai-lib trouve l’objet le plus proche et répond avec ai-lib:client:modelPoint (owner, key, entity).

Events

EventCôtéArgumentsCe que c’est
ai-lib:client:notifyserveur vers clientnotification: NotificationAffiche une carte sur l’écran de ce joueur. Le notify(source, text, kind?, duration?) serveur de la lib l’envoie.
ai-lib:client:promptPressedclient (local)resource: string, id: stringLa touche d’interaction a été pressée alors que l’invite de cette ressource était au-dessus.
ai-lib:client:cancelProgressclient (local)aucunLa touche d’annulation a été pressée pendant qu’une barre de progression s’affiche.
// Serveur : une notification sans la lib.
emitNet("ai-lib:client:notify", source, { text: "Welcome to the city", kind: "info", duration: 6000 });

Sur cette page