Konfiguration

Alles steht in config.lua, die offen und bearbeitbar bleibt. Die Tankstellen sind in data/stations.lua aufgelistet, die Lieferorte in data/delivery.lua. Der Lieferjob hat eine eigene Seite: Treibstoff-Lieferjob.

Ihr Server, Ihre Regeln. config.lua, data/, locales/ und die Seiten der Zapfsäulen-Displays in html/ sind nicht verschlüsselt. Sie können dort Preise, Zahlung, Verbrauch pro Fahrzeugklasse oder Modell, Tankgrößen, Diesel- und Elektromodelle, Blips, Befehlsnamen, Admin-Rechte, Benachrichtigungen, den Tankwart, den Lieferjob, die Tankstellen und die 19 Sprachen ändern. Mit hz_lib lassen sich Preise, Zahlung und der Lohn der Fahrer auch im Spiel über das /hzpanel ändern, ohne Neustart.

Im /hzpanel

Wenn hz_lib läuft, hat das /hzpanel einen Tab Fuel. Eine Änderung gilt sofort auf dem Server und für alle Spieler, ohne Neustart. config.lua bleibt der Standard: Eine Einstellung, die Sie nie im Panel speichern, behält ihren Wert aus config.lua, und ein Server ohne hz_lib nutzt einfach config.lua. Ein im Panel gespeicherter Wert hat Vorrang vor der Datei. Mit hz_lib 1.2.1 oder neuer entfernt die Zurücksetzen-Schaltfläche des Panels diesen Wert, und die Einstellung folgt wieder config.lua. Mit hz_lib 1.2.0 speichert die Zurücksetzen-Schaltfläche stattdessen den Standardwert des Panels.

  • General (Allgemein): nur Karte an modernen Zapfsäulen und Ladesäulen (cardOnly), zuerst belastetes Konto (paymentAccount), Literpreis jeder Sorte, Preise für Schnell- und Normalladen, Preise für Kanister und Nachfüllen, Verbrauch aller Fahrzeuge (globalFuelConsumptionRate).
  • Delivery job (Lieferjob): Lohn pro geliefertem Liter für jede Sorte, Lohn pro km, Höchstverdienst eines Fahrers pro Stunde, Kaution für den LKW.
Bereits angezeigte Zapfsäulen-Displays behalten ihre alten Preise, bis sie erneut angezeigt werden.

Allgemein

SchlüsselStandardBeschreibung
framework'auto''esx', 'qbcore', 'qbox', 'ox' oder 'standalone'. 'auto' fragt hz_lib, sucht dann selbst nach dem Framework und läuft sonst standalone.
inventory'auto''ox_inventory', 'qs-inventory', 'ps-inventory', 'codem-inventory', 'origen_inventory', 'core_inventory', 'tgiann-inventory' oder 'none'.
dialoguetrueTankwart und Disponent sprechen im Dialogfenster von hz_lib, wenn hz_lib läuft. false nutzt Menüs und Benachrichtigungen von ox_lib.
showBlips2Tankstellen-Blips: 0 keine, 1 nur die nächste, 2 alle.
globalFuelConsumptionRate10.0Wie schnell jedes Fahrzeug Treibstoff verbraucht.

Blips, Befehle & Admins

SchlüsselStandardBeschreibung
stationBlip{ sprite = 361, colour = 6, scale = 0.8 }Symbol, Farbe und Größe der Tankstellen-Blips. Die Blips des Lieferjobs stehen in delivery.blips.
commandssiehe untenNamen der Chatbefehle. Benennen Sie einen um, wenn ein anderes Script ihn schon nutzt.
adminAces{ 'command', 'admin', 'group.admin' }Ein Spieler mit einem dieser ACEs kann die Admin-Werkzeuge nutzen (/hzfuelsites, /hzfuelstock, /hzfuelplace).
notifyfalseIhr eigenes Benachrichtigungssystem für alle Meldungen von HZ-Fuel. false = ox_lib, und das Benachrichtigungssystem von hz_lib für Meldungen, die der Server sendet.
commands = {
    fuelType = 'fueltype',      -- what the current vehicle drinks
    tanker = 'tanker',          -- delivery job: what the trailer carries
    orders = 'hzfuelorders',    -- delivery job: the tours board
    stock = 'hzfuelstock',      -- admin: station stocks
    sites = 'hzfuelsites',      -- admin: stations and delivery points
    place = 'hzfuelplace',      -- admin: move a delivery point to where you stand
},

