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.
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
phone.number(source: number): string | nulllocal 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
phone.sourceOf(number: string): number | nulllocal 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
phone.hasPhone(source: number): booleanlocal 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
phone.mail(to: number | string, mail: PhoneMail): booleanlocal 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
phone.message(from: string, to: number | string, text: string): booleanlocal 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
phone.notify(source: number, notification: PhoneNotification): booleanlocal 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)
appearance.get(charId: number): Promise<CharacterAppearance | null>local look = aiLib.appearance.get(charId) -- { model, data } o nil, llamar dentro de un hiloProp
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
appearance.provider(): string | nulllocal 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"}`);Mundo
Hora y clima a través del script de clima que funcione, routing buckets del asignador de ai-core, cerraduras de puertas y puntos de aparición de personajes guardados.
State bags
Las versiones de servidor de EntityState, PlayerState, GlobalKey y GlobalGroup: la única forma en que un script ai-* escribe estado replicado.