AI Core
Podstawyai-lib

ai-lib dla deweloperów

Wczytywanie ai-lib w zasobie Lua lub JavaScript, gdzie jest dokumentacja biblioteki oraz własne eksporty klienta i zdarzenia ai-lib.

ai-lib zawiera @aicore-fivem/lib dla zasobów, które nie dołączają pakietu npm. Same funkcje są opisane raz, w dokumentacji biblioteki:

Wczytywanie

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

Moduły wczytują się przy pierwszym użyciu (aiLib.Points, aiLib.progress...), wewnątrz twojego zasobu, więc punkty, klawisze i callbacki, które tworzysz, należą do twojego zasobu i znikają, gdy się zatrzymuje. Funkcje, które czekają (triggerServerCallback, menu.show, progress, spawnVehicle, progressFor), muszą działać wewnątrz wątku lub handlera zdarzenia.

Eksporty klienta

notify, progress, showPrompt, menu, input, skillCheck i lockpick z biblioteki wywołują je za ciebie; używaj funkcji biblioteki. Są typowane jako AiLibClientExports w @aicore-fivem/shared (resourceExport("ai-lib")). Podpowiedzi, menu i strefy należą do wywołującego zasobu i znikają, gdy się zatrzymuje.

Notify

Pokazuje kartę powiadomienia na ekranie tego gracza.

Strona: klient · Czeka: nie

Sygnatura
Notify(notification: Notification): void
Lua
exports['ai-lib']:Notify({ text = 'Saved', kind = 'success' })
-- to samo przez bibliotekę: aiLib.notify('Saved', 'success')

Notification

Prop

Type

Zwraca

Nic. Powiadomienie bez text jest odrzucane. Gdy właściciel wybrał w panelu inny skrypt powiadomień, karta trafia tam; jeśli ten skrypt jej nie przyjmie, rysuje ją ai-lib.

Przykład

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

// Ta sama karta na ekranie jednego gracza, wysłana z serwera.
onClientEvent("myscript:collectPay", (source) => {
  notify(source, "You were paid $500", "info");
});

ShowProgress and HideProgress

Pokazuje pasek postępu na określony czas lub go ukrywa. Tylko pasek: wywołujący skrypt wykonuje czynność, jej animację i logikę anulowania. Zamiast tego używaj progress (klient) lub progressFor (serwer) z biblioteki, które robią to wszystko.

Strona: klient · Czeka: nie

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

Prop

Type

Gdy pasek jest widoczny, klawisz anulowania (Backspace) wywołuje lokalne zdarzenie ai-lib:client:cancelProgress.

ShowPrompt and HidePrompt

Pokazuje lub aktualizuje jedną z podpowiedzi wywołującego zasobu albo ją ukrywa. Używaj showPrompt / hidePrompt z biblioteki, a jeszcze lepiej Points z biblioteki, które pokazuje i ukrywa podpowiedzi według odległości za ciebie.

Strona: klient · Czeka: nie

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

Prop

Type

Gdy gracz naciśnie klawisz interakcji, a twoja podpowiedź jest na wierzchu, wywoływane jest lokalne zdarzenie ai-lib:client:promptPressed (resource, id); onPromptPressed z biblioteki filtruje je dla twojego zasobu.

CloseDialog

Zamyka otwarte menu lub okno wprowadzania wywołującego zasobu. Oczekujące wywołanie menu.show / input odpowiada null, jakby gracz je zamknął. Strona: klient · Czeka: nie.

Sygnatura
CloseDialog(): void

Eksporty wewnętrzne

Używają ich własne funkcje biblioteki. Nie wywołujesz ich.

EksportUżywany przez
OpenMenu(requestId, request), OpenInput(requestId, request), OpenMinigame(requestId, request)menu.show, input, skillCheck, lockpick z biblioteki. Odpowiedzi wracają jako ai-lib:client:menuResult / inputResult z ID żądania.
AddZone(key, shape, interval, inside), RemoveZone(key)Zones z biblioteki w zasobach JavaScript: ai-lib sprawdza strefy wszystkich zasobów jednym timerem i odpowiada ai-lib:client:zone (owner, key, inside).
AddModelPoint(key, def, entity), RemoveModelPoint(key)Points.addModel / addVehicle z biblioteki w trybie podpowiedzi: ai-lib znajduje najbliższy obiekt i odpowiada ai-lib:client:modelPoint (owner, key, entity).

Zdarzenia

ZdarzenieStronaArgumentyCo to jest
ai-lib:client:notifyserwer do klientanotification: NotificationPokazuje kartę na ekranie tego gracza. Wysyła je serwerowe notify(source, text, kind?, duration?) z biblioteki.
ai-lib:client:promptPressedklient (lokalne)resource: string, id: stringKlawisz interakcji został naciśnięty, gdy podpowiedź tego zasobu była na wierzchu.
ai-lib:client:cancelProgressklient (lokalne)brakKlawisz anulowania został naciśnięty, gdy widoczny jest pasek postępu.
// Serwer: powiadomienie bez biblioteki.
emitNet("ai-lib:client:notify", source, { text: "Welcome to the city", kind: "info", duration: 6000 });

Na tej stronie