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, пока в руке). Каждый клиент рядом использует его, чтобы рисовать пистолет и шланг. |
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local level = Entity(vehicle).state.fuel -- число 0-100 или nil до первой установкиСобытия
Это собственные события ai-fuel от клиента к серверу. Они перечислены, чтобы вы узнавали их в логах; не вызывайте их из других скриптов.
| Имя | Тип | Что делает |
|---|---|---|
ai-fuel:consume | client event | (netId, fuel): водитель сообщает меньший уровень. Не чаще 2 раз в секунду; принимаются только меньшие значения. |
ai-fuel:takeNozzle | client callback | (x, y, z): взять пистолет колонки. Не чаще 1 раза в секунду. |
ai-fuel:plug | client callback | (netId | null): вставить пистолет в транспорт или вынуть его. Не чаще 2 раз в секунду. |
ai-fuel:returnNozzle | client event | Повесить пистолет обратно. Не чаще 1 раза в секунду. |
ai-fuel:refuel | client callback | Запускает полосу прогресса, списывает деньги и заполняет бак. |