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:
- La lib: resumen
- Lib: funciones de cliente
- Lib: funciones de servidor
- Lib: funciones compartidas
- Lua (
aiLib): los equivalentes en Lua y su orden de argumentos
Cargarlo
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')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
Notify(notification: Notification): voidexports['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
import { notify } from "@aicore-fivem/lib/client";
notify("Your vehicle was stored", "success", 5000);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
ShowProgress(label: string, duration: number): void
HideProgress(): voidProp
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
ShowPrompt(id: string, text: string, at?: PromptAnchor): void
HidePrompt(id: string): voidProp
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.
CloseDialog(): voidExports internos
Los usan las propias funciones de la lib. Tú no los llamas.
| Export | Lo 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
| Evento | Lado | Argumentos | Qué es |
|---|---|---|---|
ai-lib:client:notify | Servidor a cliente | notification: Notification | Muestra una tarjeta en la pantalla de ese jugador. Lo envía notify(source, text, kind?, duration?) de la lib de servidor. |
ai-lib:client:promptPressed | Cliente (local) | resource: string, id: string | Se pulsó la tecla de interacción mientras el aviso de ese recurso estaba arriba. |
ai-lib:client:cancelProgress | Cliente (local) | ninguno | Se 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 });ai-lib
La interfaz compartida del jugador que usan todos los scripts (notificaciones, barra de progreso, avisos, menús, cuadros de entrada, minijuegos) y las utilidades de AI Core para recursos en Lua y JavaScript.
ai-loading
La pantalla de carga que ven los jugadores mientras carga el juego, con el nombre de tu servidor, un fondo, el progreso de carga y consejos.