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

ai-vehiclekeys для разработчиков

Серверные экспорты ai-vehiclekeys, API qbx_vehiclekeys, на который он отвечает, и его события.

Чтобы выдать, забрать или проверить ключи из своего скрипта, используйте vehicleKeys.give(source, vehicle, purpose), vehicleKeys.remove и vehicleKeys.has из lib (сервер). Они идут через слой ключей ai-core и работают с любым скриптом ключей, который запущен на сервере. Экспорты ниже являются тем, что вызывает этот слой, пока ai-vehiclekeys является активной системой ключей.

Все экспорты серверные, синхронные и отвечают и под ai-vehiclekeys, и под qbx_vehiclekeys. Транспорт задаётся хэндлом серверной сущности (число) или номером (текст). Номера сравниваются в нормализованном виде (пробелы и регистр не важны).

TypeScript
import { resourceExport, callExport } from "@aicore-fivem/lib/server";
const keys = resourceExport("ai-vehiclekeys"); // типизированы: HasKeys, GiveKeys, RemoveKeys
// SetLockState и IsPlayerNearVehicle не типизированы: callExport("ai-vehiclekeys", "SetLockState", vehicle, "lock")

Серверные экспорты

HasKeys

Есть ли у игрока ключ от транспорта: как у владельца, как у участника работы или банды, которой он принадлежит, или через ключ, выданный в эту сессию.

Сторона: сервер · Ожидание: нет

Сигнатура
HasKeys(source: number, vehicle: number | string): boolean
Lua
local has = exports['ai-vehiclekeys']:HasKeys(source, vehicle)

Параметры

Prop

Type

Возвращает

true, если у игрока есть ключ. Иначе false, в том числе для несуществующей сущности.

Пример

import { resourceExport } from "@aicore-fivem/lib/server";

const keys = resourceExport("ai-vehiclekeys");

onNet("myscript:openTrunk", (netId: number) => {
  const source = globalThis.source;
  const vehicle = NetworkGetEntityFromNetworkId(netId);
  if (!keys.HasKeys(source, vehicle)) return;
  // ... открыть багажник
});

GiveKeys

Выдаёт игроку ключ на эту сессию. Игрок хранит его, пока не выйдет с сервера или не сменит персонажа. Выдача ключа, который у игрока уже есть, ничего не делает.

Сторона: сервер · Ожидание: нет

Сигнатура
GiveKeys(source: number, vehicle: number | string): void
Lua
exports['ai-vehiclekeys']:GiveKeys(source, vehicle)

Параметры

Prop

Type

Возвращает

Ничего. Если игрок прямо сейчас сидит в этом транспорте, его клиенту сообщается (ai-vehiclekeys:client:granted): блокировка двигателя снимается, и двигатель заводится.

RemoveKeys

Забирает у игрока ключ сессии. Ключи владения (владелец, автопарк работы или банды) забрать нельзя: они следуют за владельцем транспорта.

Сторона: сервер · Ожидание: нет

Сигнатура
RemoveKeys(source: number, vehicle: number | string): void
Lua
exports['ai-vehiclekeys']:RemoveKeys(source, vehicle)

Возвращает

Ничего.

SetLockState

Запирает или отпирает транспорт на сервере без какой-либо проверки ключа.

Сторона: сервер · Ожидание: нет

Сигнатура
SetLockState(vehicle: number, state: "lock" | "unlock" | boolean | number): void
Lua
exports['ai-vehiclekeys']:SetLockState(vehicle, 'lock')

Параметры

Prop

Type

Возвращает

Ничего. Несуществующая сущность ничего не делает.

IsPlayerNearVehicle

Стоит ли игрок в пределах 5 м от транспорта.

Сторона: сервер · Ожидание: нет

Сигнатура
IsPlayerNearVehicle(source: number, vehicle: number): boolean
Lua
local near = exports['ai-vehiclekeys']:IsPlayerNearVehicle(source, vehicle)

Возвращает

true в пределах 5 м. false, если дальше или если любой из аргументов не число.

События

Собственные события ai-vehiclekeys внутренние (клиентские колбэки между его клиентом и сервером). Не вызывайте их из других скриптов.

ИмяТипЧто делает
ai-vehiclekeys:checkclient callback(netId) -> boolean: есть ли у игрока ключ, запрашивается, когда он садится.
ai-vehiclekeys:toggleLockclient callback(netId) -> { ok, locked? }: клавиша замка.
ai-vehiclekeys:giveNearestclient callback(netId) -> { ok }: передать ключи ближайшему игроку.
ai-vehiclekeys:client:grantedсервер к клиенту(netId): ключ пришёл, пока игрок сидит в этом транспорте; двигатель может завестись.

Используемый предмет

lockpick регистрируется как используемый предмет через слой инвентаря ai-core. Предмет расходуется, только когда ломается.

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