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.
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
formatText(template: string, args: ReadonlyArray<string | number>): stringlocal text = aiLib.formatText(template, ...) -- wartości jako osobne argumentyParametry
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 , 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
stripGameText(text: unknown): stringlocal 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
round(value: number, decimals?: number): numberlocal 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); // 13groupDigits
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
groupDigits(value: number | string, separator?: string): stringlocal 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
formatWeight(grams: number): stringLua: 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
randomInt(min: number, max: number): numberLua: 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 300pickRandom
Jeden losowy element listy.
Strona: Klient, serwer i NUI · Czeka: nie
pickRandom<T>(list: readonly T[]): T | undefinedLua: 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
rollChance(percent: number): booleanLua: brak odpowiednika; użyj math.random() * 100 < percent.
Parametry
Prop
Type
Zwracana wartość
true mniej więcej percent razy na 100.
Przykład
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.