AI Core
Referência da APILib: servidor

Celular e aparência

O celular do jogador pelo ai-core (números, e-mails, mensagens, notificações) e o visual salvo dos personagens pelo script de roupas que estiver rodando.

TypeScript
import { phone, appearance } from "@aicore-fivem/lib/server";

phone

O celular do jogador pelo ai-core: o primeiro script de celular que estiver rodando (tgiann-phone, lb-phone...) responde. Sem um script de celular, toda chamada responde null ou false. Os equivalentes em Lua em aiLib.phone têm os mesmos nomes e a mesma ordem de argumentos.

phone.number

Lado: Servidor · Espera: não

Signature
phone.number(source: number): string | null
Lua
local number = aiLib.phone.number(source)

Retorno o número de celular do jogador, ou null (nil em Lua) quando ele não tem um ou nenhum script de celular está rodando.

const number = phone.number(source);
if (!number) return fail("NO_PHONE_NUMBER");

phone.sourceOf

O jogador online dono de um número de celular.

Lado: Servidor · Espera: não

Signature
phone.sourceOf(number: string): number | null
Lua
local source = aiLib.phone.sourceOf(number)

Retorno o id de servidor, ou null (nil em Lua) quando ninguém online tem esse número.

const owner = phone.sourceOf("555-0101");
if (owner !== null) notify(owner, "Your phone is ringing");

phone.hasPhone

Se o jogador carrega um celular.

Lado: Servidor · Espera: não

Signature
phone.hasPhone(source: number): boolean
Lua
local has = aiLib.phone.hasPhone(source)

Retorno true quando ele tem um; false sem celular, ou sem um script de celular.

if (!phone.hasPhone(source)) return fail("NEED_PHONE");

phone.mail

Envia um e-mail para o celular de um jogador.

Lado: Servidor · Espera: não

Signature
phone.mail(to: number | string, mail: PhoneMail): boolean
Lua
local ok = aiLib.phone.mail(to, mail)

Prop

Type

O tipo é PhoneMail.

Retorno true quando enviado, false caso contrário.

phone.mail(source, {
  sender: "Downtown Cab Co.",
  subject: "Your shift",
  message: "Pick up the taxi at the depot.",
});

phone.message

Envia uma mensagem de texto.

Lado: Servidor · Espera: não

Signature
phone.message(from: string, to: number | string, text: string): boolean
Lua
local ok = aiLib.phone.message(from, to, text)

Prop

Type

Retorno true quando enviada, false caso contrário.

phone.message("Dealer", source, "Meet me behind the gas station.");

phone.notify

Mostra uma notificação dentro do celular.

Lado: Servidor · Espera: não

Signature
phone.notify(source: number, notification: PhoneNotification): boolean
Lua
local ok = aiLib.phone.notify(source, notification)

Prop

Type

O tipo é PhoneNotification.

Retorno true quando mostrada, false caso contrário.

phone.notify(source, { title: "Bank", message: "Salary paid: $250", app: "bank" });

appearance

O visual salvo dos personagens pela camada de aparência do ai-core, qualquer que seja o script de roupas rodando (ai-appearance, tgiann-clothing).

appearance.get

O visual salvo de um personagem, carregado ou não. Use para vestir um ped que representa um personagem (um corpo dormindo, um manequim): passe o resultado sem mudanças para o appearance.apply do cliente (Lib: cliente).

Lado: Servidor · Espera: sim (Promise em TypeScript, pausa a thread em Lua)

Signature
appearance.get(charId: number): Promise<CharacterAppearance | null>
Lua
local look = aiLib.appearance.get(charId) -- { model, data } ou nil, chame dentro de uma thread

Prop

Type

Retorno

Promise<CharacterAppearance | null>: CharacterAppearance é { model, data } (o hash do modelo do ped e os dados de visual próprios do script de roupas). null quando o personagem não tem um, nenhum script de roupas está rodando ou o ai-core está parado.

Exemplo

import { appearance, online, playersNear } from "@aicore-fivem/lib/server";

async function sendLook(source: number) {
  const charId = online.charId(source);
  if (charId === undefined) return;
  const look = await appearance.get(charId);
  if (!look) return;
  // Só os jogadores perto deste personagem precisam do visual.
  for (const other of playersNear(source, 100)) emitNet("my-sleepers:look", other, source, look);
}

appearance.provider

Lado: Servidor · Espera: não

Signature
appearance.provider(): string | null
Lua
local name = aiLib.appearance.provider()

Retorno o script de roupas que responde, ou null (nil em Lua) quando nenhum está rodando.

console.log(`looks through ${appearance.provider() ?? "nothing"}`);

Nesta página