Zum Inhalt

Kraftstoff-System

Realistisches Tanksystem mit Verbrauch, Tankstellen-Interaktion und Admin-API.


Konfiguration

resources/[base]/cv_framework/modules/fuel/config.lua:

return {
    enabled = true,

    -- Globaler Verbrauchsmultiplikator (1.0 = normal, höher = mehr Verbrauch)
    globalConsumptionRate = 1.0,

    -- Standard-Tankvolumen in Litern (falls nicht in handling.meta)
    defaultTankVolume = 65.0,

    -- Standard-Verbrauchsrate pro Fahrzeug
    defaultConsumptionRate = 0.5,

    refueling = {
        timePerLiter = 0.1,   -- Sekunden pro Liter beim Tanken
        animDict = "move_m@gas_pump",
        animName = "move_m@gas_pump_loop",
    },

    gasStations = {
        { coords = vector3(49.416, -1756.771, 29.442), radius = 10 },
        -- weitere Tankstellen...
    }
}

Client-API

-- Aktuellen Tankstand abrufen
cv.fuel.getVehicleFuelLevel(vehicle)     -- → number (Liter)

-- Maximales Tankvolumen
cv.fuel.getMaxFuelLevel(vehicle)          -- → number

-- Prozentsatz (0–100)
cv.fuel.getVehicleFuelPercentage(vehicle) -- → number

-- Prüfen ob Fahrzeug Kraftstoff verbraucht
cv.fuel.doesVehicleUseFuel(vehicle)       -- → boolean

-- Tank auffüllen (lokal)
cv.fuel.fillVehicleTank(vehicle)

Client-Exports

-- Tanken starten (manuell aus anderer Ressource)
exports['cv_framework']:StartRefueling(vehicle)

-- Tanken abbrechen
exports['cv_framework']:StopRefueling()

-- Prüfen ob Tankvorgang läuft
exports['cv_framework']:IsRefueling()   -- → boolean

-- Tankstelle hinzufügen
exports['cv_framework']:AddGasStation(coords, radius)

-- Tankstelle entfernen (Index)
exports['cv_framework']:RemoveGasStation(index)

-- Alle Tankstellen abfragen
exports['cv_framework']:GetGasStations()   -- → table

Server-Events

-- Tank vollständig auffüllen
TriggerServerEvent('cv:server:FillVehicleTank', VehToNet(vehicle))

-- Kraftstoff hinzufügen
TriggerServerEvent('cv:server:AddVehicleFuel', VehToNet(vehicle), amount)

Server-Callback

-- Detaillierte Tank-Info abrufen
cv.callback.trigger('GetVehicleFuelInfo', false, function(info)
    if info then
        print(('Tank: %.1f/%.1f L (%.0f%%)'):format(
            info.currentFuel, info.maxFuel, info.percentage
        ))
    end
end, VehToNet(vehicle))

Tankstellen-Interaktion

Wenn der Spieler als Fahrer an einer Tankstelle steht: - Grüner Marker wird gezeigt - Hilfetext: Press G to refuel - G starten Tankanimation (Dauer: 100ms × benötigte Liter) - Bewegung, Schadensnahme oder Verlassen des Fahrzeugs bricht den Vorgang ab