AI Core
API başvurusuLib: shared ve fivem

Metin ve sayılar

formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom ve rollChance, artı ServerClock’un nerede belgelendiği.

Oyuncuların okudukları (para, ağırlıklar, çevrilmiş metinler), rastgele zarlar ve server’ın saatiyle uyumlu geri sayımlar için küçük yardımcılar.

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

Metin

formatText

Bir metindeki {0}, {1}... yer tutucularını konuma göre değerlerle doldurur. Bir çeviri bir yer tutucuyu taşıyabilir ya da tekrarlayabilir ("{1} paid {0}"); değerlerin sıraya göre değil numaraya göre gitmesinin sebebi budur.

Taraf: Client, server ve NUI · Bekler: hayır

Signature
formatText(template: string, args: ReadonlyArray<string | number>): string
Lua
local text = aiLib.formatText(template, ...) -- değerler ayrı argümanlar olarak

Parametreler

Prop

Type

Dönüş değeri

string: değeri olan her yer tutucusu doldurulmuş metin. Değeri olmayan bir yer tutucu olduğu gibi kalır ({2}).

Örnek

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

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

Onu nadiren kendin çağırırsın: dil yardımcıları (createLocale, aiLib.locale, LangTexts) yer tutucuları zaten doldurur. Bkz. Dil.

stripGameText

Başka bir script’ten gelen metni düz hale getirir: HTML etiketlerini, GTA renk ve girdi kodlarını (~r~, ~INPUT_PICKUP~) ve &nbsp;’yi kaldırır, art arda boşlukları birleştirir ve kırpar. Başka bir script’in metnini kendi arayüzünde göstermeden önce kullan.

Taraf: Client, server ve NUI · Bekler: hayır

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

Parametreler

Prop

Type

Dönüş değeri

string: düz metin. null / undefined için "" (Lua: nil).

Örnek

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

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

Sayılar

round

Bir sayıyı belirli sayıda ondalık basamağa yuvarlar.

Taraf: Client, server ve NUI · Bekler: hayır

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

Parametreler

Prop

Type

Dönüş değeri

number: yuvarlanmış değer.

Örnek

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

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

groupDigits

Bir sayıyı her üç basamakta bir ayırıcıyla yazar: 1234567, 1,234,567 olur. İşareti ve ondalıkları korur. Oyuncuların gördüğü her para miktarı için kullan.

Taraf: Client, server ve NUI · Bekler: hayır

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

Parametreler

Prop

Type

Dönüş değeri

string: gruplanmış sayı.

Örnek

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

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

formatWeight

Gram cinsinden bir ağırlığı oyuncuların okuduğu şekilde yazar: 1 kg’ın altında gram, 1 kg’dan itibaren tek ondalıklı kilogram (100 kg’dan itibaren tam kilogram), basamaklar gruplanmış.

Taraf: Client, server ve NUI · Bekler: hayır

Signature
formatWeight(grams: number): string

Lua: karşılığı yok.

Parametreler

Prop

Type

Dönüş değeri

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

Örnek

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

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

Rastgele

randomInt

min ile max arasında (ikisi de dahil) rastgele bir tam sayı.

Taraf: Client, server ve NUI · Bekler: hayır

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

Lua: karşılığı yok; math.random(min, max) kullan.

Parametreler

Prop

Type

Dönüş değeri

number: min ile max arasında bir tam sayı.

Örnek

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

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

pickRandom

Bir listeden rastgele bir öğe.

Taraf: Client, server ve NUI · Bekler: hayır

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

Lua: karşılığı yok; list[math.random(#list)] kullan.

Parametreler

Prop

Type

Dönüş değeri

Bir öğe ya da liste boşsa undefined.

Örnek

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

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

rollChance

100’de percent ihtimalle true.

Taraf: Client, server ve NUI · Bekler: hayır

Signature
rollChance(percent: number): boolean

Lua: karşılığı yok; math.random() * 100 < percent kullan.

Parametreler

Prop

Type

Dönüş değeri

100’de yaklaşık percent kez true.

Örnek

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); // 4’te 1 kırılır
}

Eşya ya da para veren her şey için zarı server’da at. Client’taki bir zar bir hileci tarafından zorlanabilir.

Zaman

ServerClock

Client’ın kendi saatine bağlı olmayan geri sayımlar için, server’ın saati client’ta. @aicore-fivem/lib/shared’dan export edilir ve Lua karşılığı yoktur. Tam başvurusu (sync, now, toLocal, geri sayım örneği) Kamera ve zamanlama: ServerClock sayfasındadır.

Bu sayfada