ai-doorlock для разработчиков
Серверные экспорты, API ox_doorlock, ключи GlobalState и событие ai-doorlock.
Чтобы запирать или отпирать двери из своего скрипта, используйте doors.setLocked(id, locked, by?) и doors.isLocked(id) из lib (сервер). Они идут через слой замков дверей ai-core и работают с любым скриптом замков дверей, который запущен на сервере. Экспорты ниже являются тем, что вызывает слой, пока активен ai-doorlock.
Дверь называется по её id в панели: ключ записи в data/doors.json (показывается в списке дверей панели). Типизированы как AiDoorlockServerExports в @aicore-fivem/shared.
import { resourceExport } from "@aicore-fivem/lib/server";
const doorlock = resourceExport("ai-doorlock");Серверные экспорты
SetDoorState
Запирает или отпирает дверь для всех без какой-либо проверки доступа или расстояния.
Сторона: сервер · Ожидание: нет
SetDoorState(id: string, locked: boolean): voidexports['ai-doorlock']:SetDoorState(id, locked)Параметры
Prop
Type
Возвращает
Ничего. Id, который не является дверью панели, ничего не делает.
Пример
import { resourceExport } from "@aicore-fivem/lib/server";
const doorlock = resourceExport("ai-doorlock");
// Блокировка: запереть все перечисленные двери участка.
const STATION_DOORS = ["mrpd_front", "mrpd_back", "mrpd_back_gate"]; // id из панели по умолчанию
export function lockdown(): void {
for (const id of STATION_DOORS) doorlock.SetDoorState(id, true);
}IsLocked
Заперта ли дверь сейчас.
Сторона: сервер · Ожидание: нет
IsLocked(id: string): booleanlocal locked = exports['ai-doorlock']:IsLocked(id)Возвращает
true, если заперта. false, если отперта или id не является дверью панели.
ox_doorlock API
ai-doorlock делает provide для ox_doorlock и отвечает на два его серверных экспорта:
| Экспорт | Что делает |
|---|---|
setDoorState(id, state) | То же, что SetDoorState: true или 1 запирает, любое другое значение отпирает. |
getDoor(id) | { id, name, state } (state 1 заперта, 0 отперта; name является названием из панели) или nil для неизвестного id. |
Другие экспорты ox_doorlock не поддерживаются.
GlobalState
Состояние замка каждой двери хранится в ключе GlobalState door:<id> (true = заперта), который можно читать на сервере и на каждом клиенте. Он удаляется, когда дверь удаляют.
local locked = GlobalState['door:mrpd_front'] == trueСобытия
| Имя | Тип | Что делает |
|---|---|---|
ai-doorlock:toggle | client callback | (id) -> { ok, locked }: игрок переключает дверь после того, как сервер проверит расстояние и доступ. Внутреннее; не чаще 2 раз в секунду на игрока и 500 мс на дверь. |