AI Core
API-Referenzai-core: Client-Exports

Items

Das Inventar des Spielers öffnen, ein Item prüfen, die Waffe in der Hand lesen und die Item-Auswahl für Admins öffnen, egal welches Inventar der Server nutzt.

Diese Exports laufen über die Inventar-Ebene von ai-core: Das Inventar, das der Serverbesitzer gewählt hat (ai-inventory oder ein unterstütztes Inventar eines Drittanbieters), beantwortet sie. Dein Skript ruft nie die Exports eines bestimmten Inventars auf und funktioniert deshalb weiter, wenn das Inventar wechselt. Solange kein Inventar läuft, antworten die Prüfungen mit false / null, und Öffnen bewirkt nichts.

Der Client liest und öffnet nur. Items geben und nehmen passiert immer auf dem Server (Lib inventory auf dem Server oder die Server-Exports von ai-core), wo der Server den Spieler zuerst prüft.

OpenInventory

Öffnet den eigenen Inventarbildschirm des Spielers im aktiven Inventar (mit dem, was dieses Inventar drumherum zeigt: den Boden, einen Kofferraum, ein Handschuhfach).

Seite: Client · Wartet: nein

Signature
OpenInventory(): void
Lua
exports['ai-core']:OpenInventory() -- oder aiLib.inventory.openInventory()

Parameter

Keine.

Rückgabe

Nichts. Ohne aktives Inventar öffnet sich nichts.

Beispiel

resource/client/index.ts
import { inventory } from "@aicore-fivem/lib/client";

RegisterCommand("bag", () => inventory.openInventory(), false);

HasItem

Sagt, ob der Spieler mindestens eine bestimmte Anzahl eines Items hat. Nutze es, um eine Option ein- oder auszublenden (einen Radial-Eintrag, eine Target-Option), bevor du den Server bittest, etwas zu tun.

Seite: Client · Wartet: nein

Signature
HasItem(item: string, count?: number): boolean
Lua
local has = exports['ai-core']:HasItem(item, count) -- oder aiLib.inventory.hasItem(item, count)

Parameter

Prop

Type

Rückgabe

boolean: true, wenn der Spieler mindestens count hat. false, wenn er weniger hat, item kein String ist oder kein Inventar läuft.

Beispiel

resource/client/index.ts
import { inventory, notify, triggerServerCallback } from "@aicore-fivem/lib/client";
import { Locale } from "common";

RegisterCommand(
  "picklock",
  async () => {
    // Eine schnelle Prüfung für den Spieler; der Server prüft das Item erneut, bevor er etwas tut.
    if (!inventory.hasItem("lockpick")) return notify(Locale("NEED_LOCKPICK"), "error");
    await triggerServerCallback("myscript:picklock", []);
  },
  false,
);

Eine Client-Antwort kann von einem Cheater gefälscht werden. Nutze HasItem für das, was der Spieler sieht; der Server muss das Item selbst prüfen und entfernen.

GetCurrentWeapon

Gibt das Waffen-Item zurück, das der Spieler in der Hand hält, mit seinem Label und Bild, über das aktive Inventar.

Seite: Client · Wartet: nein

Signature
GetCurrentWeapon(): HeldWeapon | null
Lua
local weapon = exports['ai-core']:GetCurrentWeapon() -- { name, label, image? } oder nil

Parameter

Keine.

Rückgabe

HeldWeapon, solange ein Waffen-Item in der Hand ist, null, wenn die Hände leer sind oder kein Inventar läuft.

Prop

Type

Beispiel

resource/client/weapon.ts
import { inventory, onCache } from "@aicore-fivem/lib/client";

// Lies es, wenn die Waffe in der Hand wechselt, nicht in jedem Frame.
onCache("weapon", () => {
  const weapon = inventory.currentWeapon();
  SendNUIMessage({ action: "weapon", data: weapon });
});

OpenItemPicker

Öffnet die Item-Auswahl von ai-core: ein durchsuchbares Raster aller Items des aktiven Inventars mit Bildern, in dem der Spieler eine Liste von Items und Mengen zusammenstellt. Sie ist für Admin-Werkzeuge gedacht (einem Spieler Items geben): Die Item-Liste kommt vom Server, der sie nur an Admins sendet. Die Liste, die der Spieler übernimmt, kommt später als Client-Event ai-lib:client:menuResult an.

Seite: Client · Wartet: nein (die Antwort kommt als Event; itemPicker der Lib wartet für dich)

Signature
OpenItemPicker(requestId: number, request: ItemPickerRequest): void
Lua
local list = aiLib.itemPicker({ title = 'Give items', target = 12 }) -- wartet; innerhalb eines Threads aufrufen

Parameter

Prop

Type

ItemPickerRequest

Siehe auch ItemPickerRequest.

Prop

Type

Rückgabe

Sofort nichts. Später löst ai-core ai-lib:client:menuResult mit (resource, requestId, value) aus: value ist eine PickedItem[]-Liste ({ name, count }), wenn der Spieler sie übernommen hat, null, wenn er die Auswahl geschlossen hat. itemPicker(request) der Lib gibt Promise<PickedItem[] | null> mit diesem Wert zurück, und aiLib.itemPicker(request) gibt die Liste oder nil zurück.

Beispiel

resource/client/admin.ts
import { itemPicker, triggerServerCallback } from "@aicore-fivem/lib/client";
import { Locale } from "common";

// Admin-Werkzeug: Items für einen Spieler auswählen, der Server prüft den Admin und gibt jedes Item.
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]);
}

Die Auswahl zeigt Items nur Admins (ai.admin): Für alle anderen ist das Raster leer. Der Server beantwortet höchstens zwei Öffnungen pro Spieler in 2 Sekunden; ein target, der nicht online ist, zählt als der auswählende Admin. Die Antwort des Spielers sind Client-Daten: Dein Server muss prüfen, dass der Aufrufer ein Admin ist, und jedes Item und jede Menge prüfen, bevor er etwas gibt.

Auf dieser Seite