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 :
- La lib : vue d’ensemble
- Lib : fonctions client
- Lib : fonctions serveur
- Lib : fonctions partagées
- Lua (
aiLib) : les équivalents Lua et l’ordre de leurs arguments
Le charger
fx_version 'cerulean'
game 'gta5'
lua54 'yes'
dependency 'ai-lib'
shared_script '@ai-lib/init.lua'
client_script 'client.lua'
server_script 'server.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
Notify(notification: Notification): voidexports['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
import { notify } from "@aicore-fivem/lib/client";
notify("Your vehicle was stored", "success", 5000);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
ShowProgress(label: string, duration: number): void
HideProgress(): voidProp
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
ShowPrompt(id: string, text: string, at?: PromptAnchor): void
HidePrompt(id: string): voidProp
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.
CloseDialog(): voidExports de plomberie
Ils sont utilisés par les fonctions propres à la lib. Vous ne les appelez pas.
| Export | Utilisé 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
| Event | Côté | Arguments | Ce que c’est |
|---|---|---|---|
ai-lib:client:notify | serveur vers client | notification: Notification | Affiche une carte sur l’écran de ce joueur. Le notify(source, text, kind?, duration?) serveur de la lib l’envoie. |
ai-lib:client:promptPressed | client (local) | resource: string, id: string | La touche d’interaction a été pressée alors que l’invite de cette ressource était au-dessus. |
ai-lib:client:cancelProgress | client (local) | aucun | La 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 });ai-lib
L’interface joueur partagée qu’utilise chaque script (notifications, barre de progression, invites, menus, boîtes de saisie, mini-jeux) et les utilitaires AI Core pour les ressources Lua et JavaScript.
ai-loading
L’écran de chargement que voient les joueurs pendant le chargement du jeu, avec le nom de votre serveur, un arrière-plan, la progression du chargement et des astuces.