AI Core
Referência da APILib: compartilhada e fivem

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.

TypeScript
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

Signature
formatText(template: string, args: ReadonlyArray<string | number>): string
Lua
local text = aiLib.formatText(template, ...) -- valores como argumentos separados

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

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

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

groupDigits

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

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

Signature
formatWeight(grams: number): string

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

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

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

pickRandom

Um item aleatório de uma lista.

Lado: Cliente, servidor e NUI · Espera: não

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

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

Signature
rollChance(percent: number): boolean

Lua: sem equivalente; use math.random() * 100 < percent.

Parâmetros

Prop

Type

Retorno

true cerca de percent vezes em 100.

Exemplo

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

Nesta página