AI Core
Référence de l’API

Lib : client

@aicore-fivem/lib/client - chaque utilitaire client avec sa signature, et son jumeau Lua sur aiLib quand il existe.

TypeScript
import { Points, notify, progress, cache } from "@aicore-fivem/lib/client";

L’entrée client réexporte aussi les utilitaires /fivem (every, ByResource, Reasons, caller, onStop, plateOf, utilitaires d’exports et de langue, classes de state bags) : voir Lib : shared et fivem. La dernière colonne donne le jumeau Lua sur aiLib (Lib pour Lua).

Parler au serveur

UtilitaireRôleLua
triggerServerCallback(name, args = [], timeoutMs?): Promise<unknown>Interroge le serveur (onClientCallback côté serveur) ; analysez la réponse.triggerServerCallback
onServerCallback(name, handler: (...args) => unknown): voidRépond au triggerClientCallback du serveur.onServerCallback
onServerEvent(name, handler) / onServerEvent(name, { args }, handler)Un événement réseau du serveur ; les émissions qui ne viennent pas du serveur sont ignorées. args analyse les données.onServerEvent
fromServer(): booleanSi l’événement en cours vient du serveur.
callAction(name, args = [], { fallback, timeout?, silent? })Exécute une action serveur, affiche lui-même le refus traduit, renvoie la réponse ok ou null.callAction
isActionOk(reply), replyError(reply, fallback)Lire un ActionResult à la main.
TypeScript
const reply = await callAction("buy", [itemId], { fallback: "BUY_FAILED" });
if (reply) notify(t("BOUGHT"), "success");

Le joueur local

UtilitaireRôleLua
cacheped, playerId, serverId, vehicle, seat, weapon (false = aucun), tenus par l’unique observateur d’ai-core.cache
onCache(key, handler: (value, old) => void): voidS’exécute quand une valeur en cache change.cache.onChange
readPlayerState(ped), readWeapon(ped)Le véhicule, le siège et l’arme d’un ped à cet instant.
player.coords(), player.heading(), player.distanceTo(point), player.ped()Lectures de position (depuis le cache).player
player.freeze(state: boolean)Gèle le ped.player.freeze
player.teleport(to: { x, y, z? }, { heading?, ground?, fade?, keepVehicle? }): Promise<void>Téléportation derrière un fondu avec chargement des collisions ; sans z, on arrive au sol.player.teleport
player.playAnim(dict, clip, options?): Promise<void>, player.stopAnim()Joue ou arrête une animation.player.playAnim, player.stopAnim
player.holdAnim(dict, clip, { ...options, while? })Maintient une animation jusqu’à stop() ou jusqu’à ce que while() soit false.
fadeOut(ms = 300), fadeIn(ms = 400)Fondus de l’écran ; chacun se résout une fois terminé.fadeOut, fadeIn
getPlayerData(key), onPlayerData(key, handler): () => void, seedPlayerData(data)Les données du joueur d’ai-core (character, money, jobs, duty, job, gangs, activeGang, metadata).playerData.get, playerData.onChange
hasJob(jobs, minGrade = 0), inGang(gangs, minGrade = 0), onDutyIn(jobs)Vérifications d’appartenance (une liste vide = tout le monde).
onMembershipChange(fn)Les métiers, le service ou les gangs ont changé.
allows(rule: AccessRule): booleanSi le joueur peut utiliser un lieu (online.allows côté serveur décide pareil).
playerPed(serverId): numberLe ped d’un joueur par id serveur, 0 hors de portée.playerPed
nearestPlayer(metres, { from?, filter? }): number | nullL’id serveur de l’autre joueur le plus proche.nearestPlayer

Lieux et monde

UtilitaireRôleLua
new Points()Chaque lieu qu’utilise un joueur : prompt ou target (au choix du propriétaire), PNJ, blip.Points.new()
points.add(id, { coords, label, icon?, radius?, height?, canShow?, onPressed, onEnter?, onExit?, ped?, blip?, world?, promptOnly?, preferTarget? })Ajoute un point ; label peut être une fonction.points:add
points.addModel(id, { models, label, icon?, radius?, canShow?(entity), onPressed(entity), vehicles?, inVehicle? })Un point sur chaque objet de certains modèles (distributeurs, chaises).points:addModel
points.addVehicle(id, { label, icon?, radius?, canShow?(vehicle), onPressed(vehicle) })Un point sur chaque véhicule réseau.points:addVehicle
points.remove(id), clear(), refresh(id?), isInside(id)Gérer les points ; refresh relit canShow.
new Zones(): add(id, options), remove, clear, isInside, sizeZones sans interaction.Zones.new()
new LocalPed({ model, coords, ... }): entity, removeUn ped que seul ce client voit, créé près du joueur.LocalPed.new()
new Blips(): add(id, options), get, remove, clear; createBlip(options)Blips nommés.Blips.new(), Blips.create()
showPrompt(id, text, at?), hidePrompt(id), onPromptPressed(handler)Le prompt d’ai-lib à la main (Points l’utilise).showPrompt, hidePrompt, onPromptPressed
new AdminWorld(files): get, onChange, view, recordsLa copie client des fichiers de panneau sync: "all" d’un script.
TypeScript
const points = new Points();
points.add("shop", {
  coords: { x: 25.7, y: -1347.3, z: 29.5 },
  label: t("OPEN_SHOP"),
  icon: "basket-shopping",
  blip: { sprite: 52, color: 2, scale: 0.8, label: t("SHOP") },
  onPressed: () => openShop(),
});

