Text und Zahlen
formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom und rollChance, plus wo ServerClock dokumentiert ist.
Kleine Helfer für das, was Spieler lesen (Geld, Gewichte, übersetzte Texte), Zufallswürfe und Countdowns, die zur Server-Uhr passen.
import { formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom, rollChance, ServerClock } from "@aicore-fivem/lib/shared";Text
formatText
Füllt {0}, {1}...-Platzhalter in einem Text mit Werten nach Position. Eine Übersetzung kann einen Platzhalter verschieben oder wiederholen ("{1} paid {0}"), deshalb gehen die Werte nach Nummer, nicht nach Reihenfolge.
Seite: Client, Server und NUI · Wartet: nein
formatText(template: string, args: ReadonlyArray<string | number>): stringlocal text = aiLib.formatText(template, ...) -- Werte als einzelne ArgumenteParameter
Prop
Type
Rückgabewert
string: der Text mit jedem Platzhalter ausgefüllt, der einen Wert hat. Ein Platzhalter ohne Wert bleibt, wie er ist ({2}).
Beispiel
import { formatText } from "@aicore-fivem/lib/shared";
formatText("You paid ${0} for {1} items", [250, 3]); // "You paid $250 for 3 items"Du rufst es selten selbst auf: Die Sprach-Helfer (createLocale, aiLib.locale, LangTexts) füllen Platzhalter bereits aus. Siehe Sprache.
stripGameText
Macht Text aus einem anderen Skript schlicht: entfernt HTML-Tags, GTA-Farb- und Eingabecodes (~r~, ~INPUT_PICKUP~) und , fasst Folgen von Leerzeichen zusammen und trimmt. Nutze es, bevor du den Text eines anderen Skripts in deiner eigenen UI anzeigst.
Seite: Client, Server und NUI · Wartet: nein
stripGameText(text: unknown): stringlocal plain = aiLib.stripGameText(text)Parameter
Prop
Type
Rückgabewert
string: der schlichte Text. "" für null / undefined (Lua: nil).
Beispiel
import { stripGameText } from "@aicore-fivem/lib/shared";
stripGameText("Press ~INPUT_CONTEXT~ to <b>open</b> the ~g~shop~s~"); // "Press to open the shop"Zahlen
round
Rundet eine Zahl auf eine Anzahl von Nachkommastellen.
Seite: Client, Server und NUI · Wartet: nein
round(value: number, decimals?: number): numberlocal rounded = aiLib.numbers.round(value, decimals)Parameter
Prop
Type
Rückgabewert
number: der gerundete Wert.
Beispiel
import { round } from "@aicore-fivem/lib/shared";
round(12.345, 1); // 12.3
round(12.5); // 13groupDigits
Schreibt eine Zahl mit einem Trennzeichen alle drei Ziffern: 1234567 wird zu 1,234,567. Behält das Vorzeichen und die Nachkommastellen. Nutze es für jeden Geldbetrag, den Spieler sehen.
Seite: Client, Server und NUI · Wartet: nein
groupDigits(value: number | string, separator?: string): stringlocal text = aiLib.numbers.groupDigits(value, separator)Parameter
Prop
Type
Rückgabewert
string: die gruppierte Zahl.
Beispiel
import { groupDigits } from "@aicore-fivem/lib/shared";
groupDigits(1234567); // "1,234,567"
groupDigits(-9876.5); // "-9,876.5"
groupDigits(1500000, "."); // "1.500.000"formatWeight
Schreibt ein Gewicht in Gramm so, wie Spieler es lesen: unter 1 kg in Gramm, ab 1 kg in Kilogramm mit einer Nachkommastelle (ab 100 kg ganze Kilogramm), Ziffern gruppiert.
Seite: Client, Server und NUI · Wartet: nein
formatWeight(grams: number): stringLua: kein Zwilling.
Parameter
Prop
Type
Rückgabewert
string: "750 g", "1.5 kg", "1,250 kg".
Beispiel
import { formatWeight } from "@aicore-fivem/lib/shared";
formatWeight(750); // "750 g"
formatWeight(1500); // "1.5 kg"
formatWeight(1250000); // "1,250 kg"Zufall
randomInt
Eine zufällige ganze Zahl von min bis max, beide eingeschlossen.
Seite: Client, Server und NUI · Wartet: nein
randomInt(min: number, max: number): numberLua: kein Zwilling; nutze math.random(min, max).
Parameter
Prop
Type
Rückgabewert
number: eine ganze Zahl zwischen min und max.
Beispiel
import { randomInt } from "@aicore-fivem/lib/shared";
const payout = randomInt(150, 300); // 150, 151, ... oder 300pickRandom
Ein zufälliges Element einer Liste.
Seite: Client, Server und NUI · Wartet: nein
pickRandom<T>(list: readonly T[]): T | undefinedLua: kein Zwilling; nutze list[math.random(#list)].
Parameter
Prop
Type
Rückgabewert
Ein Element, oder undefined, wenn die Liste leer ist.
Beispiel
import { pickRandom } from "@aicore-fivem/lib/shared";
const loot = pickRandom(["goldbar", "rolex", "diamond"]) ?? "goldbar";rollChance
true mit einer Chance von percent zu 100.
Seite: Client, Server und NUI · Wartet: nein
rollChance(percent: number): booleanLua: kein Zwilling; nutze math.random() * 100 < percent.
Parameter
Prop
Type
Rückgabewert
true etwa percent-mal von 100.
Beispiel
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); // bricht in 1 von 4 Fällen
}Würfle auf dem Server für alles, was Items oder Geld gibt. Einen Wurf auf dem Client kann ein Cheater erzwingen.
Zeit
ServerClock
Die Server-Uhr auf einem Client, für Countdowns, die nicht von der eigenen Uhr des Clients abhängen. Sie wird aus @aicore-fivem/lib/shared exportiert und hat keinen Lua-Zwilling. Ihre vollständige Referenz (sync, now, toLocal, Countdown-Beispiel) steht unter Kamera und Timing: ServerClock.