AI Core
Référence de l’APILib : serveur

Téléphone et apparence

Le téléphone du joueur via ai-core (numéros, mails, SMS, notifications) et l’apparence enregistrée des personnages via le script de vêtements qui tourne.

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

phone

Le téléphone du joueur via ai-core : le premier script de téléphone qui tourne (tgiann-phone, lb-phone...) répond. Sans script de téléphone, chaque appel répond null ou false. Les équivalents Lua sur aiLib.phone ont les mêmes noms et le même ordre d’arguments.

phone.number

Côté : serveur · Attend : non

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

Retour le numéro de téléphone du joueur, ou null (Lua nil) quand il n’en a pas ou qu’aucun script de téléphone ne tourne.

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

phone.sourceOf

Le joueur en ligne à qui appartient un numéro de téléphone.

Côté : serveur · Attend : non

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

Retour l’id serveur, ou null (Lua nil) quand personne en ligne n’a ce numéro.

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

phone.hasPhone

Indique si le joueur porte un téléphone.

Côté : serveur · Attend : non

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

Retour true quand il en a un ; false sinon, ou sans script de téléphone.

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

phone.mail

Envoie un mail sur le téléphone d’un joueur.

Côté : serveur · Attend : non

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

Prop

Type

Le type est PhoneMail.

Retour true quand il est envoyé, false sinon.

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

phone.message

Envoie un SMS.

Côté : serveur · Attend : non

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

Prop

Type

Retour true quand il est envoyé, false sinon.

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

phone.notify

Affiche une notification dans le téléphone.

Côté : serveur · Attend : non

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

Prop

Type

Le type est PhoneNotification.

Retour true quand elle est affichée, false sinon.

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

appearance

L’apparence enregistrée des personnages via la couche apparence d’ai-core, quel que soit le script de vêtements qui tourne (ai-appearance, tgiann-clothing).

appearance.get

L’apparence enregistrée d’un personnage, chargé ou non. Utilisez-la pour habiller un ped qui représente un personnage (un corps endormi, un mannequin) : transmettez le résultat tel quel à appearance.apply côté client (Lib : client).

Côté : serveur · Attend : oui (Promise en TypeScript, cède la main (yield) dans le thread en Lua)

Signature
appearance.get(charId: number): Promise<CharacterAppearance | null>
Lua
local look = aiLib.appearance.get(charId) -- { model, data } ou nil, à appeler dans un thread

Prop

Type

Retour

Promise<CharacterAppearance | null> : CharacterAppearance est { model, data } (le hash du modèle du ped et les données d’apparence propres au script de vêtements). null quand le personnage n’en a pas, qu’aucun script de vêtements ne tourne, ou qu’ai-core est arrêté.

Exemple

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;
  // Seuls les joueurs proches de ce personnage ont besoin de l’apparence.
  for (const other of playersNear(source, 100)) emitNet("my-sleepers:look", other, source, look);
}

appearance.provider

Côté : serveur · Attend : non

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

Retour le script de vêtements qui répond, ou null (Lua nil) quand aucun ne tourne.

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

Sur cette page