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:
- Biblioteka: przegląd
- Biblioteka: funkcje klienta
- Biblioteka: funkcje serwera
- Biblioteka: funkcje współdzielone
- Lua (
aiLib): odpowiedniki w Lua i kolejność ich argumentów
Wczytywanie
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')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
Notify(notification: Notification): voidexports['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
import { notify } from "@aicore-fivem/lib/client";
notify("Your vehicle was stored", "success", 5000);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
ShowProgress(label: string, duration: number): void
HideProgress(): voidProp
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
ShowPrompt(id: string, text: string, at?: PromptAnchor): void
HidePrompt(id: string): voidProp
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.
CloseDialog(): voidEksporty wewnętrzne
Używają ich własne funkcje biblioteki. Nie wywołujesz ich.
| Eksport | Uż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
| Zdarzenie | Strona | Argumenty | Co to jest |
|---|---|---|---|
ai-lib:client:notify | serwer do klienta | notification: Notification | Pokazuje kartę na ekranie tego gracza. Wysyła je serwerowe notify(source, text, kind?, duration?) z biblioteki. |
ai-lib:client:promptPressed | klient (lokalne) | resource: string, id: string | Klawisz interakcji został naciśnięty, gdy podpowiedź tego zasobu była na wierzchu. |
ai-lib:client:cancelProgress | klient (lokalne) | brak | Klawisz 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 });ai-lib
Wspólne UI gracza, z którego korzysta każdy skrypt (powiadomienia, pasek postępu, podpowiedzi, menu, okna wprowadzania, minigry), oraz funkcje pomocnicze AI Core dla zasobów Lua i JavaScript.
ai-loading
Ekran ładowania, który gracze widzą podczas wczytywania gry, z nazwą twojego serwera, tłem, postępem ładowania i wskazówkami.