-- called on the client with ox_lib's notify table { title, description, type, duration }
notify = function(data)
    exports['my_notify']:Alert(data.title or 'Fuel', data.description, data.type, 5000)
end,

Zahlung

SchlüsselStandardBeschreibung
requirePayment'auto'true lässt Spieler bezahlen, false macht Treibstoff kostenlos (die Displays zeigen trotzdem den Preis). 'auto' kassiert, wenn ein Geldsystem gefunden wird (hz_lib, ESX, QBCore, Qbox oder ein Bargeld-Item von ox_inventory), und schaltet sich sonst ab.
paymentAccount'cash'Konto, das zuerst belastet wird. Ist es leer, wird das andere genutzt.
cardOnlytrueModerne Zapfsäulen, der an einer Zapfsäule gekaufte Kanister und Ladesäulen nehmen die Karte: nur Bankkonto. Die Landtankstellen nehmen Bargeld, über ihren Tankwart. false belastet zuerst paymentAccount, dann das andere Konto.
Der Server legt den Preis fest. Jede Tankfüllung wird nach dem tatsächlich gelieferten Treibstoff und den Preisen in dieser Datei berechnet. Um Ihre eigene Wirtschaft anzubinden, siehe setPaymentMethod.

Kraftstoffsorten & Preise

fuelTypes = {
    regular = { label = 'Regular', price = 2.50, consumption = 1.0 },
    plus    = { label = 'Plus',    price = 3.00, consumption = 0.9 },
    premium = { label = 'Premium', price = 3.50, consumption = 0.8 },
    diesel  = { label = 'Diesel',  price = 2.80, consumption = 0.85 },
},
defaultFuelType = 'regular',
fuelAmounts = { 20, 40, 'full' },

SchlüsselBeschreibung
labelName auf den Displays und in Nachrichten.
pricePreis pro Liter.
consumptionVerbrauchsmultiplikator beim Fahren. Niedriger verbraucht weniger.
defaultFuelTypeSorte, mit der ein Benzinfahrzeug fährt, bevor es jemand betankt.
fuelAmountsMengen, die nach der Sorte auf dem Display der Zapfsäule angeboten werden, in Litern. 'full' füllt den Tank. Eine leere Tabelle überspringt den Schritt: Die Zapfsäule läuft, bis der Spieler stoppt.
refillValue / refillTickLiter pro Tick (0.50) und Ticklänge in ms (300): die Durchflussrate der Zapfsäule.
Ein Fahrzeug behält die Sorte, mit der es zuletzt betankt wurde, und sein Verbrauch richtet sich nach dieser Sorte.

Fahrzeuge

SchlüsselBeschreibung
dieselVehiclesModelle, die nur Diesel tanken: LKW, Busse, Baumaschinen, Landmaschinen, Militär… Alle anderen Fahrzeuge, Add-ons eingeschlossen, fahren mit Benzin.
electric.electricVehiclesElektromodelle. Sie laden an einer Ladesäule, und die Zapfsäulen verweigern sie.
tankSizesTankgröße in Litern pro Fahrzeugklasse. Bestimmt die Tankanzeige und die Displays.
tankSizesByType / defaultTankSizeTankgröße pro Fahrzeugtyp (Auto 65 L, Motorrad 15 L, Boot 180 L…). Der Preis wird nach dieser Tabelle berechnet.
vehicleTankOverridesTankgröße eines einzelnen Modells, z. B. ['panto'] = 40.
vehicleNozzleOffsetsDer Tankdeckel wird bei jedem Fahrzeug automatisch gefunden. Für ein Custom-Auto, das es braucht, verschieben Sie die Zapfpistole pro Modell: ['adder'] = { nozzleOffset = { forward = -0.10, up = 0.05 } } (Meter).

Verbrauch

SchlüsselStandardBeschreibung
consumption.tick1000Millisekunden zwischen zwei Messungen während der Fahrt.
consumption.replicateEvery15Der Stand wird alle N Messungen an andere Spieler gesendet…
consumption.replicateDelta2.0…oder sobald er sich um so viele % bewegt hat.
consumption.damageLeakanEin beschädigter Tank (Zustand unter tankHealth, 700) verliert pro Messung 0,10 bis 0,20 % des Tanks, zusätzlich zu dem, was der Motor verbraucht.
consumption.classes{}Verbrauchsmultiplikator pro Fahrzeugklasse (0 Kompaktwagen, 8 Motorräder, 15 Hubschrauber, 18 Einsatzfahrzeuge…).
consumption.models{}Verbrauchsmultiplikator pro Modell, nach Spawn-Name. Hat Vorrang vor der Klasse.
0 bedeutet, dass das Fahrzeug nie Treibstoff verbraucht und auch nie welchen verliert. Einsatzfahrzeuge, denen der Treibstoff nie ausgeht, Motorräder, die weniger verbrauchen, ein Supersportwagen, der mehr verbraucht:

