AI Core
Справочник APIAI Core: серверные экспорты

Телефон

Номера телефонов, письма, SMS и уведомления телефона через тот телефонный скрипт, который использует сервер.

Телефонные вызовы идут через ai-core, а не через собственные экспорты телефонного скрипта. ai-core передаёт каждый вызов первому запущенному телефонному скрипту (tgiann-phone, lb-phone, gksphone и остальным из списка совместимости). Пока ни один телефон не работает, каждый вызов отвечает null или false.

GetPhoneNumber

Номер телефона игрока.

Сторона: сервер · Ожидание: нет · Библиотека: phone.number

Сигнатура
GetPhoneNumber(source: number): string | null
Lua
local number = exports['ai-core']:GetPhoneNumber(source) -- string или nil

Параметры

Prop

Type

Возвращает

string | null: номер в том виде, в каком его пишет телефонный скрипт. null, когда у игрока его нет, ни один телефон не работает или source не число.

Пример

import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");

// Предмет «визитка» показывает номер владельца.
onClientCallback("myscript:myNumber", (source) => {
  const number = core.GetPhoneNumber(source);
  return number ? { ok: true, number } : fail("NO_PHONE_NUMBER");
});

GetSourceByPhone

Игрок в сети, у которого есть этот номер телефона.

Сторона: сервер · Ожидание: нет · Библиотека: phone.sourceOf

Сигнатура
GetSourceByPhone(number: string): number | null
Lua
local src = exports['ai-core']:GetSourceByPhone('5551234') -- number или nil

Параметры

Prop

Type

Возвращает

number | null: серверный id. null, когда владельца номера нет в сети, номер неизвестен, ни один телефон не работает или number не текст.

Пример

import { notify, resourceExport } from "@aicore-fivem/lib/server";
import { Locale } from "common";

const core = resourceExport("ai-core");

/** A taxi job tells the caller their cab is on the way, if they are online. */
export function cabOnTheWay(callerNumber: string): void {
  const caller = core.GetSourceByPhone(callerNumber);
  if (caller !== null) notify(caller, Locale("NOTIFY_CAB_COMING"), "info");
}

HasPhone

Есть ли у игрока телефон (для телефонных скриптов, которым нужен предмет телефона: носит ли он его).

Сторона: сервер · Ожидание: нет · Библиотека: phone.hasPhone

Сигнатура
HasPhone(source: number): boolean
Lua
local has = exports['ai-core']:HasPhone(source)

Параметры

Prop

Type

Возвращает

boolean: true, когда телефонный скрипт говорит, что у игрока есть телефон. false, когда нет, когда ни один телефон не работает или source не число.

Пример

import { onClientCallback, resourceExport } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");

// Работе, которая раздаёт задания через SMS, нужен телефон.
onClientCallback("myscript:startDeliveries", (source) =>
  core.HasPhone(source) ? { ok: true } : fail("NEED_PHONE"),
);

SendPhoneMail

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

Сторона: сервер · Ожидание: нет · Библиотека: phone.mail

Сигнатура
SendPhoneMail(to: number | string, mail: PhoneMail): boolean
Lua
local sent = exports['ai-core']:SendPhoneMail(source, { sender = 'LS Customs', subject = 'Invoice', message = '...' })

Параметры

Prop

Type

PhoneMail

Prop

Type

Тексты показываются как есть: передавайте переведённые тексты. См. PhoneMail.

Возвращает

boolean: true, когда телефонный скрипт принял письмо. false, когда у игрока нет номера, отсутствует subject или message, ни один телефон не работает или он отказал.

Пример

import { resourceExport } from "@aicore-fivem/lib/server";
import { Locale } from "common";

const core = resourceExport("ai-core");

/** The heist contact mails the location after the job was accepted. */
export function mailHeistLocation(source: number, street: string): void {
  core.SendPhoneMail(source, {
    sender: Locale("MAIL_CONTACT"),
    subject: Locale("MAIL_HEIST_SUBJECT"),
    message: Locale("MAIL_HEIST_BODY", street),
  });
}

SendPhoneMessage

Отправляет SMS с одного номера игроку или на номер.

Сторона: сервер · Ожидание: нет · Библиотека: phone.message

Сигнатура
SendPhoneMessage(from: string, to: number | string, text: string): boolean
Lua
local sent = exports['ai-core']:SendPhoneMessage('Dispatch', source, 'Your cab is here.')

Параметры

Prop

Type

Возвращает

boolean: true, когда телефонный скрипт принял сообщение. false, когда у получателя нет номера, from или text не текст, ни один телефон не работает или он отказал.

Пример

import { resourceExport } from "@aicore-fivem/lib/server";
import { Locale } from "common";

const core = resourceExport("ai-core");

/** The next delivery address arrives by text. */
export function textNextStop(source: number, street: string): void {
  if (!core.SendPhoneMessage(Locale("SENDER_DISPATCH"), source, Locale("TEXT_NEXT_STOP", street)))
    console.log(`player ${source} could not get the text`);
}

PhoneNotify

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

Сторона: сервер · Ожидание: нет · Библиотека: phone.notify

Сигнатура
PhoneNotify(source: number, notification: PhoneNotification): boolean
Lua
local shown = exports['ai-core']:PhoneNotify(source, { title = 'Bank', message = 'Salary paid', app = 'bank' })

Параметры

Prop

Type

PhoneNotification

Prop

Type

См. PhoneNotification.

Возвращает

boolean: true, когда телефонный скрипт его показал. false, когда отсутствует title, ни один телефон не работает, source не число или он отказал.

Пример

import { resourceExport } from "@aicore-fivem/lib/server";
import { Locale } from "common";

const core = resourceExport("ai-core");

/** Tells the owner their car was towed. */
export function towedNotice(source: number, plate: string): void {
  core.PhoneNotify(source, { title: Locale("PHONE_TOW_TITLE"), message: Locale("PHONE_TOW_TEXT", plate) });
}

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