Textos e números
formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom e rollChance, mais onde ServerClock está documentado.
Pequenos helpers para o que os jogadores leem (dinheiro, pesos, textos traduzidos), sorteios aleatórios e contagens regressivas que seguem o relógio do servidor.
import { formatText, round, groupDigits, formatWeight, stripGameText, randomInt, pickRandom, rollChance, ServerClock } from "@aicore-fivem/lib/shared";Texto
formatText
Preenche os placeholders {0}, {1}... de um texto com valores por posição. Uma tradução pode mover ou repetir um placeholder ("{1} paid {0}"), por isso os valores vão por número, não por ordem.
Lado: Cliente, servidor e NUI · Espera: não
formatText(template: string, args: ReadonlyArray<string | number>): stringlocal text = aiLib.formatText(template, ...) -- valores como argumentos separadosParâmetros
Prop
Type
Retorno
string: o texto com todo placeholder que tem valor preenchido. Um placeholder sem valor fica como está ({2}).
Exemplo
import { formatText } from "@aicore-fivem/lib/shared";
formatText("You paid ${0} for {1} items", [250, 3]); // "You paid $250 for 3 items"Você raramente o chama: os helpers de idioma (createLocale, aiLib.locale, LangTexts) já preenchem os placeholders. Veja Idioma.
stripGameText
Deixa simples um texto vindo de outro script: remove tags HTML, códigos de cor e de entrada do GTA (~r~, ~INPUT_PICKUP~) e , junta sequências de espaços e corta as pontas. Use antes de mostrar o texto de outro script na sua própria UI.
Lado: Cliente, servidor e NUI · Espera: não
stripGameText(text: unknown): stringlocal plain = aiLib.stripGameText(text)Parâmetros
Prop
Type
Retorno
string: o texto simples. "" para null / undefined (Lua: nil).
Exemplo
import { stripGameText } from "@aicore-fivem/lib/shared";
stripGameText("Press ~INPUT_CONTEXT~ to <b>open</b> the ~g~shop~s~"); // "Press to open the shop"Números
round
Arredonda um número para uma quantidade de casas decimais.
Lado: Cliente, servidor e NUI · Espera: não
round(value: number, decimals?: number): numberlocal rounded = aiLib.numbers.round(value, decimals)Parâmetros
Prop
Type
Retorno
number: o valor arredondado.
Exemplo
import { round } from "@aicore-fivem/lib/shared";
round(12.345, 1); // 12.3
round(12.5); // 13groupDigits
Escreve um número com um separador a cada três dígitos: 1234567 vira 1,234,567. Mantém o sinal e os decimais. Use para todo valor em dinheiro que os jogadores veem.
Lado: Cliente, servidor e NUI · Espera: não
groupDigits(value: number | string, separator?: string): stringlocal text = aiLib.numbers.groupDigits(value, separator)Parâmetros
Prop
Type
Retorno
string: o número agrupado.
Exemplo
import { groupDigits } from "@aicore-fivem/lib/shared";
groupDigits(1234567); // "1,234,567"
groupDigits(-9876.5); // "-9,876.5"
groupDigits(1500000, "."); // "1.500.000"formatWeight
Escreve um peso em gramas do jeito que os jogadores leem: abaixo de 1 kg em gramas, a partir de 1 kg em quilos com uma casa decimal (quilos inteiros a partir de 100 kg), dígitos agrupados.
Lado: Cliente, servidor e NUI · Espera: não
formatWeight(grams: number): stringLua: sem equivalente.
Parâmetros
Prop
Type
Retorno
string: "750 g", "1.5 kg", "1,250 kg".
Exemplo
import { formatWeight } from "@aicore-fivem/lib/shared";
formatWeight(750); // "750 g"
formatWeight(1500); // "1.5 kg"
formatWeight(1250000); // "1,250 kg"Aleatório
randomInt
Um número inteiro aleatório de min a max, os dois incluídos.
Lado: Cliente, servidor e NUI · Espera: não
randomInt(min: number, max: number): numberLua: sem equivalente; use math.random(min, max).
Parâmetros
Prop
Type
Retorno
number: um número inteiro entre min e max.
Exemplo
import { randomInt } from "@aicore-fivem/lib/shared";
const payout = randomInt(150, 300); // 150, 151, ... ou 300pickRandom
Um item aleatório de uma lista.
Lado: Cliente, servidor e NUI · Espera: não
pickRandom<T>(list: readonly T[]): T | undefinedLua: sem equivalente; use list[math.random(#list)].
Parâmetros
Prop
Type
Retorno
Um item, ou undefined quando a lista está vazia.
Exemplo
import { pickRandom } from "@aicore-fivem/lib/shared";
const loot = pickRandom(["goldbar", "rolex", "diamond"]) ?? "goldbar";rollChance
true com uma chance de percent em 100.
Lado: Cliente, servidor e NUI · Espera: não
rollChance(percent: number): booleanLua: sem equivalente; use math.random() * 100 < percent.
Parâmetros
Prop
Type
Retorno
true cerca de percent vezes em 100.
Exemplo
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); // quebra 1 em cada 4 vezes
}Faça o sorteio no servidor para qualquer coisa que dá itens ou dinheiro. Um sorteio no cliente pode ser forçado por um trapaceiro.
Tempo
ServerClock
O relógio do servidor em um cliente, para contagens regressivas que não dependem do relógio do próprio cliente. É exportado de @aicore-fivem/lib/shared e não tem equivalente em Lua. A referência completa (sync, now, toLocal, exemplo de contagem regressiva) está em Câmera e tempo: ServerClock.