Przedmioty
Otwórz ekwipunek gracza, sprawdź przedmiot, odczytaj broń w ręce i otwórz wybierak przedmiotów administratora, niezależnie od ekwipunku na serwerze.
Te eksporty przechodzą przez warstwę ekwipunku ai-core: odpowiada na nie ekwipunek wybrany przez właściciela serwera (ai-inventory albo obsługiwany ekwipunek zewnętrzny). Twój skrypt nigdy nie wywołuje eksportów konkretnego ekwipunku, więc działa dalej, gdy ekwipunek się zmieni. Dopóki nie działa żaden ekwipunek, sprawdzenia odpowiadają false / null, a otwieranie nic nie robi.
Klient tylko czyta i otwiera. Dawanie i zabieranie przedmiotów zawsze dzieje się na serwerze (inventory liba na serwerze albo serwerowe eksporty ai-core), gdzie serwer najpierw sprawdza gracza.
OpenInventory
Otwiera własny ekran ekwipunku gracza w aktywnym ekwipunku (z tym, co ten ekwipunek pokazuje obok: ziemia, bagażnik, schowek w desce rozdzielczej).
Strona: Klient · Czeka: nie
OpenInventory(): voidexports['ai-core']:OpenInventory() -- albo aiLib.inventory.openInventory()Parametry
Brak.
Zwraca
Nic. Bez aktywnego ekwipunku nic się nie otwiera.
Przykład
import { inventory } from "@aicore-fivem/lib/client";
RegisterCommand("bag", () => inventory.openInventory(), false);HasItem
Mówi, czy gracz ma co najmniej daną liczbę przedmiotu. Używaj tego, aby pokazać lub ukryć opcję (element radialny, opcję targetu), zanim poprosisz serwer o zrobienie czegoś.
Strona: Klient · Czeka: nie
HasItem(item: string, count?: number): booleanlocal has = exports['ai-core']:HasItem(item, count) -- albo aiLib.inventory.hasItem(item, count)Parametry
Prop
Type
Zwraca
boolean: true, gdy gracz ma co najmniej count. false, gdy ma mniej, gdy item nie jest stringiem albo gdy nie działa żaden ekwipunek.
Przykład
import { inventory, notify, triggerServerCallback } from "@aicore-fivem/lib/client";
import { Locale } from "common";
RegisterCommand(
"picklock",
async () => {
// Szybkie sprawdzenie dla gracza; serwer sprawdza przedmiot ponownie, zanim cokolwiek zrobi.
if (!inventory.hasItem("lockpick")) return notify(Locale("NEED_LOCKPICK"), "error");
await triggerServerCallback("myscript:picklock", []);
},
false,
);Odpowiedź klienta może zostać sfałszowana przez cheatera. Używaj HasItem do tego, co gracz widzi; serwer musi sam sprawdzić i zabrać przedmiot.
GetCurrentWeapon
Zwraca przedmiot broni, który gracz trzyma w ręce, z jego etykietą i obrazkiem, przez aktywny ekwipunek.
Strona: Klient · Czeka: nie
GetCurrentWeapon(): HeldWeapon | nulllocal weapon = exports['ai-core']:GetCurrentWeapon() -- { name, label, image? } lub nilParametry
Brak.
Zwraca
HeldWeapon, gdy przedmiot broni jest w ręce, null, gdy ręce są puste albo nie działa żaden ekwipunek.
Prop
Type
Przykład
import { inventory, onCache } from "@aicore-fivem/lib/client";
// Odczytuj ją, gdy zmienia się broń w ręce, nie w każdej klatce.
onCache("weapon", () => {
const weapon = inventory.currentWeapon();
SendNUIMessage({ action: "weapon", data: weapon });
});OpenItemPicker
Otwiera wybierak przedmiotów ai-core: siatkę z wyszukiwaniem z każdym przedmiotem aktywnego ekwipunku z obrazkami, w której gracz układa listę przedmiotów i ilości. Jest przeznaczony dla narzędzi administratora (dawanie przedmiotów graczowi): lista przedmiotów pochodzi z serwera, który wysyła ją tylko administratorom. Lista, którą bierze gracz, przychodzi później jako klienckie zdarzenie ai-lib:client:menuResult.
Strona: Klient · Czeka: nie (odpowiedź przychodzi jako zdarzenie; itemPicker z liba czeka za ciebie)
OpenItemPicker(requestId: number, request: ItemPickerRequest): voidlocal list = aiLib.itemPicker({ title = 'Give items', target = 12 }) -- czeka; wywołuj wewnątrz wątkuParametry
Prop
Type
ItemPickerRequest
Zobacz też ItemPickerRequest.
Prop
Type
Zwraca
Nic od razu. Później ai-core wysyła ai-lib:client:menuResult z (resource, requestId, value): value to lista PickedItem[] ({ name, count }), gdy gracz ją wziął, null, gdy zamknął wybierak. itemPicker(request) z liba zwraca Promise<PickedItem[] | null> z tą wartością, a aiLib.itemPicker(request) zwraca listę lub nil.
Przykład
import { itemPicker, triggerServerCallback } from "@aicore-fivem/lib/client";
import { Locale } from "common";
// Narzędzie administratora: wybierz przedmioty dla gracza, serwer sprawdza administratora i daje każdy przedmiot.
export async function giveItemsTo(target: number): Promise<void> {
const list = await itemPicker({ title: Locale("GIVE_ITEMS"), target });
if (!list || list.length === 0) return;
await triggerServerCallback("myadmin:giveItems", [target, list]);
}Wybierak pokazuje przedmioty tylko administratorom (ai.admin): dla wszystkich innych siatka jest pusta. Serwer odpowiada na najwyżej dwa otwarcia na gracza w ciągu 2 sekund; target, który nie jest online, liczy się jako wybierający administrator. Odpowiedź gracza to dane klienta: twój serwer musi sprawdzić, czy wywołujący jest administratorem, i sprawdzić każdy przedmiot i ilość, zanim cokolwiek da.
Synchronizacja pogody i czasu
Wstrzymaj synchronizację pogody i czasu serwera w grze jednego gracza, gdy twój skrypt ustawia własne (wnętrze, scena), wznów ją i sprawdź, czy jest wstrzymana.
Menu radialne
Dodawaj, usuwaj i odświeżaj elementy w menu radialnym, którego używa serwer, z warunkami, podmenu i obsługą naciśnięć.