AI Core
Dokumentacja APILib: shared i fivem

Tekst i liczby

formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom i rollChance oraz gdzie jest opisany ServerClock.

Małe funkcje pomocnicze do tego, co czytają gracze (pieniądze, wagi, przetłumaczone teksty), losowania i odliczania zgodnego z zegarem serwera.

TypeScript
import { formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom, rollChance, ServerClock } from "@aicore-fivem/lib/shared";

Tekst

formatText

Wypełnia w tekście miejsca {0}, {1}... wartościami według pozycji. Tłumaczenie może przesunąć albo powtórzyć miejsce ("{1} paid {0}"), dlatego wartości idą według numeru, a nie według kolejności.

Strona: Klient, serwer i NUI · Czeka: nie

Sygnatura
formatText(template: string, args: ReadonlyArray<string | number>): string
Lua
local text = aiLib.formatText(template, ...) -- wartości jako osobne argumenty

Parametry

Prop

Type

Zwracana wartość

string: tekst z wypełnionym każdym miejscem, które ma wartość. Miejsce bez wartości zostaje bez zmian ({2}).

Przykład

import { formatText } from "@aicore-fivem/lib/shared";

formatText("You paid ${0} for {1} items", [250, 3]); // "You paid $250 for 3 items"

Rzadko wywołujesz ją sam: funkcje tłumaczeń (createLocale, aiLib.locale, LangTexts) już wypełniają miejsca. Zobacz Tłumaczenia.

stripGameText

Zamienia tekst z innego skryptu w zwykły tekst: usuwa tagi HTML, kody kolorów i klawiszy GTA (~r~, ~INPUT_PICKUP~) oraz &nbsp;, zwija ciągi spacji i przycina. Używaj jej, zanim pokażesz tekst innego skryptu we własnym UI.

Strona: Klient, serwer i NUI · Czeka: nie

Sygnatura
stripGameText(text: unknown): string
Lua
local plain = aiLib.stripGameText(text)

Parametry

Prop

Type

Zwracana wartość

string: zwykły tekst. "" dla null / undefined (Lua: nil).

Przykład

import { stripGameText } from "@aicore-fivem/lib/shared";

stripGameText("Press ~INPUT_CONTEXT~ to <b>open</b>  the ~g~shop~s~"); // "Press to open the shop"

Liczby

round

Zaokrągla liczbę do podanej liczby miejsc po przecinku.

Strona: Klient, serwer i NUI · Czeka: nie

Sygnatura
round(value: number, decimals?: number): number
Lua
local rounded = aiLib.numbers.round(value, decimals)

Parametry

Prop

Type

Zwracana wartość

number: zaokrąglona wartość.

Przykład

import { round } from "@aicore-fivem/lib/shared";

round(12.345, 1); // 12.3
round(12.5);      // 13

groupDigits

Zapisuje liczbę z separatorem co trzy cyfry: 1234567 staje się 1,234,567. Zachowuje znak i część dziesiętną. Używaj jej dla każdej kwoty pieniędzy, którą widzą gracze.

Strona: Klient, serwer i NUI · Czeka: nie

Sygnatura
groupDigits(value: number | string, separator?: string): string
Lua
local text = aiLib.numbers.groupDigits(value, separator)

Parametry

Prop

Type

Zwracana wartość

string: liczba z pogrupowanymi cyframi.

Przykład

import { groupDigits } from "@aicore-fivem/lib/shared";

groupDigits(1234567);        // "1,234,567"
groupDigits(-9876.5);        // "-9,876.5"
groupDigits(1500000, ".");   // "1.500.000"

formatWeight

Zapisuje wagę w gramach tak, jak czytają ją gracze: poniżej 1 kg w gramach, od 1 kg w kilogramach z jednym miejscem po przecinku (pełne kilogramy od 100 kg), cyfry pogrupowane.

Strona: Klient, serwer i NUI · Czeka: nie

Sygnatura
formatWeight(grams: number): string

Lua: brak odpowiednika.

Parametry

Prop

Type

Zwracana wartość

string: "750 g", "1.5 kg", "1,250 kg".

Przykład

import { formatWeight } from "@aicore-fivem/lib/shared";

formatWeight(750);      // "750 g"
formatWeight(1500);     // "1.5 kg"
formatWeight(1250000);  // "1,250 kg"

Losowanie

randomInt

Losowa liczba całkowita od min do max, obie włącznie.

Strona: Klient, serwer i NUI · Czeka: nie

Sygnatura
randomInt(min: number, max: number): number

Lua: brak odpowiednika; użyj math.random(min, max).

Parametry

Prop

Type

Zwracana wartość

number: liczba całkowita od min do max.

Przykład

import { randomInt } from "@aicore-fivem/lib/shared";

const payout = randomInt(150, 300); // 150, 151, ... albo 300

pickRandom

Jeden losowy element listy.

Strona: Klient, serwer i NUI · Czeka: nie

Sygnatura
pickRandom<T>(list: readonly T[]): T | undefined

Lua: brak odpowiednika; użyj list[math.random(#list)].

Parametry

Prop

Type

Zwracana wartość

Jeden element albo undefined, gdy lista jest pusta.

Przykład

import { pickRandom } from "@aicore-fivem/lib/shared";

const loot = pickRandom(["goldbar", "rolex", "diamond"]) ?? "goldbar";

rollChance

true z szansą percent na 100.

Strona: Klient, serwer i NUI · Czeka: nie

Sygnatura
rollChance(percent: number): boolean

Lua: brak odpowiednika; użyj math.random() * 100 < percent.

Parametry

Prop

Type

Zwracana wartość

true mniej więcej percent razy na 100.

Przykład

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

function useLockpick(source: number, slot: number): void {
  if (rollChance(25)) inventory.removeItem(source, "lockpick", 1, undefined, slot); // psuje się 1 raz na 4
}

Losuj na serwerze wszystko, co daje przedmioty albo pieniądze. Losowanie na kliencie może wymusić oszust.

Czas

ServerClock

Zegar serwera na kliencie, do odliczań, które nie zależą od własnego zegara klienta. Jest eksportowany z @aicore-fivem/lib/shared i nie ma odpowiednika w Lua. Jego pełny opis (sync, now, toLocal, przykład odliczania) jest na stronie Kamera i czas: ServerClock.

Na tej stronie