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
| Chave | Padrão | Descriçã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'. |
dialogue | true | O 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. |
showBlips | 2 | Blips dos postos: 0 nenhum, 1 só o mais próximo, 2 todos. |
globalFuelConsumptionRate | 10.0 | A velocidade com que todos os veículos queimam combustível. |
Blips, comandos e admins
| Chave | Padrão | Descriçã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. |
commands | veja abaixo | Nomes 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). |
notify | false | O 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
| Chave | Padrão | Descriçã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. |
cardOnly | true | As 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' },
| Chave | Descrição |
label | Nome nas telas e nas mensagens. |
price | Preço por litro. |
consumption | Multiplicador de consumo ao dirigir. Mais baixo queima menos. |
defaultFuelType | Tipo com que um veículo a gasolina roda antes de alguém abastecê-lo. |
fuelAmounts | Quantidades 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 / refillTick | Litros 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
| Chave | Descrição |
dieselVehicles | Modelos 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.electricVehicles | Modelos elétricos. Eles recarregam em um carregador elétrico, e as bombas os recusam. |
tankSizes | Tamanho do tanque em litros por classe de veículo. Define o medidor e as telas. |
tankSizesByType / defaultTankSize | Tamanho do tanque por tipo de veículo (carro 65 L, moto 15 L, barco 180 L…). O preço é cobrado a partir desta tabela. |
vehicleTankOverrides | Tamanho do tanque de um modelo, ex. ['panto'] = 40. |
vehicleNozzleOffsets | O 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
| Chave | Padrão | Descrição |
consumption.tick | 1000 | Milissegundos entre duas leituras ao dirigir. |
consumption.replicateEvery | 15 | O nível é enviado aos outros jogadores a cada N leituras… |
consumption.replicateDelta | 2.0 | …ou assim que ele variar esta quantidade de %. |
consumption.damageLeak | ativado | Um 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
| Chave | Padrão | Descrição |
cardInsertion.enabled | true | O 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.enabled | true | Animação do braço quando o bico ou o conector entra no veículo. |
sounds.enabled | true | Leitor de cartão, bipes da tela, bico, motor da bomba, recarga. |
ropeSystem.maxLength | 8.0 | Até onde o bico vai a partir da bomba, em metros. Além disso, o jogador solta o bico. |
ropeShape.enabled | true | Física da mangueira e do cabo: comprimento fixo, gravidade, limite de curvatura, apoio no chão. false = uma corda simples. |
ropeShape.hoseLength / cableLength | 2.6 / 4.0 | Comprimento em repouso, em metros. |
ropeShape.reel | true | A mangueira e o cabo se estendem à medida que o jogador se afasta, e ficam folgados. |
pumpModels | as bombas do jogo | Modelos 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
| Chave | Padrão | Descrição |
petrolCan.enabled | true | Galões nas bombas e com o frentista. |
petrolCan.price | 1000 | Um galão novo, cheio (20 L). |
petrolCan.refillPrice | 800 | Reabastecer o galão que você carrega. |
petrolCan.duration | 5000 | Milissegundos 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
| Chave | Padrão | Descrição |
oldPumps.enabled | true | As bombas antigas mantêm o visual do jogo, com contadores giratórios. |
oldPumps.rateFactor | 0.75 | O combustível sai a 75 % da vazão das bombas modernas. |
oldPumps.askAccount | true | Só no autosserviço: o jogador escolhe dinheiro ou banco no final. |
oldPumps.attendant.enabled | true | Um 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.vehicleRange | 8.0 | Metros entre o veículo e a bomba. |
oldPumps.attendant.cans | true | Ele também enche e vende galões, em dinheiro, a petrolCan.price. |
oldPumps.attendant.voice.enabled | true | As 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
| Chave | Padrão | Descrição |
electric.enabled | true | Carregadores elétricos no mapa. |
electric.chargerLocations | 26 carregadores | Uma linha por carregador: prop, location (vector4) e ropeLength (o alcance do cabo). |
electric.chargeTypes | fast, normal | label, price por 1 % recarregado e time em segundos por 0,5 %. |
electric.defaultChargeType | 'normal' | Tipo de recarga escolhido por padrão. |
electric.batterySizes | default = 80 | Tamanho da bateria em kWh por modelo, para a energia e o tempo mostrados na tela. |
Mais em Recarga elétrica.
Substituição direta
| Chave | Padrão | Descrição |
compatExports | todos true | Responde 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
},
},
| Campo | Descrição |
id | Id único. Não o renomeie depois que o seu servidor estiver no ar: o estoque do posto é salvo com ele. |
label | Nome mostrado nas telas e no emprego de entrega. |
brand | Para o seu próprio uso (exports, outros scripts). A tela da bomba é a mesma em todo lugar. |
coords / radius | Centro do posto e raio de ativação. |
pumps | Posições exatas das bombas do posto. |
attendant | true = um frentista atende este posto. |
attendantPost | vec4(x, y, z, heading): onde ele espera. Padrão: perto da primeira bomba. |
fuels | Combustí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.