consumption = {
    -- tick, replicateEvery, replicateDelta, damageLeak as above
    classes = { [18] = 0.0, [8] = 0.6 },
    models = { adder = 1.5 },
},

Die Multiplikatoren für Klasse und Modell wirken zusätzlich zu globalFuelConsumptionRate und zum consumption-Wert der Kraftstoffsorte.


Zapfsäulen & Schläuche

SchlüsselStandardBeschreibung
cardInsertion.enabledtrueDer Spieler schiebt eine Bankkarte in die Zapfsäule, bevor sich das Display öffnet, und nimmt sie am Ende wieder heraus. model ist das Prop der Karte.
insertAnim.enabledtrueArmanimation, wenn Zapfpistole oder Stecker ins Fahrzeug gesteckt werden.
sounds.enabledtrueKartenleser, Pieptöne des Displays, Zapfpistole, Pumpenmotor, Laden.
ropeSystem.maxLength8.0Wie weit sich die Zapfpistole von der Zapfsäule entfernen kann, in Metern. Darüber hinaus lässt der Spieler die Zapfpistole fallen.
ropeShape.enabledtruePhysik für Schlauch und Kabel: feste Länge, Schwerkraft, Biegegrenze, liegt auf dem Boden auf. false = ein einfaches Seil.
ropeShape.hoseLength / cableLength2.6 / 4.0Länge in Ruhe, in Metern.
ropeShape.reeltrueSchlauch und Kabel werden länger, wenn sich der Spieler entfernt, und bleiben locker.
pumpModelsdie Zapfsäulen des SpielsZapfsäulenmodelle, die HZ-Fuel bedient. Siehe Maps, die die Zapfsäulen ersetzen.
Die Positionen von Display und Kamera jedes Zapfsäulen- und Ladesäulenmodells sind auf die Zapfsäulen des Spiels und auf die HZ-Ladesäule abgestimmt. Lassen Sie diese Tabellen, wie sie sind.

Kanister

SchlüsselStandardBeschreibung
petrolCan.enabledtrueKanister an den Zapfsäulen und beim Tankwart.
petrolCan.price1000Ein neuer, voller Kanister (20 L).
petrolCan.refillPrice800Auffüllen des Kanisters, den Sie tragen.
petrolCan.duration5000Millisekunden, um einen leeren Kanister an der Zapfsäule zu füllen.
petrolCanItem'WEAPON_PETROLCAN'Item-Name. ox_inventory nutzt WEAPON_PETROLCAN, die meisten anderen Inventare weapon_petrolcan.
Automatisch erkannt: ox_inventory, qb-inventory (sowie ps / lj), qs-inventory, codem-inventory, tgiann-inventory, origen_inventory, core_inventory, hz_lib und ESX ohne Item-Inventar (der Kanister ist dann eine Loadout-Waffe). ox_inventory speichert den Füllstand des Kanisters im Item. Bei den anderen wird der Füllstand pro Spieler auf dem Server gespeichert und übersteht Neustarts.

Ein anderes Inventar? Füllen Sie die drei serverseitigen Funktionen aus, die vor allem anderen genutzt werden:

petrolCan = {
    has = function(source) return exports['my_inventory']:HasItem(source, 'weapon_petrolcan', 1) end,
    give = function(source) return exports['my_inventory']:AddItem(source, 'weapon_petrolcan', 1) end,
    canCarry = function(source) return exports['my_inventory']:CanCarryItem(source, 'weapon_petrolcan', 1) end,
},


Alte Tankstellen & Tankwart

