AI Core
Справочник APILib: общее и fivem

Транспорт

plateOf, normalizePlate, vehicleTypeOfClass, toVehicleProps и toVehicleSetup: номера как ключи, типы спавна и внешний вид транспорта из недоверенных данных.

TypeScript
import { plateOf } from "@aicore-fivem/lib/fivem"; // также в /client и /server
import { normalizePlate, vehicleTypeOfClass, toVehicleProps, toVehicleSetup } from "@aicore-fivem/lib/shared";

Номера

GTA дополняет номера пробелами до 8 символов (" AI 1 "). Каждый скрипт, который хранит данные по номеру (ключи, топливо, гаражи), использует в качестве ключа номер без пробелов по краям и в верхнем регистре, поэтому один и тот же транспорт совпадает везде.

plateOf

Номер транспорта в том виде, в каком его используют ключи: прочитан с сущности, без пробелов по краям, в верхнем регистре.

Сторона: Клиент и сервер · Ждёт: нет

Сигнатура
plateOf(vehicle: number): string

Lua: аналога нет; используйте GetVehicleNumberPlateText(vehicle):match('^%s*(.-)%s*$'):upper().

Параметры

Prop

Type

Возвращает

string: номер без пробелов по краям, в верхнем регистре.

Пример

resource/server/index.ts
import { plateOf, vehicleOf } from "@aicore-fivem/lib/server";

function plateOfPlayerVehicle(source: number): string | null {
  const vehicle = vehicleOf(source);
  return vehicle === 0 ? null : plateOf(vehicle);
}

normalizePlate

Та же обрезка и верхний регистр для номера, который у вас уже есть текстом (введён игроком, хранится в базе данных, прислан другим скриптом).

Сторона: Клиент, сервер и NUI · Ждёт: нет

Сигнатура
normalizePlate(plate: string): string

Lua: аналога нет; используйте plate:match('^%s*(.-)%s*$'):upper().

Параметры

Prop

Type

Возвращает

string: без пробелов по краям, в верхнем регистре.

Пример

import { normalizePlate } from "@aicore-fivem/lib/shared";

normalizePlate("  ai 123 "); // "AI 123"

Спавн

vehicleTypeOfClass

Превращает класс транспорта GTA (GetVehicleClassFromName) в тип, который нужен CreateVehicleServerSetter: "bike", "boat", "heli", "plane", "train" или "automobile". spawnVehicle из lib делает это за вас; используйте, только если сами вызываете CreateVehicleServerSetter.

Сторона: Клиент, сервер и NUI · Ждёт: нет

Сигнатура
vehicleTypeOfClass(vehicleClass: number): string

Lua: аналога нет.

Параметры

Prop

Type

Возвращает

string: тип спавна. Каждый класс, не перечисленный выше, это "automobile".

Пример

resource/client/index.ts
import { vehicleTypeOfClass } from "@aicore-fivem/lib/shared";

const type = vehicleTypeOfClass(GetVehicleClassFromName("frogger")); // "heli"

GetVehicleClassFromName является клиентским нативом. Сервер узнаёт тип модели от клиента (spawnVehicle из lib спрашивает клиент ai-core за вас).

Внешний вид из недоверенных данных

toVehicleProps

Проверяет сохранённые или полученные свойства транспорта и возвращает чистый объект VehicleProps или null, если данные не в этой форме. Отсутствующие необязательные части получают значения по умолчанию (стоковые моды, без ливреи, полное здоровье); неизвестные поля отбрасываются; номер урезается до 8 символов.

Сторона: Клиент, сервер и NUI · Ждёт: нет

Сигнатура
toVehicleProps(value: unknown): VehicleProps | null

Lua: аналога нет.

Параметры

Prop

Type

Возвращает

VehicleProps или null, если value не является объектом, v не равно 1, отсутствует model или plate либо одно из colors, extraColors, neonColor, tyreSmoke, mods, extras, neon отсутствует или имеет неверную длину.

Пример

resource/server/index.ts
import { optionalExport } from "@aicore-fivem/lib/server";
import { toVehicleProps } from "@aicore-fivem/lib/shared";

function storedColors(vehicleId: number): [number, number] | null {
  const vehicle = optionalExport("ai-vehicles")?.GetVehicle(vehicleId);
  const props = toVehicleProps(vehicle?.props);
  return props ? props.colors : null;
}

toVehicleSetup

Проверяет полученный VehicleSetup поле за полем: неверные поля отбрасываются, верные сохраняются. Используйте для настройки, которая пришла от клиента или другого ресурса, прежде чем передавать её в spawnVehicle.

Сторона: Клиент, сервер и NUI · Ждёт: нет

Сигнатура
toVehicleSetup(value: unknown): VehicleSetup | null

Lua: аналога нет.

Параметры

Prop

Type

Возвращает

VehicleSetup только с верными полями (цвета 0-255, livery 0-100, windowTint 0-6, dirt 0-15; maxed и engineOn только если ровно true). null, если value не является объектом.

Пример

import { toVehicleSetup } from "@aicore-fivem/lib/shared";

toVehicleSetup({ colors: [27, 27], windowTint: 9, maxed: "yes" });
// { colors: [27, 27], windowTint: undefined, maxed: undefined, ... }: неверные поля отброшены

Клиент никогда не должен выбирать maxed: true или произвольный цвет для транспорта, за который он платит: проверяйте цену на сервере по тому, что содержит настройка.

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