Interface

UtilitaireRôleLua
notify(text, kind = "info", duration?)Une carte de notification.notify
progress({ label, duration, anim?, scenario?, face?, allowVehicle?, canCancel?, whileDead?, freeze?, disable? }): Promise<boolean>Une action minutée avec la barre d’ai-lib ; false si annulée.progress
cancelProgress(), isProgressRunning()Arrêter ou vérifier la barre de cette ressource.progress.cancel(), progress.isRunning()
menu(request, onHover? | { onHover, onToggle }): Promise<string | null>Le menu d’ai-lib ; renvoie l’id choisi.menu.show
input(request): Promise<Record<string, string | number> | null>Le dialogue de saisie d’ai-lib.input
itemPicker({ title, target? }): Promise<PickedItem[] | null>Outils d’admin : la grille d’objets d’ai-core.itemPicker
skillCheck(difficulty | difficulty[], keys = ["e"]): Promise<boolean>Test d’adresse ("easy" | "medium" | "hard" ou { areaSize, speedMultiplier }).skillCheck
lockpick({ difficulty?, pins?, picks? }): Promise<"opened" | "broken" | "cancelled">Mini-jeu de crochetage.lockpick
new NuiScreen(name, { cursor?, onClose?, closeCallback? }): open, close, send, on, isOpenUne NUI plein écran : focus, HUD masqués, message de fermeture, callbacks.
hud.hide(reason), hud.show(reason), hud.visible(), hud.onChange(fn)Masquer les HUD autour d’une interface plein écran.hud
keyHints.show(id, { label, keybind?, key?, icon? }), keyHints.hide(id)Une ligne d’aide de touche sur le HUD.keyHints
radial.add(item), radial.remove(id), radial.refresh()Entrées du menu radial en place.radial
controls.disable(reason, controls, group?), controls.enable(reason), controls.disableAll(reason, except?)Contrôles désactivés, une seule tâche par frame.controls
new Keybind({ name, description, defaultKey, defaultMapper, hint?, icon?, hintLabel?, onPressed, onReleased })Une touche réassignable ; le panneau peut fixer sa valeur par défaut. isPressed(), currentKey(), disable(state).Keybind.new()
TypeScript
const done = await progress({
  label: t("REPAIRING"),
  duration: 8000,
  anim: { dict: "mini@repair", clip: "fixing_a_player" },
  canCancel: true,
});

Via AI Core

UtilitaireRôleLua
inventory.openInventory(), inventory.hasItem(item, count = 1), inventory.currentWeapon()L’inventaire actif.inventory
medical.isDead(), medical.onChange(fn)Le joueur local est à terre, dans n’importe quel script de mort.
gestures.isHandsUp(), isPointing(), provider()Mains en l’air et pointage de n’importe quel script d’emotes.gestures
appearance.apply(ped, look), appearance.read(ped)Apparences via le script de vêtements actif.appearance
world.pauseSync(reason), world.resumeSync(reason)Mettre en pause la synchro météo et heure.world

Véhicules et entités

UtilitaireRôleLua
nearestVehicle(metres, { networked?, notOwn?, filter? }): numberLe véhicule le plus proche.nearestVehicle
drivenVehicle(): number | falseLe véhicule que conduit le joueur.
waitForEntity(netId, timeoutMs = 5000): Promise<number>L’entité dès qu’elle existe ici, 0 après le délai.waitForEntity
entityFromNetId(netId, type?): numberL’entité maintenant ou 0 (type 1 ped, 2 véhicule, 3 objet).
getVehicleProps(vehicle), setVehicleProps(vehicle, props), setVehicleSetup(vehicle, setup)Lire et appliquer l’apparence d’un véhicule.
new PreviewVehicle(): show(model, at, setup?), clear()Un véhicule de vitrine local.
vehicleLabel(model | hash | vehicle): stringNom affiché d’un véhicule.vehicleLabel

Sondes, streaming, minutage

UtilitaireRôleLua
raycast(from, to, { flags?, ignore?, options? }): RayHit | nullUn tracé de ligne : { coords, normal, entity }.raycast
groundZ(x, y, z = 1000): number | nullHauteur du sol, null tant que les collisions ne sont pas chargées.groundZ
locationName(coords?): { street, crossing?, zone }Noms de rue et de zone.locationName
waypoint(): { x, y } | nullLe point de passage sur la carte.waypoint
pedHeadshot(ped, transparent = false, timeoutMs = 5000)Le handle et le nom de texture du portrait d’un ped.pedHeadshot
onShot(handler: (weapon) => void): () => voidLa frame où le ped local tire.onShot
requestModel, requestAnimDict, requestAnimSet, requestPtfxAsset, requestTextureDict, requestWeaponAsset (name, timeoutMs = 10000)Charger une ressource du jeu.mêmes noms
attachProp(model, { ped?, bone, offset?, rotation?, collision?, rotationOrder? }): Promise<number>Un prop local tenu à un os d’un ped.
new TickLoop(onFrame, name?): set(active), runningUne tâche par frame, activée seulement quand il le faut.
new AreaFollower(event, cellSize = 64): start, stopSignale la cellule de grille du joueur à un AreaStream serveur.
new ScriptCamera(type?): start, move, glideTo, attach, pointAt, setFov, shake, blur, stopUne caméra scriptée, rendue à la caméra du jeu à l’arrêt.

Sur cette page