AI Core
Referencia de la APILib: servidor

Teléfono y apariencia

El teléfono del jugador a través de ai-core (números, correos, mensajes, notificaciones) y el aspecto guardado de los personajes a través del script de ropa que funcione.

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

phone

El teléfono del jugador a través de ai-core: responde el primer script de teléfono que esté en marcha (tgiann-phone, lb-phone...). Sin script de teléfono, cada llamada responde null o false. Los equivalentes en Lua en aiLib.phone tienen los mismos nombres y el mismo orden de argumentos.

phone.number

Lado: Servidor · Espera: no

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

Devuelve el número de teléfono del jugador, o null (nil en Lua) cuando no tiene ninguno o no hay script de teléfono en marcha.

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

phone.sourceOf

El jugador en línea que tiene un número de teléfono.

Lado: Servidor · Espera: no

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

Devuelve el id de servidor, o null (nil en Lua) cuando nadie en línea tiene ese número.

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

phone.hasPhone

Si el jugador lleva un teléfono.

Lado: Servidor · Espera: no

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

Devuelve true cuando tiene uno; false si no lo tiene o no hay script de teléfono.

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

phone.mail

Envía un correo al teléfono de un jugador.

Lado: Servidor · Espera: no

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

Prop

Type

El tipo es PhoneMail.

Devuelve true cuando se envió, false en caso contrario.

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

phone.message

Envía un mensaje de texto.

Lado: Servidor · Espera: no

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

Prop

Type

Devuelve true cuando se envió, false en caso contrario.

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

phone.notify

Muestra una notificación dentro del teléfono.

Lado: Servidor · Espera: no

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

Prop

Type

El tipo es PhoneNotification.

Devuelve true cuando se mostró, false en caso contrario.

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

appearance

El aspecto guardado de los personajes a través de la capa de apariencia de ai-core, sea cual sea el script de ropa que funcione (ai-appearance, tgiann-clothing).

appearance.get

El aspecto guardado de un personaje, esté cargado o no. Úsalo para vestir un ped que representa a un personaje (un cuerpo dormido, un maniquí): pasa el resultado sin cambios a appearance.apply del cliente (Lib: cliente).

Lado: Servidor · Espera: sí (Promise en TypeScript, cede el hilo en Lua)

Firma
appearance.get(charId: number): Promise<CharacterAppearance | null>
Lua
local look = aiLib.appearance.get(charId) -- { model, data } o nil, llamar dentro de un hilo

Prop

Type

Devuelve

Promise<CharacterAppearance | null>: CharacterAppearance es { model, data } (el hash del modelo del ped y los datos de aspecto propios del script de ropa). null cuando el personaje no tiene ninguno, no hay script de ropa en marcha o ai-core está detenido.

Ejemplo

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;
  // Solo los jugadores cerca de este personaje necesitan el aspecto.
  for (const other of playersNear(source, 100)) emitNet("my-sleepers:look", other, source, look);
}

appearance.provider

Lado: Servidor · Espera: no

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

Devuelve el script de ropa que responde, o null (nil en Lua) cuando no hay ninguno en marcha.

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

En esta página