Транспорт
plateOf, normalizePlate, vehicleTypeOfClass, toVehicleProps и toVehicleSetup: номера как ключи, типы спавна и внешний вид транспорта из недоверенных данных.
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): stringLua: аналога нет; используйте GetVehicleNumberPlateText(vehicle):match('^%s*(.-)%s*$'):upper().
Параметры
Prop
Type
Возвращает
string: номер без пробелов по краям, в верхнем регистре.
Пример
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): stringLua: аналога нет; используйте 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): stringLua: аналога нет.
Параметры
Prop
Type
Возвращает
string: тип спавна. Каждый класс, не перечисленный выше, это "automobile".
Пример
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 | nullLua: аналога нет.
Параметры
Prop
Type
Возвращает
VehicleProps или null, если value не является объектом, v не равно 1, отсутствует model или plate либо одно из colors, extraColors, neonColor, tyreSmoke, mods, extras, neon отсутствует или имеет неверную длину.
Пример
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 | nullLua: аналога нет.
Параметры
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 или произвольный цвет для транспорта, за который он платит: проверяйте цену на сервере по тому, что содержит настройка.