Configuração

Tudo fica no config.lua, que permanece aberto e editável. Os postos ficam listados em data/stations.lua, os locais de entrega em data/delivery.lua. O emprego de entrega tem a sua própria página: Emprego de entrega de combustível.

Seu servidor, suas regras. config.lua, data/, locales/ e as páginas das telas das bombas em html/ não são criptografados: você pode mudar os preços, o pagamento, o consumo por classe ou modelo de veículo, o tamanho dos tanques, os modelos a diesel e elétricos, os blips, os nomes dos comandos, os direitos de admin, as notificações, o frentista, o emprego de entrega, os postos e os 19 idiomas. Com o hz_lib, os preços, o pagamento e a remuneração do motorista também mudam no jogo pelo /hzpanel, sem reiniciar.

No /hzpanel

Com o hz_lib rodando, o /hzpanel tem uma aba Fuel. Uma mudança vale na hora no servidor e para todos os jogadores, sem reiniciar. O config.lua continua sendo o padrão: um ajuste que você nunca salva no painel mantém o valor do config.lua, e um servidor sem hz_lib simplesmente usa o config.lua. Um valor salvo no painel tem prioridade sobre o arquivo. Com o hz_lib 1.2.1 ou mais recente, o botão de redefinir do painel apaga esse valor e o ajuste volta a seguir o config.lua. Com o hz_lib 1.2.0, o botão de redefinir salva no lugar o padrão do próprio painel.

  • General (Geral): só cartão nas bombas modernas e nos carregadores (cardOnly), conta cobrada primeiro (paymentAccount), preço por litro de cada combustível, preços da recarga rápida e normal, preços do galão e do reabastecimento do galão, consumo de todos os veículos (globalFuelConsumptionRate).
  • Delivery job (emprego de entrega): pagamento por litro entregue de cada combustível, pagamento por km, máximo que um motorista ganha por hora, caução do caminhão.
As telas de bomba que já estão sendo exibidas mantêm os preços antigos até serem exibidas de novo.

Geral

ChavePadrãoDescrição
framework'auto''esx', 'qbcore', 'qbox', 'ox' ou 'standalone'. 'auto' pergunta ao hz_lib, depois procura o framework sozinho e, se não encontrar, roda em standalone.
inventory'auto''ox_inventory', 'qs-inventory', 'ps-inventory', 'codem-inventory', 'origen_inventory', 'core_inventory', 'tgiann-inventory' ou 'none'.
dialoguetrueO frentista e o despachante falam na caixa de diálogo do hz_lib quando o hz_lib está rodando. false usa menus e notificações do ox_lib.
showBlips2Blips dos postos: 0 nenhum, 1 só o mais próximo, 2 todos.
globalFuelConsumptionRate10.0A velocidade com que todos os veículos queimam combustível.

Blips, comandos e admins

ChavePadrãoDescrição
stationBlip{ sprite = 361, colour = 6, scale = 0.8 }Ícone, cor e tamanho dos blips dos postos. Os blips do emprego de entrega ficam em delivery.blips.
commandsveja abaixoNomes dos comandos de chat. Renomeie um se outro script já o usa.
adminAces{ 'command', 'admin', 'group.admin' }Um jogador com qualquer um destes ACEs pode usar as ferramentas de admin (/hzfuelsites, /hzfuelstock, /hzfuelplace).
notifyfalseO seu próprio sistema de notificações para todas as mensagens do HZ-Fuel. false = ox_lib, e o sistema de notificações do hz_lib para as mensagens enviadas pelo servidor.
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,

Pagamento

ChavePadrãoDescrição
requirePayment'auto'true cobra os jogadores, false deixa o combustível grátis (as telas continuam mostrando o preço). 'auto' cobra quando encontra um sistema de dinheiro (hz_lib, ESX, QBCore, Qbox ou um item de dinheiro do ox_inventory) e se desativa caso contrário.
paymentAccount'cash'Conta cobrada primeiro. A outra é usada quando ela está vazia.
cardOnlytrueAs bombas modernas, o galão comprado na bomba e os carregadores elétricos aceitam o cartão: só a conta bancária. Os postos do interior aceitam dinheiro, por meio do frentista. false cobra primeiro paymentAccount, depois a outra conta.
O servidor define o preço. Cada abastecimento é cobrado a partir do combustível realmente entregue e dos preços deste arquivo. Para ligar a sua própria economia, veja setPaymentMethod.

