Configuration
Tout est dans config.lua, qui reste ouvert et modifiable. Les stations sont listées dans data/stations.lua, les sites de livraison dans data/delivery.lua. Le job de livraison a sa propre page : Job de livraison.
Votre serveur, vos règles. config.lua,
data/,
locales/ et les pages des écrans de pompe dans
html/ ne sont pas chiffrés. Vous pouvez y changer les prix, le paiement, la consommation par classe ou modèle de véhicule, la taille des réservoirs, les modèles diesel et électriques, les blips, le nom des commandes, les droits admin, les notifications, le pompiste, le job de livraison, les stations et les 19 langues. Avec hz_lib, les prix, le paiement et la paie du livreur se changent aussi en jeu depuis
/hzpanel, sans redémarrage.
Dans /hzpanel
Quand hz_lib tourne, /hzpanel a un onglet Carburant. Un changement s'applique tout de suite sur le serveur et pour chaque joueur, sans redémarrage. config.lua reste la valeur par défaut : un réglage jamais enregistré dans le panel garde sa valeur de config.lua, et un serveur sans hz_lib utilise simplement config.lua. Une valeur enregistrée dans le panel l'emporte sur le fichier. Avec hz_lib 1.2.1 ou plus récent, le bouton de réinitialisation du panel efface cette valeur et le réglage suit de nouveau config.lua. Avec hz_lib 1.2.0, ce bouton enregistre à la place la valeur par défaut du panel.
- Général : carte seulement aux pompes modernes et bornes (
cardOnly), compte débité d'abord (paymentAccount), prix au litre de chaque carburant, prix de la recharge rapide et normale, prix du jerrican et de son remplissage, consommation de tous les véhicules (globalFuelConsumptionRate).
- Métier de livreur : paie par litre livré pour chaque carburant, paie par km, gain maximum d'un livreur par heure, caution du camion.
Les écrans de pompe déjà affichés gardent leurs anciens prix jusqu'à leur prochain affichage.
Général
| Clé | Défaut | Description |
framework | 'auto' | 'esx', 'qbcore', 'qbox', 'ox' ou 'standalone'. 'auto' demande à hz_lib, puis cherche le framework lui-même, puis passe en standalone. |
inventory | 'auto' | 'ox_inventory', 'qs-inventory', 'ps-inventory', 'codem-inventory', 'origen_inventory', 'core_inventory', 'tgiann-inventory' ou 'none'. |
dialogue | true | Le pompiste et le répartiteur parlent dans la boîte de dialogue de hz_lib quand hz_lib tourne. false utilise les menus et les notifications d'ox_lib. |
showBlips | 2 | Blips des stations : 0 aucun, 1 la plus proche seulement, 2 toutes. |
globalFuelConsumptionRate | 10.0 | Vitesse à laquelle tous les véhicules brûlent le carburant. |
Blips, commandes et admins
| Clé | Défaut | Description |
stationBlip | { sprite = 361, colour = 6, scale = 0.8 } | Icône, couleur et taille des blips des stations. Les blips du job de livraison sont dans delivery.blips. |
commands | voir ci-dessous | Noms des commandes de chat. Renommez-en une si un autre script l'utilise déjà. |
adminAces | { 'command', 'admin', 'group.admin' } | Un joueur qui a l'une de ces ACE peut utiliser les outils admin (/hzfuelsites, /hzfuelstock, /hzfuelplace). |
notify | false | Votre propre système de notifications pour tous les messages de HZ-Fuel. false = ox_lib, et le système de notifications de hz_lib pour les messages envoyés par le serveur. |
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,
Paiement
| Clé | Défaut | Description |
requirePayment | 'auto' | true fait payer les joueurs, false rend le carburant gratuit (les écrans affichent quand même le prix). 'auto' fait payer quand un système d'argent est trouvé (hz_lib, ESX, QBCore, Qbox, ou un objet argent liquide d'ox_inventory) et se coupe sinon. |
paymentAccount | 'cash' | Compte débité en premier. L'autre sert quand il est vide. |
cardOnly | true | Les pompes modernes, le jerrican acheté à la pompe et les bornes prennent la carte : compte bancaire uniquement. Les stations de campagne prennent le liquide, par leur pompiste. false débite paymentAccount d'abord, puis l'autre compte. |
Le prix est fixé par le serveur. Chaque plein est facturé d'après le carburant réellement servi et les prix de ce fichier. Pour brancher votre propre économie, voir
setPaymentMethod.
Carburants et prix
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' },
| Clé | Description |
label | Nom sur les écrans et dans les messages. |
price | Prix au litre. |
consumption | Multiplicateur de consommation en roulant. Plus bas, le véhicule brûle moins. |
defaultFuelType | Carburant d'un véhicule à essence avant que quelqu'un ne le remplisse. |
fuelAmounts | Quantités proposées sur l'écran de la pompe après le carburant, en litres. 'full' fait le plein. Une table vide saute l'étape : la pompe coule jusqu'à ce que le joueur arrête. |
refillValue / refillTick | Litres par tick (0.50) et durée d'un tick en ms (300) : le débit de la pompe. |
Un véhicule garde le carburant de son dernier plein, et sa consommation suit ce carburant.
Véhicules
| Clé | Description |
dieselVehicles | Modèles qui ne prennent que du diesel : camions, bus, chantier, agriculture, militaire… Tous les autres véhicules, add-ons compris, roulent à l'essence. |
electric.electricVehicles | Modèles électriques. Ils se rechargent à une borne, et les pompes les refusent. |
tankSizes | Taille du réservoir en litres par classe de véhicule. Sert à la jauge et aux écrans. |
tankSizesByType / defaultTankSize | Taille du réservoir par type de véhicule (voiture 65 L, moto 15 L, bateau 180 L…). Le prix est facturé d'après cette table. |
vehicleTankOverrides | Taille du réservoir d'un modèle, par exemple ['panto'] = 40. |
vehicleNozzleOffsets | La trappe à carburant est trouvée toute seule sur chaque véhicule. Pour une voiture custom qui en a besoin, décalez le pistolet par modèle : ['adder'] = { nozzleOffset = { forward = -0.10, up = 0.05 } } (en mètres). |
Consommation
| Clé | Défaut | Description |
consumption.tick | 1000 | Millisecondes entre deux mesures en roulant. |
consumption.replicateEvery | 15 | Le niveau est envoyé aux autres joueurs toutes les N mesures… |
consumption.replicateDelta | 2.0 | …ou dès qu'il a bougé de ce nombre de %. |
consumption.damageLeak | activé | Un réservoir abîmé (santé sous tankHealth, 700) fuit de 0,10 à 0,20 % du réservoir par mesure, en plus de ce que brûle le moteur. |
consumption.classes | {} | Multiplicateur de consommation par classe de véhicule (0 compactes, 8 motos, 15 hélicoptères, 18 urgences…). |
consumption.models | {} | Multiplicateur de consommation par modèle, par nom de spawn. L'emporte sur la classe. |
0 veut dire que le véhicule ne consomme jamais de carburant et ne fuit jamais. Des véhicules d'urgence qui ne tombent jamais en panne sèche, des motos qui consomment moins, une supercar qui consomme plus :
consumption = {
-- tick, replicateEvery, replicateDelta, damageLeak as above
classes = { [18] = 0.0, [8] = 0.6 },
models = { adder = 1.5 },
},
Les multiplicateurs de classe et de modèle s'appliquent en plus de globalFuelConsumptionRate et de la consumption du carburant.
Pompes et tuyaux
| Clé | Défaut | Description |
cardInsertion.enabled | true | Le joueur glisse une carte bancaire dans la pompe avant que l'écran s'ouvre, et la reprend à la fin. model est l'objet de la carte. |
insertAnim.enabled | true | Geste du bras quand le pistolet ou la prise entre dans le véhicule. |
sounds.enabled | true | Lecteur de carte, bips de l'écran, pistolet, moteur de pompe, recharge. |
ropeSystem.maxLength | 8.0 | Distance maximale entre le pistolet et la pompe, en mètres. Au-delà, le joueur lâche le pistolet. |
ropeShape.enabled | true | Physique du tuyau et du câble : longueur fixe, gravité, limite de pliage, repos au sol. false = une corde simple. |
ropeShape.hoseLength / cableLength | 2.6 / 4.0 | Longueur au repos, en mètres. |
ropeShape.reel | true | Le tuyau et le câble s'allongent quand le joueur s'éloigne, et restent détendus. |
pumpModels | les pompes du jeu | Modèles de pompes servis par HZ-Fuel. Voir Cartes qui remplacent les pompes. |
Les positions d'écran et de caméra de chaque modèle de pompe et de borne sont ajustées aux pompes du jeu et à la borne HZ. Laissez ces tables telles quelles.
Jerrican
| Clé | Défaut | Description |
petrolCan.enabled | true | Jerricans aux pompes et chez le pompiste. |
petrolCan.price | 1000 | Un jerrican neuf, plein (20 L). |
petrolCan.refillPrice | 800 | Remplir le jerrican qu'on porte. |
petrolCan.duration | 5000 | Millisecondes pour remplir un jerrican vide à la pompe. |
petrolCanItem | 'WEAPON_PETROLCAN' | Nom de l'objet. ox_inventory utilise WEAPON_PETROLCAN, la plupart des autres inventaires weapon_petrolcan. |
Trouvés tout seuls : ox_inventory, qb-inventory (et ps / lj), qs-inventory, codem-inventory, tgiann-inventory, origen_inventory, core_inventory, hz_lib, et ESX sans inventaire à objets (le jerrican est une arme du loadout). ox_inventory garde le niveau du jerrican dans l'objet. Avec les autres, le niveau est gardé par joueur sur le serveur et survit aux redémarrages.
Un autre inventaire ? Remplissez les trois fonctions côté serveur, utilisées avant tout le reste :
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,
},
Anciennes stations et pompiste
| Clé | Défaut | Description |
oldPumps.enabled | true | Les anciennes pompes gardent l'aspect du jeu, avec leurs compteurs à rouleaux. |
oldPumps.rateFactor | 0.75 | Le carburant coule à 75 % du débit des pompes modernes. |
oldPumps.askAccount | true | Libre-service seulement : le joueur choisit liquide ou banque à la fin. |
oldPumps.attendant.enabled | true | Un pompiste sert les stations marquées attendant = true. false = libre-service. |
oldPumps.attendant.model | 's_m_m_autoshop_01' | Son modèle de ped. |
oldPumps.attendant.fuels | { 'diesel' } | Ce que vendent ces stations. Les fuels propres à une station ont la priorité. |
oldPumps.attendant.vehicleRange | 8.0 | Mètres entre le véhicule et la pompe. |
oldPumps.attendant.cans | true | Il remplit et vend aussi des jerricans, en liquide, au prix de petrolCan.price. |
oldPumps.attendant.voice.enabled | true | Ses propres répliques. false = les répliques génériques du jeu. |
oldPumps.attendant.voice.language | 'auto' | 'en' (anglais, comme les personnages du jeu), 'fr', ou 'auto' (la langue du serveur). |
oldPumps.attendant.voice.fallback | 'en' | Voix utilisée avec 'auto' quand la langue du serveur n'en a pas. |
Comment il travaille : Anciennes stations et pompiste.
Recharge électrique
| Clé | Défaut | Description |
electric.enabled | true | Bornes de recharge sur la carte. |
electric.chargerLocations | 26 bornes | Une ligne par borne : prop, location (vector4) et ropeLength (portée du câble). |
electric.chargeTypes | fast, normal | label, price pour 1 % rechargé, et time en secondes pour 0,5 %. |
electric.defaultChargeType | 'normal' | Type de charge choisi par défaut. |
electric.batterySizes | default = 80 | Taille de batterie en kWh par modèle, pour l'énergie et le temps affichés à l'écran. |
Plus de détails dans Recharge électrique.
Remplacement drop-in
| Clé | Défaut | Description |
compatExports | tout à true | Répond aux exports de LegacyFuel, qb-fuel, cdn-fuel, ps-fuel et ox_fuel. Mettez à false la ligne d'un script que vous gardez installé. |
compatStateBags | { 'qb-fuel' } | Statebags supplémentaires remplis avec le niveau, pour les scripts qui les lisent. fuel (ox_fuel) est toujours écrit. |
Ce que les autres scripts peuvent appeler : Exports et compatibilité.
Stations
data/stations.lua liste les 27 stations : 17 modernes et 10 stations de campagne avec pompiste.
{
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
},
},
| Champ | Description |
id | Identifiant unique. Ne le renommez pas une fois le serveur en ligne : le stock de la station est gardé sous ce nom. |
label | Nom affiché sur les écrans et dans le job de livraison. |
brand | Pour votre usage (exports, autres scripts). L'écran de pompe est le même partout. |
coords / radius | Centre de la station et rayon d'activation. |
pumps | Positions exactes des pompes de la station. |
attendant | true = un pompiste sert cette station. |
attendantPost | vec4(x, y, z, heading) : où il attend. Par défaut : près de la première pompe. |
fuels | Carburants vendus dans cette station. Par défaut : les fuels du pompiste dans une station de campagne, tous les carburants ailleurs. |
Langue
HZ-Fuel suit la langue d'ox_lib. Réglez-la dans votre server.cfg :
setr ox:locale "fr"
19 langues sont livrées dans locales/ : cs, de, en, es, et, fr, hr, hu, it, lt, nl, pl, pr, pt-br, ro, ru, tr, zh-cn et zh-tw. Les lignes manquantes reviennent à l'anglais. Pour une autre langue, copiez locales/en.json dans un nouveau fichier nommé d'après son code et traduisez-le.
Les voix des PNJ sont en anglais ou en français (voice.language). Le texte de leurs répliques dans la boîte de dialogue suit la langue de chaque joueur, comme des sous-titres.