AI Core
Esencialesai-lib

ai-lib para desarrolladores

Cargar ai-lib en un recurso Lua o JavaScript, dónde está la referencia de la lib, y los exports de cliente y eventos propios de ai-lib.

ai-lib lleva @aicore-fivem/lib para los recursos que no empaquetan el paquete npm. Las funciones en sí se documentan una sola vez, en la referencia de la lib:

Cargarlo

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')

Los módulos se cargan en el primer uso (aiLib.Points, aiLib.progress...), dentro de tu recurso, así que los puntos, teclas y callbacks que creas pertenecen a tu recurso y desaparecen cuando se detiene. Las funciones que esperan (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor) deben ejecutarse dentro de un thread o de un handler de evento.

Exports de cliente

Las funciones notify, progress, showPrompt, menu, input, skillCheck y lockpick de la lib los llaman por ti; usa las funciones de la lib. Están tipados como AiLibClientExports en @aicore-fivem/shared (resourceExport("ai-lib")). Los avisos, menús y zonas pertenecen al recurso que llama y desaparecen cuando se detiene.

Notify

Muestra una tarjeta de notificación en la pantalla de este jugador.

Lado: Cliente · Espera: no

Firma
Notify(notification: Notification): void
Lua
exports['ai-lib']:Notify({ text = 'Saved', kind = 'success' })
-- lo mismo con la lib: aiLib.notify('Saved', 'success')

Notification

Prop

Type

Devuelve

Nada. Una notificación sin text se descarta. Cuando el dueño eligió otro script de notificaciones en el panel, la tarjeta va allí; si ese script no la acepta, la dibuja ai-lib.

Ejemplo

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 misma tarjeta en la pantalla de un jugador, enviada desde el servidor.
onClientEvent("myscript:collectPay", (source) => {
  notify(source, "You were paid $500", "info");
});

ShowProgress and HideProgress

Muestra la barra de progreso durante un tiempo, o la oculta. Solo la barra: el script que llama lleva la acción, su animación y la lógica de cancelar. Usa en su lugar progress (cliente) o progressFor (servidor) de la lib, que hacen todo eso.

Lado: Cliente · Espera: no

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

Prop

Type

Mientras se muestra la barra, la tecla de cancelar (Backspace) dispara el evento local ai-lib:client:cancelProgress.

ShowPrompt and HidePrompt

Muestra o actualiza uno de los avisos del recurso que llama, o lo oculta. Usa showPrompt / hidePrompt de la lib, o mejor Points de la lib, que muestra y oculta los avisos por distancia por ti.

Lado: Cliente · Espera: no

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

Prop

Type

Cuando el jugador pulsa la tecla de interacción mientras tu aviso está arriba, se dispara el evento local ai-lib:client:promptPressed (resource, id); onPromptPressed de la lib lo filtra para tu recurso.

CloseDialog

Cierra el menú o cuadro de entrada abierto del recurso que llama. La llamada menu.show / input que espera responde null, como si el jugador lo hubiera cerrado. Lado: Cliente · Espera: no.

Firma
CloseDialog(): void

Exports internos

Los usan las propias funciones de la lib. Tú no los llamas.

ExportLo usa
OpenMenu(requestId, request), OpenInput(requestId, request), OpenMinigame(requestId, request)menu.show, input, skillCheck, lockpick de la lib. Las respuestas vuelven como ai-lib:client:menuResult / inputResult con el id de la petición.
AddZone(key, shape, interval, inside), RemoveZone(key)Zones de la lib en recursos JavaScript: ai-lib comprueba las zonas de todos los recursos con un solo temporizador y responde con ai-lib:client:zone (owner, key, inside).
AddModelPoint(key, def, entity), RemoveModelPoint(key)Points.addModel / addVehicle de la lib en modo aviso: ai-lib encuentra el objeto más cercano y responde con ai-lib:client:modelPoint (owner, key, entity).

Eventos

EventoLadoArgumentosQué es
ai-lib:client:notifyServidor a clientenotification: NotificationMuestra una tarjeta en la pantalla de ese jugador. Lo envía notify(source, text, kind?, duration?) de la lib de servidor.
ai-lib:client:promptPressedCliente (local)resource: string, id: stringSe pulsó la tecla de interacción mientras el aviso de ese recurso estaba arriba.
ai-lib:client:cancelProgressCliente (local)ningunoSe pulsó la tecla de cancelar mientras se muestra una barra de progreso.
// Servidor: una notificación sin la lib.
emitNet("ai-lib:client:notify", source, { text: "Welcome to the city", kind: "info", duration: 6000 });

En esta página