SchlüsselStandardBeschreibung
oldPumps.enabledtrueDie alten Zapfsäulen behalten den Look des Spiels, mit rollenden Zählwerken.
oldPumps.rateFactor0.75Der Treibstoff fließt mit 75 % der Rate der modernen Zapfsäulen.
oldPumps.askAccounttrueNur bei Selbstbedienung: Der Spieler wählt am Ende Bargeld oder Bank.
oldPumps.attendant.enabledtrueEin Tankwart bedient die Tankstellen mit attendant = true. false = Selbstbedienung.
oldPumps.attendant.model's_m_m_autoshop_01'Sein Ped-Modell.
oldPumps.attendant.fuels{ 'diesel' }Was diese Tankstellen verkaufen. Die eigenen fuels einer Tankstelle haben Vorrang.
oldPumps.attendant.vehicleRange8.0Meter zwischen Fahrzeug und Zapfsäule.
oldPumps.attendant.canstrueEr füllt und verkauft auch Kanister, gegen Bargeld, zu petrolCan.price.
oldPumps.attendant.voice.enabledtrueSeine eigenen Sprachzeilen. false = die allgemeinen Sätze des Spiels.
oldPumps.attendant.voice.language'auto''en' (Englisch, wie die Figuren des Spiels), 'fr' oder 'auto' (die Sprache des Servers).
oldPumps.attendant.voice.fallback'en'Stimme, die mit 'auto' genutzt wird, wenn es für die Sprache des Servers keine gibt.
So arbeitet er: Alte Tankstellen & Tankwart.

Elektrisches Laden

SchlüsselStandardBeschreibung
electric.enabledtrueLadesäulen auf der Karte.
electric.chargerLocations26 LadesäulenEine Zeile pro Ladesäule: prop, location (vector4) und ropeLength (wie weit das Kabel reicht).
electric.chargeTypesfast, normallabel, price pro 1 % geladen und time in Sekunden pro 0,5 %.
electric.defaultChargeType'normal'Standardmäßig gewählte Ladeart.
electric.batterySizesdefault = 80Akkugröße in kWh pro Modell, für die Energie und die Zeit auf dem Display.
Mehr unter Elektrisches Laden.

Drop-in-Ersatz

SchlüsselStandardBeschreibung
compatExportsalle trueBeantwortet die Exports von LegacyFuel, qb-fuel, cdn-fuel, ps-fuel und ox_fuel. Setzen Sie die Zeile eines Scripts, das installiert bleibt, auf false.
compatStateBags{ 'qb-fuel' }Zusätzliche Statebags mit dem Tankstand, für Scripts, die sie lesen. fuel (ox_fuel) wird immer geschrieben.
Was andere Scripts aufrufen können: Exports & Kompatibilität.

Tankstellen

data/stations.lua listet die 27 Tankstellen auf: 17 moderne und 10 Landtankstellen mit Tankwart.

{
    id = 'ls_ltd_grove',
    brand = 'ltd',
    label = 'LTD Grove Street',
    coords = vec3(-71.28, -1761.16, 29.48),
    radius = 60.0,
    pumps = {
        vec3(-63.61, -1767.93, 28.26),
        -- one line per pump
    },
},

FeldBeschreibung
idEindeutige ID. Benennen Sie sie nicht um, sobald Ihr Server live ist: Der Vorrat der Tankstelle wird unter ihr gespeichert.
labelName auf den Displays und im Lieferjob.
brandFür Ihre eigene Verwendung (Exports, andere Scripts). Das Display der Zapfsäule ist überall gleich.
coords / radiusMittelpunkt der Tankstelle und Aktivierungsradius.
pumpsGenaue Positionen der Zapfsäulen der Tankstelle.
attendanttrue = ein Tankwart bedient diese Tankstelle.
attendantPostvec4(x, y, z, heading): wo er wartet. Standard: bei der ersten Zapfsäule.
fuelsAn dieser Tankstelle verkaufte Kraftstoffe. Standard: die fuels des Tankwarts an einer Landtankstelle, sonst alle Sorten.

Sprache

HZ-Fuel folgt der Sprache von ox_lib. Legen Sie sie in Ihrer server.cfg fest:

setr ox:locale "fr"

19 Sprachen sind in locales/ enthalten: cs, de, en, es, et, fr, hr, hu, it, lt, nl, pl, pr, pt-br, ro, ru, tr, zh-cn und zh-tw. Fehlende Zeilen fallen auf Englisch zurück. Für eine weitere Sprache kopieren Sie locales/en.json in eine neue Datei, benannt nach dem Sprachcode, und übersetzen sie.

Die NPC-Stimmen sind Englisch oder Französisch (voice.language). Der Text ihrer Sätze im Dialogfenster folgt der Sprache jedes Spielers, wie Untertitel.