AI Core
Транспортai-sirens

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): boolean
Lua
local ok = exports['ai-sirens']:SetLights(vehicle, true)

Параметры

Prop

Type

Возвращает

true, если транспорт является спецтранспортом и огни установлены. Иначе false.

ToggleLights

Переключает спецсигналы.

Сторона: клиент · Ожидание: нет

Сигнатура
ToggleLights(vehicle?: number): boolean
Lua
local ok = exports['ai-sirens']:ToggleLights()

Возвращает

true, если транспорт является спецтранспортом. Иначе false.

SetSirenTone

Устанавливает основной тон сирены. Тон больше 0 сначала включает огни.

Сторона: клиент · Ожидание: нет (сервер отвечает позже; локальное значение показывается сразу)

Сигнатура
SetSirenTone(vehicle: number | undefined, tone: 0 | 1 | 2 | 3): boolean
Lua
local 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): boolean
Lua
local ok = exports['ai-sirens']:ToggleSiren()

Возвращает

true, если запрос отправлен, false для транспорта, который не является спецтранспортом.

CycleTone

Следующий тон: 1, 2, 3, затем снова 1. При выключенной сирене запускает тон 1 (сначала включая огни).

Сторона: клиент · Ожидание: нет

Сигнатура
CycleTone(vehicle?: number): boolean
Lua
local ok = exports['ai-sirens']:CycleTone()

Возвращает

true, если запрос отправлен, false для транспорта, который не является спецтранспортом.

GetSirenTone

Текущий основной тон сирены.

Сторона: клиент · Ожидание: нет

Сигнатура
GetSirenTone(vehicle?: number): number
Lua
local tone = exports['ai-sirens']:GetSirenTone(vehicle)

Возвращает

От 0 (выкл.) до 3. Также 0 для транспорта, который не является спецтранспортом.

AreLightsOn

Включены ли спецсигналы.

Сторона: клиент · Ожидание: нет

Сигнатура
AreLightsOn(vehicle?: number): boolean
Lua
local on = exports['ai-sirens']:AreLightsOn(vehicle)

Возвращает

true, если включены. false, если выключены или это не спецтранспорт.

GetAirManuState

Состояние пневмосигнала и ручной сирены.

Сторона: клиент · Ожидание: нет

Сигнатура
GetAirManuState(vehicle?: number): number
Lua
local state = exports['ai-sirens']:GetAirManuState(vehicle)

Возвращает

0 выкл., 1 пневмосигнал, 2 ручная сирена, 3 оба. 0 для транспорта, который не является спецтранспортом.

GetLightbarModel

Модель световой балки ONX, прикреплённой к транспорту.

Сторона: клиент · Ожидание: нет

Сигнатура
GetLightbarModel(vehicle?: number): string | null
Lua
local model = exports['ai-sirens']:GetLightbarModel(vehicle)

Возвращает

Название модели ("onx_pol_lbar_mdn1a") или null, если у транспорта её нет или он не является спецтранспортом.

State bags

Пишутся только сервером после его проверок. Читайте их на любом клиенте, чтобы знать состояние сирены транспорта.

BagТипЗначение
siren:lxnumberОсновной тон сирены: 0 выкл., 1-3 тон.
siren:manunumberПневмосигнал / ручная сирена: 0 выкл., 1 сигнал, 2 ручная, 3 оба.
siren:lightbarstringПрикреплённая модель световой балки ONX (отсутствует: нет).
Lua (клиент)
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local tone = Entity(vehicle).state['siren:lx'] or 0

События

ИмяТипЧто делает
ai-sirens:setStateclient to server(netId, key, value): водитель запрашивает смену тона или пневмосигнала, либо сетевой владелец задаёт модель световой балки. Сервер принимает только перечисленные модели спецтранспорта, значение больше 0 только от водителя, сброс в 0 от игрока в пределах 10 м, пока место водителя пусто, и только модели световых балок из списка панели. Внутреннее: используйте экспорты.

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