Tipos de combustível e preços

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' },

ChaveDescrição
labelNome nas telas e nas mensagens.
pricePreço por litro.
consumptionMultiplicador de consumo ao dirigir. Mais baixo queima menos.
defaultFuelTypeTipo com que um veículo a gasolina roda antes de alguém abastecê-lo.
fuelAmountsQuantidades oferecidas na tela da bomba depois do tipo, em litros. 'full' enche o tanque. Uma tabela vazia pula a etapa: a bomba funciona até o jogador parar.
refillValue / refillTickLitros por tick (0.50) e duração do tick em ms (300): a vazão da bomba.
Um veículo mantém o tipo com que foi abastecido por último, e o consumo dele segue esse tipo.

Veículos

ChaveDescrição
dieselVehiclesModelos que só aceitam diesel: caminhões, ônibus, construção, agrícolas, militares… Todos os outros veículos, add-ons incluídos, rodam a gasolina.
electric.electricVehiclesModelos elétricos. Eles recarregam em um carregador elétrico, e as bombas os recusam.
tankSizesTamanho do tanque em litros por classe de veículo. Define o medidor e as telas.
tankSizesByType / defaultTankSizeTamanho do tanque por tipo de veículo (carro 65 L, moto 15 L, barco 180 L…). O preço é cobrado a partir desta tabela.
vehicleTankOverridesTamanho do tanque de um modelo, ex. ['panto'] = 40.
vehicleNozzleOffsetsO bocal do tanque é encontrado automaticamente em cada veículo. Para um carro personalizado que precise, mova o bico por modelo: ['adder'] = { nozzleOffset = { forward = -0.10, up = 0.05 } } (metros).

Consumo

ChavePadrãoDescrição
consumption.tick1000Milissegundos entre duas leituras ao dirigir.
consumption.replicateEvery15O nível é enviado aos outros jogadores a cada N leituras…
consumption.replicateDelta2.0…ou assim que ele variar esta quantidade de %.
consumption.damageLeakativadoUm tanque danificado (vida abaixo de tankHealth, 700) vaza de 0,10 a 0,20 % do tanque por leitura, além do que o motor queima.
consumption.classes{}Multiplicador de consumo por classe de veículo (0 compactos, 8 motos, 15 helicópteros, 18 emergência…).
consumption.models{}Multiplicador de consumo por modelo, pelo nome de spawn. Vale mais que a classe.
0 quer dizer que o veículo nunca gasta combustível e nunca vaza. Veículos de emergência que nunca ficam sem combustível, motos que queimam menos, um supercarro que queima mais:

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

Os multiplicadores de classe e de modelo se aplicam além do globalFuelConsumptionRate e do consumption do tipo de combustível.


Bombas e mangueiras

ChavePadrãoDescrição
cardInsertion.enabledtrueO jogador insere um cartão do banco na bomba antes de a tela abrir, e o retira no final. model é o prop do cartão.
insertAnim.enabledtrueAnimação do braço quando o bico ou o conector entra no veículo.
sounds.enabledtrueLeitor de cartão, bipes da tela, bico, motor da bomba, recarga.
ropeSystem.maxLength8.0Até onde o bico vai a partir da bomba, em metros. Além disso, o jogador solta o bico.
ropeShape.enabledtrueFísica da mangueira e do cabo: comprimento fixo, gravidade, limite de curvatura, apoio no chão. false = uma corda simples.
ropeShape.hoseLength / cableLength2.6 / 4.0Comprimento em repouso, em metros.
ropeShape.reeltrueA mangueira e o cabo se estendem à medida que o jogador se afasta, e ficam folgados.
pumpModelsas bombas do jogoModelos de bomba atendidos pelo HZ-Fuel. Veja Mapas que substituem as bombas.
As posições da tela e da câmera de cada modelo de bomba e de carregador são ajustadas às bombas do jogo e ao carregador HZ. Deixe essas tabelas como estão.

Galão de gasolina

