AI Core
Dokumentacja APIAI Core: eksporty serwerowe

Metadane i ustawienia

Odczytuj i zapisuj worek metadanych postaci, odczytuj branding serwera i listę nieaktualnych skryptów.

GetMeta

Jedna wartość z metadanych postaci: dowolnego worka nazwanych wartości zapisywanego z postacią. Skrypty ESX i QB trzymają tam przez most swoje dodatkowe dane postaci (hunger, thirst, armor, isdead...), a twój skrypt może trzymać własne małe wartości.

Strona: Serwer · Czeka: nie · Lib: brak

Sygnatura
GetMeta(src: number, key: string): unknown
Lua
local value = exports['ai-core']:GetMeta(source, 'myscript_xp') -- dowolna wartość lub nil

Parametry

Prop

Type

Zwraca

unknown: zapisana wartość (liczba, tekst, wartość logiczna, lista lub tabela), tak jak została ustawiona. null, gdy klucz nie jest ustawiony albo gracz nie ma wczytanej postaci. Sprawdź typ przed użyciem: wartość mógł zapisać inny skrypt albo starsza wersja twojego.

Przykład

import { resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

/** The character's fishing level, 1 when none was stored yet. */
export function fishingLevel(source: number): number {
  const value = core.GetMeta(source, "myscript_level");
  return typeof value === "number" && Number.isInteger(value) && value > 0 ? value : 1;
}

SetMeta

Zapisuje jedną wartość w metadanych postaci. Wartość jest zapisywana przy następnym okresowym zapisie postaci (ustawienie panelu, domyślnie co 5 minut), przy wylogowaniu i gdy serwer się zatrzymuje.

Strona: Serwer · Czeka: nie · Lib: brak

Sygnatura
SetMeta(src: number, key: string, value: unknown): boolean
Lua
local ok = exports['ai-core']:SetMeta(source, 'myscript_level', 3)

Parametry

Prop

Type

Zwraca

boolean: true, gdy wartość została zapisana (lub usunięta). false, gdy gracz nie ma wczytanej postaci albo key nie jest tekstem.

Zmiana od razu dociera do własnej gry gracza i wysyła serwerowe zdarzenie ai-core:metaChanged (src, key, value).

Przykład

import { resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

/** One level up after enough catches. */
export function levelUp(source: number): void {
  const level = core.GetMeta(source, "myscript_level");
  const next = (typeof level === "number" ? level : 1) + 1;
  core.SetMeta(source, "myscript_level", next);
}

Metadane są na małe wartości należące do jednej postaci (poziom, flaga, kilka liczb). Rosnące listy (historia, każdy połów) i wszystko, co wyszukujesz lub liczysz między postaciami, należą do twojej własnej tabeli w bazie danych. Wartości w metadanych nie są zapisywane od razu: pieniądze i przedmioty nigdy tam nie trafiają.

GetBranding

Nazwa serwera, podtytuł, hasła i obraz tła z ustawień General w panelu. Używaj tego, aby pokazać tę samą nazwę na własnych pełnoekranowych menu.

Strona: Serwer · Czeka: nie · Lib: brak

Sygnatura
GetBranding(): Branding
Lua
local brand = exports['ai-core']:GetBranding() -- tabela

Parametry

Brak.

Zwraca

Branding: kopia z name, subtitle, tagline, taglineSub i background ("skyline" lub "wet-drive", obraz w ai-core). Zobacz Branding.

Przykład

import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

// Ekran powitalny pokazuje nazwę serwera.
onClientCallback("myscript:welcome", () => {
  const { name, tagline } = core.GetBranding();
  return { ok: true, name, tagline };
});

GetUpdates

Skrypty z nowszym wydaniem na GitHubie niż uruchomiona wersja, ze sprawdzania aktualizacji ai-core. ai-core pyta GitHub najwyżej raz na 6 godzin na skrypt (i gdy skrypt startuje) o każdy uruchomiony skrypt z linią repository w jego fxmanifest.lua, chyba że w panelu wyłączone jest Check for updates.

Strona: Serwer · Czeka: nie · Lib: brak

Sygnatura
GetUpdates(): UpdateInfo[]
Lua
local outdated = exports['ai-core']:GetUpdates() -- lista tabel

Parametry

Brak.

Zwraca

UpdateInfo[]: jeden wpis na nieaktualny skrypt z resource, label (nazwa, pod którą ludzie go znają), current (uruchomiona wersja), latest (najnowsze wydanie) i url (strona wydania). Pusta lista, gdy wszystko jest aktualne albo nic jeszcze nie zostało sprawdzone (pierwsze sprawdzenie działa 15 sekund po starcie). Zobacz UpdateInfo.

Przykład

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

addCommand("outdated", { help: "Lists outdated scripts", restricted: true }, () => {
  for (const u of core.GetUpdates()) console.log(`${u.label}: ${u.current} -> ${u.latest} (${u.url})`);
});

Na tej stronie