AI Core
Referência da APILib: compartilhada e fivem

Logging

createLogger, logSafe e previewJson: linhas de console com o nome do seu recurso, e texto não confiável deixado seguro para imprimir.

Estes helpers escrevem no console (F8 em um cliente, o console do servidor ou o txAdmin no servidor). Para logs que o dono do servidor lê no Discord, Fivemanage ou FiveM Stats, use aiLog (veja Logs).

TypeScript
import { createLogger, logSafe, previewJson } from "@aicore-fivem/lib/shared";

createLogger

Retorna um logger cujas linhas começam com [your-resource], para que o console do servidor mostre de onde veio cada linha. Avisos são amarelos, erros vermelhos.

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

Signature
createLogger(resource: string): Logger

Lua: sem equivalente; use print(('[%s] %s'):format(GetCurrentResourceName(), message)).

Parâmetros

Prop

Type

Retorno

Logger:

Prop

Type

Exemplo

resource/server/index.ts
import { createLogger } from "@aicore-fivem/lib/shared";

const log = createLogger(GetCurrentResourceName());

log.info("loaded 12 shops");               // [my-shop] loaded 12 shops
log.warn("shop legion has no ped model");  // amarelo
try {
  JSON.parse("{");
} catch (error) {
  log.error("could not read shops.json", error); // vermelho, com o erro
}

logSafe

Deixa um texto enviado por um cliente seguro para o console do servidor: uma linha (quebras de linha viram |), sem caracteres de controle, sem códigos de cor ^1, cortado em max caracteres. Use sempre que uma linha de log contém um texto de jogador (um nome, uma mensagem, um bilhete).

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

Signature
logSafe(text: string, max: number): string

Lua: sem equivalente.

Parâmetros

Prop

Type

Retorno

string: o texto limpo.

Exemplo

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

logSafe("^1fake error\nsecond line", 100); // "fake error | second line"

Sem isto, um jogador pode escrever uma mensagem de chat com códigos de cor ^1 e quebras de linha que parece um erro real do servidor no seu console.

previewJson

Um texto curto parecido com JSON de qualquer valor não confiável, cortado em max caracteres, construído sem serializar o valor inteiro primeiro (um payload hostil pode ter megabytes). Aninhamentos com mais de 4 níveis aparecem como [...] / {...}. Use para imprimir o que um cliente enviou quando você o recusa.

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

Signature
previewJson(value: unknown, max: number): string

Lua: sem equivalente.

Parâmetros

Prop

Type

Retorno

string: a prévia, com no máximo max caracteres. As chaves de objetos são cortadas em 50 caracteres.

Exemplo

resource/server/index.ts
import { onClientEvent } from "@aicore-fivem/lib/server";
import { createLogger, logSafe, previewJson } from "@aicore-fivem/lib/shared";

const log = createLogger(GetCurrentResourceName());

onClientEvent("my-shop:rate", (source) => {
  log.info(`${logSafe(GetPlayerName(String(source)) ?? "?", 32)} opened the rating`);
});

function refuse(source: number, raw: unknown[]): void {
  log.warn(`refused input from ${source}: ${previewJson(raw, 200)}`);
}

Nesta página