AI Core
Справочник APILib: сервер

Телефон и внешность

Телефон игрока через ai-core (номера, письма, сообщения, уведомления) и сохранённая внешность персонажей через тот скрипт одежды, который запущен.

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

phone

Телефон игрока через ai-core: отвечает первый запущенный скрипт телефона (tgiann-phone, lb-phone...). Без скрипта телефона каждый вызов отвечает null или false. Lua-аналоги в aiLib.phone имеют те же имена и тот же порядок аргументов.

phone.number

Сторона: Сервер · Ждёт: нет

Сигнатура
phone.number(source: number): string | null
Lua
local number = aiLib.phone.number(source)

Возвращает номер телефона игрока или null (в Lua nil), если номера нет или не запущен скрипт телефона.

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

phone.sourceOf

Игрок онлайн, которому принадлежит номер телефона.

Сторона: Сервер · Ждёт: нет

Сигнатура
phone.sourceOf(number: string): number | null
Lua
local source = aiLib.phone.sourceOf(number)

Возвращает серверный id или null (в Lua nil), если ни у кого онлайн нет этого номера.

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

phone.hasPhone

Есть ли у игрока с собой телефон.

Сторона: Сервер · Ждёт: нет

Сигнатура
phone.hasPhone(source: number): boolean
Lua
local has = aiLib.phone.hasPhone(source)

Возвращает true, если есть; false, если нет или нет скрипта телефона.

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

phone.mail

Отправляет письмо на телефон игрока.

Сторона: Сервер · Ждёт: нет

Сигнатура
phone.mail(to: number | string, mail: PhoneMail): boolean
Lua
local ok = aiLib.phone.mail(to, mail)

Prop

Type

Тип: PhoneMail.

Возвращает true, если отправлено, иначе false.

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

phone.message

Отправляет текстовое сообщение.

Сторона: Сервер · Ждёт: нет

Сигнатура
phone.message(from: string, to: number | string, text: string): boolean
Lua
local ok = aiLib.phone.message(from, to, text)

Prop

Type

Возвращает true, если отправлено, иначе false.

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

phone.notify

Показывает уведомление внутри телефона.

Сторона: Сервер · Ждёт: нет

Сигнатура
phone.notify(source: number, notification: PhoneNotification): boolean
Lua
local ok = aiLib.phone.notify(source, notification)

Prop

Type

Тип: PhoneNotification.

Возвращает true, если показано, иначе false.

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

appearance

Сохранённая внешность персонажей через слой внешности ai-core, какой бы скрипт одежды ни был запущен (ai-appearance, tgiann-clothing).

appearance.get

Сохранённая внешность персонажа, загружен он или нет. Используйте, чтобы одеть педа, который заменяет персонажа (спящее тело, манекен): передайте результат без изменений в клиентский appearance.apply (Lib: клиент).

Сторона: Сервер · Ждёт: да (Promise в TypeScript, в Lua приостанавливает поток)

Сигнатура
appearance.get(charId: number): Promise<CharacterAppearance | null>
Lua
local look = aiLib.appearance.get(charId) -- { model, data } или nil, вызывайте внутри потока

Prop

Type

Возвращает

Promise<CharacterAppearance | null>: CharacterAppearance это { model, data } (хэш модели педа и собственные данные внешности скрипта одежды). null, если внешности нет, не запущен скрипт одежды или ai-core остановлен.

Пример

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;
  // Внешность нужна только игрокам рядом с этим персонажем.
  for (const other of playersNear(source, 100)) emitNet("my-sleepers:look", other, source, look);
}

appearance.provider

Сторона: Сервер · Ждёт: нет

Сигнатура
appearance.provider(): string | null
Lua
local name = aiLib.appearance.provider()

Возвращает скрипт одежды, который отвечает, или null (в Lua nil), если никакой не запущен.

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

На этой странице