ai-sirens для разработчиков
Клиентские экспорты, state bags и событие ai-sirens.
У ai-sirens только клиентские экспорты. Они делают то же самое, что клавиши водителя. vehicle необязателен: без него используется транспорт, в котором сидит игрок. Транспорт, который не является спецтранспортом (класс 18 и есть в списке моделей панели), игнорируется.
Изменения (тон, сирена) запрашиваются у сервера, который принимает их только от водителя. Вызывайте сеттеры на клиенте водителя. Огни (SetLights, ToggleLights) являются собственным состоянием огней сирены игры на этом клиенте.
Lua вызывает их как exports['ai-sirens']:Name(...). Они не типизированы в @aicore-fivem/shared: в TypeScript используйте callExport("ai-sirens", "Name", ...args) из @aicore-fivem/lib/client.
Клиентские экспорты
SetLights
Включает или выключает спецсигналы (и световую балку ONX, если есть).
Сторона: клиент · Ожидание: нет
SetLights(vehicle: number | undefined, on: boolean): booleanlocal ok = exports['ai-sirens']:SetLights(vehicle, true)Параметры
Prop
Type
Возвращает
true, если транспорт является спецтранспортом и огни установлены. Иначе false.
ToggleLights
Переключает спецсигналы.
Сторона: клиент · Ожидание: нет
ToggleLights(vehicle?: number): booleanlocal ok = exports['ai-sirens']:ToggleLights()Возвращает
true, если транспорт является спецтранспортом. Иначе false.
SetSirenTone
Устанавливает основной тон сирены. Тон больше 0 сначала включает огни.
Сторона: клиент · Ожидание: нет (сервер отвечает позже; локальное значение показывается сразу)
SetSirenTone(vehicle: number | undefined, tone: 0 | 1 | 2 | 3): booleanlocal ok = exports['ai-sirens']:SetSirenTone(nil, 2)Параметры
Prop
Type
Возвращает
true, если запрос отправлен. false для транспорта, который не является спецтранспортом, или для тона вне 0-3. Запрос, который сервер не подтвердил за 1.5 секунды, считается отклонённым, и снова показывается старый тон.
Пример
import { callExport } from "@aicore-fivem/lib/client";
// Скрипт погони: тон 2, когда начинается погоня.
export function startPursuit(): void {
if (!callExport("ai-sirens", "SetSirenTone", undefined, 2)) return;
console.log("pursuit tone on");
}ToggleSiren
Останавливает сирену, если она работает, иначе запускает её на тоне 1 (сначала включая огни).
Сторона: клиент · Ожидание: нет
ToggleSiren(vehicle?: number): booleanlocal ok = exports['ai-sirens']:ToggleSiren()Возвращает
true, если запрос отправлен, false для транспорта, который не является спецтранспортом.
CycleTone
Следующий тон: 1, 2, 3, затем снова 1. При выключенной сирене запускает тон 1 (сначала включая огни).
Сторона: клиент · Ожидание: нет
CycleTone(vehicle?: number): booleanlocal ok = exports['ai-sirens']:CycleTone()Возвращает
true, если запрос отправлен, false для транспорта, который не является спецтранспортом.
GetSirenTone
Текущий основной тон сирены.
Сторона: клиент · Ожидание: нет
GetSirenTone(vehicle?: number): numberlocal tone = exports['ai-sirens']:GetSirenTone(vehicle)Возвращает
От 0 (выкл.) до 3. Также 0 для транспорта, который не является спецтранспортом.
AreLightsOn
Включены ли спецсигналы.
Сторона: клиент · Ожидание: нет
AreLightsOn(vehicle?: number): booleanlocal on = exports['ai-sirens']:AreLightsOn(vehicle)Возвращает
true, если включены. false, если выключены или это не спецтранспорт.
GetAirManuState
Состояние пневмосигнала и ручной сирены.
Сторона: клиент · Ожидание: нет
GetAirManuState(vehicle?: number): numberlocal state = exports['ai-sirens']:GetAirManuState(vehicle)Возвращает
0 выкл., 1 пневмосигнал, 2 ручная сирена, 3 оба. 0 для транспорта, который не является спецтранспортом.
GetLightbarModel
Модель световой балки ONX, прикреплённой к транспорту.
Сторона: клиент · Ожидание: нет
GetLightbarModel(vehicle?: number): string | nulllocal model = exports['ai-sirens']:GetLightbarModel(vehicle)Возвращает
Название модели ("onx_pol_lbar_mdn1a") или null, если у транспорта её нет или он не является спецтранспортом.
State bags
Пишутся только сервером после его проверок. Читайте их на любом клиенте, чтобы знать состояние сирены транспорта.
| Bag | Тип | Значение |
|---|---|---|
siren:lx | number | Основной тон сирены: 0 выкл., 1-3 тон. |
siren:manu | number | Пневмосигнал / ручная сирена: 0 выкл., 1 сигнал, 2 ручная, 3 оба. |
siren:lightbar | string | Прикреплённая модель световой балки ONX (отсутствует: нет). |
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local tone = Entity(vehicle).state['siren:lx'] or 0События
| Имя | Тип | Что делает |
|---|---|---|
ai-sirens:setState | client to server | (netId, key, value): водитель запрашивает смену тона или пневмосигнала, либо сетевой владелец задаёт модель световой балки. Сервер принимает только перечисленные модели спецтранспорта, значение больше 0 только от водителя, сброс в 0 от игрока в пределах 10 м, пока место водителя пусто, и только модели световых балок из списка панели. Внутреннее: используйте экспорты. |