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

MDT

Записывать штрафы, ордера, аресты и записи о заключении в тот полицейский MDT, который использует сервер.

Записи идут через ai-core, а не через собственные экспорты или события MDT. ai-core передаёт каждую запись активному MDT: тому, что выбран в настройке панели MDT script, или первому запущенному. MDT из семейства ai-* нет, поэтому пока ни один MDT не работает, записи никуда не пишутся. Открытие экрана MDT происходит на клиенте (клиентский экспорт OpenMdt, в библиотеке mdt.open).

GetMdtSystem

Имя ресурса MDT, которому ai-core передаёт записи.

Сторона: сервер · Ожидание: нет · Библиотека: mdt.provider()

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

Параметры

Нет.

Возвращает

string | null: имя ресурса MDT. null, когда ни один не работает.

Пример

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

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

addCommand("mdtsystem", { help: "Shows the MDT in use", restricted: true }, () => {
  console.log(core.GetMdtSystem() ?? "none: records are not written");
});

AddMdtRecord

Пишет в MDT запись об игроке: штраф, ордер, арест или тюремный срок. ai-core сам заполняет citizen id и имена цели и офицера.

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

Сигнатура
AddMdtRecord(record: MdtRecord): boolean
Lua
local written = exports['ai-core']:AddMdtRecord({ kind = 'fine', target = target, by = source, title = 'Speeding', amount = 250 })

Параметры

Prop

Type

MdtRecord

Prop

Type

См. MdtRecord и MdtRecordKind.

Возвращает

boolean: true, когда MDT её записал. false, когда запись недопустима (неверный kind, нет title, target не положительное целое число), у цели нет загруженного персонажа, ни один MDT не работает, MDT не принимает записи от скриптов или у него нет такого вида.

Пример

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

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

// Офицер сажает игрока на 20 минут; MDT хранит запись.
onClientCallback(
  "myscript:jail",
  { args: ([target]) => { const id = readId(target); return id === null ? null : [id]; }, lock: true },
  (source, target) => {
    if (core.GetDutyJob(source) !== "police") return fail("NOT_POLICE");
    if (!core.JailPlayer(target, 20, source)) return fail("JAIL_FAILED");
    core.AddMdtRecord({ kind: "jail", target, by: source, title: Locale("RECORD_ROBBERY"), minutes: 20 });
    return { ok: true };
  },
);

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