ai-fuel für Entwickler
Wie du Sprit liest und setzt, während ai-fuel läuft, seine State Bags und seine internen Events.
ai-fuel hat keine Exports. Der Sprit eines Fahrzeugs ist der Entity-State-Bag fuel (0-100), vom Server verwaltet.
Lies und setze Sprit mit fuel.get(vehicle) und fuel.set(vehicle, level) der Lib (Server; fuel.get auch auf dem Client). Sie laufen über den Sprit-Layer von ai-core (in Lua rufst du seine Exports GetVehicleFuel und SetVehicleFuel auf ai-core auf), der den Bag fuel liest und schreibt, solange ai-fuel läuft, und mit dem anderen Spritskript spricht, wenn der Server stattdessen eines betreibt. Dein Skript funktioniert dann mit jedem Spritskript.
Sprit lesen und setzen
import { fuel } from "@aicore-fivem/lib/server";
// Ein Fahrzeug füllen, für das der Spieler gerade an einer eigenen Tankstelle bezahlt hat.
export function fillUp(vehicle: number): void {
const before = fuel.get(vehicle);
fuel.set(vehicle, 100);
console.log(`fuel ${before} -> 100`);
}Schreibe den Bag fuel nicht von einem Client: Der Server lehnt Schreibzugriffe von Clients ab (strikter State-Bag-Modus), und ai-fuel übernimmt vom Client des Fahrers ohnehin nur niedrigere Werte.
State Bags
| Bag | An | Typ | Bedeutung |
|---|---|---|---|
fuel | Fahrzeug-Entity | number | Sprit 0-100. Vom Server gesetzt. ai-vehicles legt ihn an, wenn es ein Fahrzeug im Besitz spawnt. |
aiFuelNozzle | Spieler | { x, y, z, netId } | undefined | Die Zapfsäule, deren Zapfpistole der Spieler hält (x, y, z), und die Network-ID des Fahrzeugs, in das sie eingesteckt ist (netId, null, solange in der Hand). Jeder Client in der Nähe nutzt es, um Zapfpistole und Schlauch zu zeichnen. |
local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
local level = Entity(vehicle).state.fuel -- Zahl 0-100 oder nil vor dem ersten SetzenEvents
Das sind die eigenen Client-an-Server-Events von ai-fuel. Sie sind aufgeführt, damit du sie in Logs erkennst; rufe sie nicht aus anderen Skripten auf.
| Name | Art | Was es macht |
|---|---|---|
ai-fuel:consume | Client-Event | (netId, fuel): Der Fahrer meldet einen niedrigeren Füllstand. Begrenzt auf 2 pro Sekunde; nur niedrigere Werte werden übernommen. |
ai-fuel:takeNozzle | Client-Callback | (x, y, z): die Zapfpistole einer Zapfsäule nehmen. Begrenzt auf 1 pro Sekunde. |
ai-fuel:plug | Client-Callback | (netId | null): die Zapfpistole in ein Fahrzeug stecken oder herausziehen. Begrenzt auf 2 pro Sekunde. |
ai-fuel:returnNozzle | Client-Event | Die Zapfpistole wieder einhängen. Begrenzt auf 1 pro Sekunde. |
ai-fuel:refuel | Client-Callback | Lässt den Fortschrittsbalken laufen, bucht ab und füllt den Tank. |