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:
- Die Lib: Übersicht
- Lib: Client-Funktionen
- Lib: Server-Funktionen
- Lib: gemeinsame Funktionen
- Lua (
aiLib): die Lua-Gegenstücke und ihre Argumentreihenfolge
Laden
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')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
Notify(notification: Notification): voidexports['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
import { notify } from "@aicore-fivem/lib/client";
notify("Your vehicle was stored", "success", 5000);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
ShowProgress(label: string, duration: number): void
HideProgress(): voidProp
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
ShowPrompt(id: string, text: string, at?: PromptAnchor): void
HidePrompt(id: string): voidProp
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.
CloseDialog(): voidInterne Exports
Diese werden von den eigenen Funktionen der Lib genutzt. Du rufst sie nicht auf.
| Export | Genutzt 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
| Event | Seite | Argumente | Was es ist |
|---|---|---|---|
ai-lib:client:notify | Server an Client | notification: Notification | Zeigt eine Karte auf dem Bildschirm dieses Spielers. Das serverseitige notify(source, text, kind?, duration?) der Lib sendet es. |
ai-lib:client:promptPressed | Client (lokal) | resource: string, id: string | Die Interaktionstaste wurde gedrückt, während der Hinweis dieser Ressource oben lag. |
ai-lib:client:cancelProgress | Client (lokal) | keine | Die 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 });ai-lib
Die gemeinsame Spieler-UI, die jedes Skript nutzt (Benachrichtigungen, Fortschrittsbalken, Hinweise, Menüs, Eingabedialoge, Minispiele), und die AI-Core-Helfer für Lua- und JavaScript-Ressourcen.
ai-loading
Der Ladebildschirm, den Spieler sehen, während das Spiel lädt, mit deinem Servernamen, einem Hintergrund, dem Ladefortschritt und Tipps.