Транспортai-vehiclesales
ai-vehiclesales для разработчиков
Как ai-vehiclesales хранит выставленный транспорт, его таблицы и внутренние события.
У ai-vehiclesales нет экспортов. Другим скриптам нужно знать, как выставленный транспорт выглядит снаружи.
Выставленный транспорт в ai-vehicles
Выставленный транспорт остаётся в ai-vehicles с тем же id, номером, видом и багажником. Пока он выставлен:
- его владелец
{ type: "resource", id: "ai-vehiclesales" }; - его состояние
"garage"без гаража (garage: null), поэтому он не показывается ни в одном гараже; - у продавца нет ключа от него.
Покупка или снятие с продажи выставляет владельцем персонажа через SetOwner и создаёт транспорт в точке выдачи площадки.
import { resourceExport } from "@aicore-fivem/lib/server";
const vehicles = resourceExport("ai-vehicles");
// Выставлен ли этот номер на продажу на площадке подержанных машин прямо сейчас?
export function isListed(plate: string): boolean {
const vehicle = vehicles.GetVehicle(plate);
return vehicle?.owner.type === "resource" && vehicle.owner.id === "ai-vehiclesales";
}Таблицы
| Таблица | Что хранит |
|---|---|
ai_vehiclesales_listings | Одна строка на выставленный транспорт (уникальный vehicle_id): площадка, продавец, цена, описание. |
ai_vehiclesales_payouts | Деньги, которые ждут продавцов, бывших офлайн, когда их транспорт продался. Выплачиваются и удаляются при их следующем входе. |
События
Все события ai-vehiclesales внутренние (его клиент и его сервер); не вызывайте их из других скриптов. Объявления приходят клиентам снимком, а затем только изменениями (дельтами), и только игрокам на площадке или с открытым экраном.
| Имя | Тип | Что делает |
|---|---|---|
ai-vehiclesales:watch / unwatch | callback / client event | Начать или прекратить обновления припаркованных машин при входе на площадку или выходе с неё. |
ai-vehiclesales:display | сервер к клиенту | (lotId, puts, removes): припаркованные объявления изменились. |
ai-vehiclesales:browse / unbrowse | callback / client event | Начать или прекратить обновления экрана. |
ai-vehiclesales:listings | сервер к клиенту | (lotId, puts, removes): объявления открытого экрана изменились. |
ai-vehiclesales:details | callback | (lotId, listingId): описание и вид одного объявления. |
ai-vehiclesales:list | callback | (lotId, netId, price, description): выставить транспорт, которым управляет игрок. |
ai-vehiclesales:quote / sellBack | callback | (lotId, netId): цена дилера и продажа дилеру. |
ai-vehiclesales:buy / takeBack | callback | (lotId, listingId): купить или снять с продажи своё объявление. |
ai-vehiclesales:testDrive / endTestDrive | callback | Начать или закончить тест-драйв. |
ai-vehiclesales:testDriveEnded | сервер к клиенту | (lotId): тест-драйв закончился; игрок возвращается на площадку. |