AI Core
API-ReferenzLib: Shared und fivem

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.

TypeScript
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

Signatur
formatText(template: string, args: ReadonlyArray<string | number>): string
Lua
local text = aiLib.formatText(template, ...) -- Werte als einzelne Argumente

Parameter

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 &nbsp;, 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

Signatur
stripGameText(text: unknown): string
Lua
local 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

Signatur
round(value: number, decimals?: number): number
Lua
local 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);      // 13

groupDigits

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

Signatur
groupDigits(value: number | string, separator?: string): string
Lua
local 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

Signatur
formatWeight(grams: number): string

Lua: 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

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

Lua: 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 300

pickRandom

Ein zufälliges Element einer Liste.

Seite: Client, Server und NUI · Wartet: nein

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

Lua: 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

Signatur
rollChance(percent: number): boolean

Lua: kein Zwilling; nutze math.random() * 100 < percent.

Parameter

Prop

Type

Rückgabewert

true etwa percent-mal von 100.

Beispiel

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); // 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.

Auf dieser Seite