Exports e compatibilidade

Substituir o seu script de combustível

Os seus outros recursos continuam chamando a API que já usam, sem nenhuma edição:

exports['LegacyFuel']:GetFuel(vehicle)          -- answered by hz_fuel
exports['LegacyFuel']:SetFuel(vehicle, 75.0)
exports['qb-fuel']:GetFuel(vehicle)              -- also cdn-fuel, ps-fuel
exports.ox_fuel:setPaymentMethod(fn)             -- server, and setMoneyCheck client side
Entity(vehicle).state.fuel                       -- ox_fuel-compatible statebag
GetResourceState('LegacyFuel')                   -- 'started' (also qb-fuel, ox_fuel, cdn-fuel, ps-fuel)

  • Os scripts que verificam se o recurso de combustível deles está rodando antes de usá-lo (piloto automático, HUDs, garagens) o encontram.
  • Um script com um desses nomes que você mantiver rodando responde por si mesmo. Defina a linha dele como false em compatExports.
  • compatStateBags lista os statebags extras a preencher com o nível (qb-fuel por padrão).
  • Depois de uma atualização, reinicie o servidor inteiro: veja Atualizar.

Nível de combustível

O nível fica no statebag fuel do veículo, de 0 a 100. O tipo com que ele foi abastecido fica em fuelType.

-- read
local fuel = Entity(vehicle).state.fuel

-- write (client)
exports.hz_fuel:SetFuel(vehicle, 50.0)

O combustível adicionado por outro script, uma garagem ou um reparo é levado em conta, não sobrescrito.


Exports do cliente

ExportRetorna
exports.hz_fuel:GetFuel(vehicle)Nível, de 0 a 100
exports.hz_fuel:SetFuel(vehicle, level)Define o nível, de 0 a 100
exports.hz_fuel:GetFuelType(vehicle)Tipo, ex. 'regular'
exports.hz_fuel:setMoneyCheck(fn)Substitui a verificação de dinheiro feita antes de um abastecimento. Veja abaixo

Exports do servidor

ExportRetorna
GetVehicleFuelType(netId)Tipo de combustível do veículo
SetVehicleFuelType(netId, fuelType)true quando definido. Recusado para um tipo que o veículo não aceita
GetFuelPrice(fuelType)Preço por litro
GetFuelTypes()A tabela fuelTypes
GetStations()A lista de postos
IsElectricVehicle(netId)true para um modelo elétrico
GetChargePrice(chargeType)Preço por 1 % em um carregador
GetChargeTypes()A tabela electric.chargeTypes
GetStationStock(stationId)Litros restantes por combustível, ex. { regular = 5200, diesel = 1800 }
SetStationStock(stationId, fuelType, litres)Define um nível, limitado pelo tanque
AddStationStock(stationId, fuelType, litres)Adiciona litros, retorna o que entrou
IsOnDeliveryShift(playerId)true enquanto o jogador está em um turno de entrega
GetDeliveryCargo(playerId)Litros na carreta do jogador por combustível, ou nil
Todos são chamados como exports.hz_fuel:Name(...) no servidor.

Hooks de pagamento

Por padrão, o HZ-Fuel cobra pelo dinheiro do seu framework, ou por um item de dinheiro do ox_inventory. Para usar a sua própria economia:

-- server: return true if the player paid, false/nil otherwise
exports.hz_fuel:setPaymentMethod(function(playerId, amount)
    return exports['my_bank']:Charge(playerId, amount)
end)

-- client: the money the player can spend, checked before a fill starts
exports.hz_fuel:setMoneyCheck(function()
    return exports['my_bank']:GetBalance()
end)

O servidor sempre recalcula o preço a partir do combustível realmente entregue; a verificação no cliente só evita começar um abastecimento que o jogador não pode pagar.


Prompts, diálogos e menus

O quêComSem
Prompts nas bombas, nos carregadores e nos locais de entregaPrompts 3D do HZ-TextUiText UI do ox_lib
Falas e escolhas dos NPCsCaixa de diálogo do hz_libMenus e notificações do ox_lib
Etapas do turno de entregaObjetivos na tela do hz_libNotificações
Tablet de despacho com o mapa das rotashz_libMenu do ox_lib
Nenhum script de target é necessário. O HZ-Fuel roda junto com o ox_target ou o qb-target.

Chaves de veículos

As chaves do caminhão de entrega passam por qbx_vehiclekeys, qb-vehiclekeys, qs-vehiclekeys, wasabi_carlock, mono_carkeys, MrNewbVehicleKeys, cd_garage ou vehicles_keys quando um deles está rodando. O ESX sozinho não tem chaves: o caminhão fica destrancado. Outro script de chaves:

-- config.lua > delivery
giveKeys = function(vehicle, plate) exports['my_keys']:GiveKey(plate) end,                -- client
giveKeysServer = function(source, vehicle, plate) exports['my_keys']:GiveKeys(source, plate) end, -- server