AI Core

Fuel

Read and set a vehicle's fuel level through whichever fuel script the server runs.

Fuel goes through ai-core, never through a fuel script's own exports, decorators or state bags (ai-fuel included). ai-core forwards each call to the active fuel script: the one the panel's Fuel script setting picks, or the first one running (ai-fuel, ox_fuel, LegacyFuel and the others in the compatibility list). Without a fuel script, the level is just the vehicle's fuel state bag.

A level is a number from 0 (empty) to 100 (full). A vehicle is a server entity handle.

GetFuelSystem

The resource name of the fuel script ai-core forwards to.

Side: Server · Waits: no · Lib: fuel.provider()

Signature
GetFuelSystem(): string | null
Lua
local system = exports['ai-core']:GetFuelSystem() -- 'ai-fuel', 'ox_fuel'... or nil

Parameters

None.

Returns

string | null: the fuel script's resource name. null when none runs.

Example

import { addCommand, resourceExport } from "@aicore-fivem/lib/server";

const core = resourceExport("ai-core");

addCommand("fuelsystem", { help: "Shows the fuel script in use", restricted: true }, () => {
  console.log(core.GetFuelSystem() ?? "none: fuel is only the state bag");
});

GetVehicleFuel

A vehicle's fuel level.

Side: Server · Waits: no · Lib: fuel.get (server); on the client the client lib's fuel.get(vehicle) reads the state bag ai-core keeps

Signature
GetVehicleFuel(vehicle: number): number | null
Lua
local level = exports['ai-core']:GetVehicleFuel(vehicle) -- 0-100 or nil

Parameters

Prop

Type

Returns

number | null: the level, 0-100. null when the vehicle has no level yet, or vehicle is not an existing vehicle.

Example

import { onClientCallback, resourceExport, vehicleNearPlayer } from "@aicore-fivem/lib/server";
import { fail, oneArg, readId } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");

// A mechanic reads the tank of the car in front of them.
onClientCallback("myscript:checkTank", { args: oneArg(readId) }, (source, netId) => {
  const vehicle = vehicleNearPlayer(source, netId, { metres: 4 });
  if (!vehicle) return fail("TOO_FAR");
  return { ok: true, level: core.GetVehicleFuel(vehicle) };
});

SetVehicleFuel

Sets a vehicle's fuel level.

Side: Server · Waits: no · Lib: fuel.set (and spawnVehicle({ fuel }) sets it at creation)

Signature
SetVehicleFuel(vehicle: number, level: number): boolean
Lua
local ok = exports['ai-core']:SetVehicleFuel(vehicle, 100.0)

Parameters

Prop

Type

Returns

boolean: true when the level was handed to the fuel script (or written to the state bag when none runs). false when vehicle is not an existing vehicle, level is not a finite number, or the fuel script failed.

For fuel scripts that keep fuel on the players' games, the new level reaches the vehicle through its owner's game a moment later.

Example

import { onClientCallback, resourceExport, vehicleNearPlayer } from "@aicore-fivem/lib/server";
import { fail, oneArg, readId } from "@aicore-fivem/lib/shared";

const core = resourceExport("ai-core");

// A jerry can adds 25% to the car next to the player.
onClientCallback("myscript:jerryCan", { args: oneArg(readId), lock: true }, (source, netId) => {
  const vehicle = vehicleNearPlayer(source, netId, { metres: 3 });
  if (!vehicle) return fail("TOO_FAR");
  if (!core.RemoveItem(source, "jerrycan")) return fail("NO_JERRYCAN");
  core.SetVehicleFuel(vehicle, (core.GetVehicleFuel(vehicle) ?? 0) + 25);
  return { ok: true };
});

On this page