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 | nulllocal 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): booleanlocal 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 };
},
);