ChavePadrãoDescrição
petrolCan.enabledtrueGalões nas bombas e com o frentista.
petrolCan.price1000Um galão novo, cheio (20 L).
petrolCan.refillPrice800Reabastecer o galão que você carrega.
petrolCan.duration5000Milissegundos para encher um galão vazio na bomba.
petrolCanItem'WEAPON_PETROLCAN'Nome do item. O ox_inventory usa WEAPON_PETROLCAN, a maioria dos outros inventários weapon_petrolcan.
Detectados automaticamente: ox_inventory, qb-inventory (e ps / lj), qs-inventory, codem-inventory, tgiann-inventory, origen_inventory, core_inventory, hz_lib e ESX sem inventário de itens (o galão é uma arma do loadout). O ox_inventory guarda o nível do galão no item. Com os outros, o nível é guardado por jogador no servidor e sobrevive aos reinícios.

Outro inventário? Preencha as três funções do lado do servidor, usadas antes de qualquer outra coisa:

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,
},


Postos antigos e frentista

ChavePadrãoDescrição
oldPumps.enabledtrueAs bombas antigas mantêm o visual do jogo, com contadores giratórios.
oldPumps.rateFactor0.75O combustível sai a 75 % da vazão das bombas modernas.
oldPumps.askAccounttrueSó no autosserviço: o jogador escolhe dinheiro ou banco no final.
oldPumps.attendant.enabledtrueUm frentista atende os postos marcados com attendant = true. false = autosserviço.
oldPumps.attendant.model's_m_m_autoshop_01'O modelo de ped dele.
oldPumps.attendant.fuels{ 'diesel' }O que esses postos vendem. O fuels próprio de um posto tem prioridade.
oldPumps.attendant.vehicleRange8.0Metros entre o veículo e a bomba.
oldPumps.attendant.canstrueEle também enche e vende galões, em dinheiro, a petrolCan.price.
oldPumps.attendant.voice.enabledtrueAs falas com a própria voz dele. false = as falas genéricas do jogo.
oldPumps.attendant.voice.language'auto''en' (inglês, como os personagens do jogo), 'fr' ou 'auto' (o idioma do servidor).
oldPumps.attendant.voice.fallback'en'Voz usada com 'auto' quando o idioma do servidor não tem uma.
Como ele trabalha: Postos antigos e frentista.

Recarga elétrica

ChavePadrãoDescrição
electric.enabledtrueCarregadores elétricos no mapa.
electric.chargerLocations26 carregadoresUma linha por carregador: prop, location (vector4) e ropeLength (o alcance do cabo).
electric.chargeTypesfast, normallabel, price por 1 % recarregado e time em segundos por 0,5 %.
electric.defaultChargeType'normal'Tipo de recarga escolhido por padrão.
electric.batterySizesdefault = 80Tamanho da bateria em kWh por modelo, para a energia e o tempo mostrados na tela.
Mais em Recarga elétrica.

Substituição direta

ChavePadrãoDescrição
compatExportstodos trueResponde aos exports do LegacyFuel, qb-fuel, cdn-fuel, ps-fuel e ox_fuel. Defina como false a linha de um script que você mantiver instalado.
compatStateBags{ 'qb-fuel' }Statebags extras preenchidos com o nível de combustível, para os scripts que os leem. fuel (ox_fuel) é sempre escrito.
O que outros scripts podem chamar: Exports e compatibilidade.

Postos

data/stations.lua lista os 27 postos: 17 modernos e 10 do interior com frentista.

{
    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
    },
},

CampoDescrição
idId único. Não o renomeie depois que o seu servidor estiver no ar: o estoque do posto é salvo com ele.
labelNome mostrado nas telas e no emprego de entrega.
brandPara o seu próprio uso (exports, outros scripts). A tela da bomba é a mesma em todo lugar.
coords / radiusCentro do posto e raio de ativação.
pumpsPosições exatas das bombas do posto.
attendanttrue = um frentista atende este posto.
attendantPostvec4(x, y, z, heading): onde ele espera. Padrão: perto da primeira bomba.
fuelsCombustíveis vendidos neste posto. Padrão: os fuels do frentista em um posto do interior, todos os tipos nos outros.

Idioma

O HZ-Fuel segue o idioma do ox_lib. Defina-o no seu server.cfg:

setr ox:locale "fr"

19 idiomas estão incluídos em locales/: cs, de, en, es, et, fr, hr, hu, it, lt, nl, pl, pr, pt-br, ro, ru, tr, zh-cn e zh-tw. As linhas que faltarem usam o inglês. Para outro idioma, copie locales/en.json para um novo arquivo com o código dele e traduza-o.

As vozes dos NPCs são em inglês ou francês (voice.language). O texto das falas na caixa de diálogo segue o idioma de cada jogador, como legendas.