Дверные замки
Запирать, отпирать и читать двери через тот скрипт дверных замков, который использует сервер.
Вызовы дверей идут через ai-core, а не через собственные экспорты или события скрипта замков (включая ai-doorlock). ai-core передаёт каждый вызов активному скрипту замков: тому, что выбран в настройке панели Door lock script, или первому запущенному (ai-doorlock, ox_doorlock, tgiann-doorlock и остальные из списка совместимости).
Дверь задаётся собственным id двери этого скрипта: id, который вы видите в его списке дверей (ai-doorlock: id двери в админ-панели; ox_doorlock: её номер в базе данных).
GetDoorlockSystem
Имя ресурса скрипта дверных замков, которому ai-core передаёт вызовы.
Сторона: сервер · Ожидание: нет · Библиотека: doors.provider()
GetDoorlockSystem(): string | nulllocal system = exports['ai-core']:GetDoorlockSystem() -- string или nilПараметры
Нет.
Возвращает
string | null: имя ресурса скрипта дверных замков. null, когда ни один не работает.
Пример
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
// Id дверей в вашем конфиге принадлежат одному скрипту замков: предупредить, когда работает другой.
if (core.GetDoorlockSystem() !== "ai-doorlock")
console.log("myscript: door ids are written for ai-doorlock");SetDoorLocked
Запирает или отпирает дверь.
Сторона: сервер · Ожидание: нет · Библиотека: doors.setLocked
SetDoorLocked(id: string, locked: boolean, by?: number): booleanlocal ok = exports['ai-core']:SetDoorLocked('pacific_vault', false, source)Параметры
Prop
Type
Возвращает
boolean: true, когда скрипт замков принял изменение. false, когда ни один скрипт замков не работает, дверь неизвестна, скрипт отказал, id пустой или locked не boolean.
Пример
import { onClientCallback, progressFor, resourceExport, near } from "@aicore-fivem/lib/server";
import { fail } from "@aicore-fivem/lib/shared";
import { Locale } from "common";
const core = resourceExport("ai-core");
const VAULT = { x: 253.9, y: 225.2, z: 101.9 };
onClientCallback("myscript:hackVault", { guards: [near(VAULT, 2)], lock: true }, async (source) => {
if (!core.HasItem(source, "laptop")) return fail("NO_LAPTOP");
if (!(await progressFor(source, { label: Locale("HACKING"), duration: 15000 }))) return fail("CANCELLED");
return core.SetDoorLocked("pacific_vault", false, source) ? { ok: true } : fail("DOOR_FAILED");
});IsDoorLocked
Заперта ли дверь.
Сторона: сервер · Ожидание: нет · Библиотека: doors.isLocked
IsDoorLocked(id: string): boolean | nulllocal locked = exports['ai-core']:IsDoorLocked('pacific_vault') -- true, false или nilПараметры
Prop
Type
Возвращает
boolean | null: true заперта, false отперта. null, когда это неизвестно: ни один скрипт замков не работает, двери нет, скрипт не может определить это на сервере или id пустой.
Пример
import { resourceExport } from "@aicore-fivem/lib/server";
const core = resourceExport("ai-core");
/** The heist may start only while the vault is still closed. */
export function vaultClosed(): boolean {
return core.IsDoorLocked("pacific_vault") !== false;
}Решите, что null означает для вашей функции. Пример считает «неизвестно» закрытым, поэтому отсутствующий скрипт замков никогда не откроет ограбление раньше времени.