AI Core
Grundlagenai-lib

ai-lib für Entwickler

ai-lib in einer Lua- oder JavaScript-Ressource laden, wo die Lib-Referenz liegt, und die eigenen Client-Exports und Events von ai-lib.

ai-lib bringt @aicore-fivem/lib für Ressourcen mit, die das npm-Paket nicht bündeln. Die Funktionen selbst sind einmal dokumentiert, in der Lib-Referenz:

Laden

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

Module werden bei der ersten Nutzung geladen (aiLib.Points, aiLib.progress...), innerhalb deiner Ressource, sodass die Punkte, Tastenbelegungen und Callbacks, die du erstellst, deiner Ressource gehören und verschwinden, wenn sie stoppt. Funktionen, die warten (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor), müssen in einem Thread oder Event-Handler laufen.

Client-Exports

notify, progress, showPrompt, menu, input, skillCheck und lockpick der Lib rufen diese für dich auf; nutze die Lib-Funktionen. Sie sind als AiLibClientExports in @aicore-fivem/shared typisiert (resourceExport("ai-lib")). Hinweise, Menüs und Zonen gehören der aufrufenden Ressource und verschwinden, wenn sie stoppt.

Notify

Zeigt eine Benachrichtigungskarte auf dem Bildschirm dieses Spielers.

Seite: Client · Wartet: nein

Signatur
Notify(notification: Notification): void
Lua
exports['ai-lib']:Notify({ text = 'Saved', kind = 'success' })
-- dasselbe über die Lib: aiLib.notify('Saved', 'success')

Notification

Prop

Type

Rückgabewert

Nichts. Eine Benachrichtigung ohne text wird verworfen. Wenn der Betreiber im Panel ein anderes Benachrichtigungsskript gewählt hat, geht die Karte dorthin; nimmt dieses Skript sie nicht an, zeichnet ai-lib sie.

Beispiel

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";

// Dieselbe Karte auf dem Bildschirm eines Spielers, vom Server gesendet.
onClientEvent("myscript:collectPay", (source) => {
  notify(source, "You were paid $500", "info");
});

ShowProgress and HideProgress

Zeigt den Fortschrittsbalken für eine bestimmte Zeit oder blendet ihn aus. Nur den Balken: Das aufrufende Skript führt die Aktion, ihre Animation und die Abbruchlogik aus. Nutze stattdessen progress (Client) oder progressFor (Server) der Lib, die all das erledigen.

Seite: Client · Wartet: nein

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

Prop

Type

Solange der Balken angezeigt wird, löst die Abbruchtaste (Rücktaste) das lokale Event ai-lib:client:cancelProgress aus.

ShowPrompt and HidePrompt

Zeigt oder aktualisiert einen der Hinweise der aufrufenden Ressource oder blendet ihn aus. Nutze showPrompt / hidePrompt der Lib oder besser Points der Lib, das Hinweise für dich nach Entfernung ein- und ausblendet.

Seite: Client · Wartet: nein

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

Prop

Type

Wenn der Spieler die Interaktionstaste drückt, während dein Hinweis oben liegt, wird das lokale Event ai-lib:client:promptPressed (resource, id) ausgelöst; onPromptPressed der Lib filtert es für deine Ressource.

CloseDialog

Schließt das offene Menü oder den Eingabedialog der aufrufenden Ressource. Der wartende Aufruf menu.show / input antwortet mit null, als hätte der Spieler ihn geschlossen. Seite: Client · Wartet: nein.

Signatur
CloseDialog(): void

Interne Exports

Diese werden von den eigenen Funktionen der Lib genutzt. Du rufst sie nicht auf.

ExportGenutzt von
OpenMenu(requestId, request), OpenInput(requestId, request), OpenMinigame(requestId, request)menu.show, input, skillCheck, lockpick der Lib. Antworten kommen als ai-lib:client:menuResult / inputResult mit der Request-ID zurück.
AddZone(key, shape, interval, inside), RemoveZone(key)Zones der Lib in JavaScript-Ressourcen: ai-lib prüft die Zonen aller Ressourcen mit einem Timer und antwortet mit ai-lib:client:zone (owner, key, inside).
AddModelPoint(key, def, entity), RemoveModelPoint(key)Points.addModel / addVehicle der Lib im Prompt-Modus: ai-lib findet das nächste Objekt und antwortet mit ai-lib:client:modelPoint (owner, key, entity).

Events

EventSeiteArgumenteWas es ist
ai-lib:client:notifyServer an Clientnotification: NotificationZeigt eine Karte auf dem Bildschirm dieses Spielers. Das serverseitige notify(source, text, kind?, duration?) der Lib sendet es.
ai-lib:client:promptPressedClient (lokal)resource: string, id: stringDie Interaktionstaste wurde gedrückt, während der Hinweis dieser Ressource oben lag.
ai-lib:client:cancelProgressClient (lokal)keineDie Abbruchtaste wurde gedrückt, während ein Fortschrittsbalken angezeigt wird.
// Server: eine Benachrichtigung ohne die Lib.
emitNet("ai-lib:client:notify", source, { text: "Welcome to the city", kind: "info", duration: 6000 });

Auf dieser Seite