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

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

Как читать и устанавливать топливо при запущенном ai-fuel, его state bags и внутренние события.

У ai-fuel нет экспортов. Топливо транспорта хранится в state bag сущности fuel (0-100), за которым следит сервер.

Читайте и устанавливайте топливо через fuel.get(vehicle) и fuel.set(vehicle, level) из lib (сервер; fuel.get также на клиенте). Они идут через слой топлива ai-core (в Lua вызывайте его экспорты GetVehicleFuel и SetVehicleFuel на ai-core), который читает и пишет bag fuel, пока запущен ai-fuel, и обращается к другому скрипту топлива, если вместо него на сервере запущен тот. Тогда ваш скрипт работает с любым скриптом топлива.

Чтение и установка топлива

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

// Заправить транспорт, за который игрок только что заплатил на своей заправке.
export function fillUp(vehicle: number): void {
  const before = fuel.get(vehicle);
  fuel.set(vehicle, 100);
  console.log(`fuel ${before} -> 100`);
}

Не пишите bag fuel с клиента: сервер отклоняет записи клиентов (строгий режим state bags), а ai-fuel в любом случае принимает от клиента водителя только меньшие значения.

State bags

BagНа чёмТипЗначение
fuelсущность транспортаnumberТопливо 0-100. Устанавливается сервером. ai-vehicles задаёт его, когда создаёт личный транспорт.
aiFuelNozzleигрок{ x, y, z, netId } | undefinedКолонка, пистолет которой держит игрок (x, y, z), и network id транспорта, в который он вставлен (netId, null, пока в руке). Каждый клиент рядом использует его, чтобы рисовать пистолет и шланг.
Lua (клиент)
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local level = Entity(vehicle).state.fuel -- число 0-100 или nil до первой установки

События

Это собственные события ai-fuel от клиента к серверу. Они перечислены, чтобы вы узнавали их в логах; не вызывайте их из других скриптов.

ИмяТипЧто делает
ai-fuel:consumeclient event(netId, fuel): водитель сообщает меньший уровень. Не чаще 2 раз в секунду; принимаются только меньшие значения.
ai-fuel:takeNozzleclient callback(x, y, z): взять пистолет колонки. Не чаще 1 раза в секунду.
ai-fuel:plugclient callback(netId | null): вставить пистолет в транспорт или вынуть его. Не чаще 2 раз в секунду.
ai-fuel:returnNozzleclient eventПовесить пистолет обратно. Не чаще 1 раза в секунду.
ai-fuel:refuelclient callbackЗапускает полосу прогресса, списывает деньги и заполняет бак.

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