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üssel | Standard | Beschreibung |
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'. |
dialogue | true | Tankwart und Disponent sprechen im Dialogfenster von hz_lib, wenn hz_lib läuft. false nutzt Menüs und Benachrichtigungen von ox_lib. |
showBlips | 2 | Tankstellen-Blips: 0 keine, 1 nur die nächste, 2 alle. |
globalFuelConsumptionRate | 10.0 | Wie schnell jedes Fahrzeug Treibstoff verbraucht. |
Blips, Befehle & Admins
| Schlüssel | Standard | Beschreibung |
stationBlip | { sprite = 361, colour = 6, scale = 0.8 } | Symbol, Farbe und Größe der Tankstellen-Blips. Die Blips des Lieferjobs stehen in delivery.blips. |
commands | siehe unten | Namen 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). |
notify | false | Ihr 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üssel | Standard | Beschreibung |
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. |
cardOnly | true | Moderne 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üssel | Beschreibung |
label | Name auf den Displays und in Nachrichten. |
price | Preis pro Liter. |
consumption | Verbrauchsmultiplikator beim Fahren. Niedriger verbraucht weniger. |
defaultFuelType | Sorte, mit der ein Benzinfahrzeug fährt, bevor es jemand betankt. |
fuelAmounts | Mengen, 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 / refillTick | Liter 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üssel | Beschreibung |
dieselVehicles | Modelle, die nur Diesel tanken: LKW, Busse, Baumaschinen, Landmaschinen, Militär… Alle anderen Fahrzeuge, Add-ons eingeschlossen, fahren mit Benzin. |
electric.electricVehicles | Elektromodelle. Sie laden an einer Ladesäule, und die Zapfsäulen verweigern sie. |
tankSizes | Tankgröße in Litern pro Fahrzeugklasse. Bestimmt die Tankanzeige und die Displays. |
tankSizesByType / defaultTankSize | Tankgröße pro Fahrzeugtyp (Auto 65 L, Motorrad 15 L, Boot 180 L…). Der Preis wird nach dieser Tabelle berechnet. |
vehicleTankOverrides | Tankgröße eines einzelnen Modells, z. B. ['panto'] = 40. |
vehicleNozzleOffsets | Der 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üssel | Standard | Beschreibung |
consumption.tick | 1000 | Millisekunden zwischen zwei Messungen während der Fahrt. |
consumption.replicateEvery | 15 | Der Stand wird alle N Messungen an andere Spieler gesendet… |
consumption.replicateDelta | 2.0 | …oder sobald er sich um so viele % bewegt hat. |
consumption.damageLeak | an | Ein 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üssel | Standard | Beschreibung |
cardInsertion.enabled | true | Der 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.enabled | true | Armanimation, wenn Zapfpistole oder Stecker ins Fahrzeug gesteckt werden. |
sounds.enabled | true | Kartenleser, Pieptöne des Displays, Zapfpistole, Pumpenmotor, Laden. |
ropeSystem.maxLength | 8.0 | Wie weit sich die Zapfpistole von der Zapfsäule entfernen kann, in Metern. Darüber hinaus lässt der Spieler die Zapfpistole fallen. |
ropeShape.enabled | true | Physik für Schlauch und Kabel: feste Länge, Schwerkraft, Biegegrenze, liegt auf dem Boden auf. false = ein einfaches Seil. |
ropeShape.hoseLength / cableLength | 2.6 / 4.0 | Länge in Ruhe, in Metern. |
ropeShape.reel | true | Schlauch und Kabel werden länger, wenn sich der Spieler entfernt, und bleiben locker. |
pumpModels | die Zapfsäulen des Spiels | Zapfsä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üssel | Standard | Beschreibung |
petrolCan.enabled | true | Kanister an den Zapfsäulen und beim Tankwart. |
petrolCan.price | 1000 | Ein neuer, voller Kanister (20 L). |
petrolCan.refillPrice | 800 | Auffüllen des Kanisters, den Sie tragen. |
petrolCan.duration | 5000 | Millisekunden, 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üssel | Standard | Beschreibung |
oldPumps.enabled | true | Die alten Zapfsäulen behalten den Look des Spiels, mit rollenden Zählwerken. |
oldPumps.rateFactor | 0.75 | Der Treibstoff fließt mit 75 % der Rate der modernen Zapfsäulen. |
oldPumps.askAccount | true | Nur bei Selbstbedienung: Der Spieler wählt am Ende Bargeld oder Bank. |
oldPumps.attendant.enabled | true | Ein 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.vehicleRange | 8.0 | Meter zwischen Fahrzeug und Zapfsäule. |
oldPumps.attendant.cans | true | Er füllt und verkauft auch Kanister, gegen Bargeld, zu petrolCan.price. |
oldPumps.attendant.voice.enabled | true | Seine 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üssel | Standard | Beschreibung |
electric.enabled | true | Ladesäulen auf der Karte. |
electric.chargerLocations | 26 Ladesäulen | Eine Zeile pro Ladesäule: prop, location (vector4) und ropeLength (wie weit das Kabel reicht). |
electric.chargeTypes | fast, normal | label, price pro 1 % geladen und time in Sekunden pro 0,5 %. |
electric.defaultChargeType | 'normal' | Standardmäßig gewählte Ladeart. |
electric.batterySizes | default = 80 | Akkugröße in kWh pro Modell, für die Energie und die Zeit auf dem Display. |
Mehr unter Elektrisches Laden.
Drop-in-Ersatz
| Schlüssel | Standard | Beschreibung |
compatExports | alle true | Beantwortet 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
},
},
| Feld | Beschreibung |
id | Eindeutige ID. Benennen Sie sie nicht um, sobald Ihr Server live ist: Der Vorrat der Tankstelle wird unter ihr gespeichert. |
label | Name auf den Displays und im Lieferjob. |
brand | Für Ihre eigene Verwendung (Exports, andere Scripts). Das Display der Zapfsäule ist überall gleich. |
coords / radius | Mittelpunkt der Tankstelle und Aktivierungsradius. |
pumps | Genaue Positionen der Zapfsäulen der Tankstelle. |
attendant | true = ein Tankwart bedient diese Tankstelle. |
attendantPost | vec4(x, y, z, heading): wo er wartet. Standard: bei der ersten Zapfsäule. |
fuels | An 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.