Emprego de entrega de combustível

Cada posto tem um estoque de cada combustível que vende. Os abastecimentos dos jogadores e os clientes NPC o consomem; os motoristas o repõem a partir de uma refinaria com uma carreta-tanque. As configurações ficam em config.delivery, os locais em data/delivery.lua.

O trabalho vem da demanda. Uma rota só existe quando os postos estão com pouco combustível, então o dinheiro que o emprego cria é limitado pelo que o seu servidor consome.

Quem pode trabalhar

Os membros do emprego fueldelivery (delivery.jobs). Só eles veem os depósitos no mapa e podem pegar um turno. O HZ-Fuel cria o emprego quando o seu framework não o tem, veja Instalação. jobs = false deixa todo mundo trabalhar; vários empregos também funcionam: { 'fueldelivery', 'trucker' }.


Um turno

  1. Fale com o despachante (E). Há um em cada refinaria: El Burro Heights, Elysian Island, Palmer-Taylor, Grand Senora e Paleto Bay.
  2. Abra as Rotas: os postos com falta de um combustível, agrupados por região, com os litros a entregar, a distância e o pagamento estimado. Com o hz_lib, o seu personagem pega um tablet com um mapa das rotas; sem ele, um menu do ox_lib as mostra.
  3. Pegue uma rota. A caução ($1,000) é cobrada, o seu caminhão e a sua carreta saem, e você veste roupas de trabalho durante o turno. Os postos da rota ficam reservados para você.
  4. Carregue. Na válvula de carregamento da refinaria, puxe a mangueira da traseira da carreta e conecte-a. O operador de pátio avisa quando você está conectado e quando a carreta está cheia.
  5. Entregue. Dirija até cada posto da rota: o GPS vai para o próximo depois de cada descarga. Conecte a mangueira nas bocas de descarga do posto, uma por combustível. Cada descarga soma ao seu contracheque.
  6. Devolva o caminhão em qualquer refinaria. A caução volta, proporcional ao estado do caminhão, e o seu contracheque é pago, +15 % quando a carreta volta vazia.
Durante o turno:
  • /hzfuelorders abre as rotas de novo. Uma nova rota pode ser pega quando a carreta estiver vazia ou tiver o mesmo combustível.
  • O combustível que sobrar na carreta pode ir para qualquer outro posto que precise.
  • Você é avisado quando um posto está com pouco combustível e quando ele seca.
  • Com um hz_lib atualizado, as etapas do turno aparecem nos objetivos na tela (encher a carreta, cada posto da rota, devolver o caminhão, o contracheque até agora). Sem ele, a etapa atual chega como notificação.
  • Quando a carreta está cheia ou vazia, a mangueira continua conectada: desconecte-a você mesmo.
  • Uma carreta danificada perde parte da carga (damageLoss).
CaminhãoValor
Caminhão / carretaphantom / tanker
Capacidade da carreta12.000 L, todos os combustíveis juntos
Carga / descarga150 L/s em uma refinaria, 100 L/s em um posto
Mangueira de entrega12 m

As chaves do caminhão

Entregues por meio de 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. Para outro script de chaves, preencha delivery.giveKeys (cliente) ou delivery.giveKeysServer (servidor).

Como um turno termina

FimCauçãoContracheque
Caminhão devolvido em uma refinariaDevolvida, conforme o estado do caminhãoPago, +15 % com a carreta vazia
Saída do emprego, ou fora de serviço com requireDutyDevolvida só se você estiver em um depósito com o caminhãoPago, sem bônus
Inatividade: nenhuma transferência e o caminhão parado por 20 min (shift.idleMinutes)PerdidaPago, sem bônus
O jogo do jogador fecha no meio do turnoPerdidaPago na próxima conexão
Esperar em uma refinaria ou em um depósito, ou enquanto não há pedido, não conta como inatividade.

Pagamento

Cada descarga soma ao contracheque do motorista:

pay = (litres x perLiter + perKm x km x litres / trailerCapacity)
      x (1 + gradeBonus[grade]) x (1 + urgentBonus.bonus if the station was low)
      x (1 - tax)

km é a distância da refinaria de onde veio a carga. Com os valores padrão, uma carreta cheia de Regular entregue a 6 km paga $1,350, $1,552 com o bônus de carreta vazia, e $1,940 para postos abaixo de 20 %. Uma carreta cheia de Diesel paga $1,690 com o bônus de carreta vazia. Uma rodada leva cerca de 15 minutos, então um motorista ganha até cerca de $6,200 por hora se houver demanda suficiente.

ConfiguraçãoEfeito
pay.account'bank' ou 'cash'
pay.perLiterPagamento base por litro: Regular 0.10, Plus 0.12, Premium 0.14, Diesel 0.11
pay.perKm25 por km a partir da refinaria, para uma carreta cheia (proporcional aos litros)
pay.gradeBonusParte extra por cargo no emprego, ex. { [1] = 0.05, [2] = 0.10 }
pay.urgentBonus+25 % para um combustível em 20 % ou menos do tanque
pay.emptyBonus+15 % no contracheque quando a carreta volta vazia
pay.taxParte retida de cada pagamento, removida da economia
pay.maxPerHourO máximo que um motorista ganha em 60 minutos. 0 = sem limite
pay.payoutA sua própria função de pagamento, ex. pago a partir da conta de uma empresa
deposit1000, cobrada no início, devolvida com o caminhão
Servidor público? Defina um limite pay.maxPerHour. Não há nenhum por padrão.

Estoque e demanda

ConfiguraçãoPadrãoEfeito
stock.enabledtruefalse = os postos nunca ficam sem combustível
stock.capacityRegular 8.000 L, Plus 5.000 L, Premium 4.000 L, Diesel 6.000 LTamanho do tanque por posto
stock.startLevel30 a 70 %Nível aleatório de cada combustível na primeiríssima inicialização
stock.drainPerHourRegular 400, Plus 200, Premium 150, Diesel 250Litros por hora comprados pelos clientes NPC, por posto
stock.drainFloor0.15Os clientes NPC param de comprar abaixo desta fração do tanque
stock.drainOnlyWithPlayerstrueOs clientes NPC só compram enquanto há jogadores conectados
stock.stationWeight{}Multiplicador por id de posto, ex. { ls_ltd_grove = 1.5 }
stock.perPlayer / maxPlayerFactor0.02 / 2.0+2 % de vendas por jogador conectado, no máximo o dobro
stock.perDriver0Litros extras por hora por motorista em turno, para sempre haver trabalho. Isso cria dinheiro
stock.lowLevel0.5Abaixo de 50 %, um combustível vira um pedido
orders.maxStops / orders.maxHop5 / 4000Postos em uma rota, e metros no máximo entre dois deles
orders.reserveMinutes30Os postos de uma rota ficam reservados por esse tempo depois da última transferência do motorista
orders.noWorkWhenFulltrueNenhum turno novo enquanto todos os postos estiverem acima de lowLevel
shift.maxDrivers / cooldownMinutes / minGrade0 / 5 / 0Motoristas ao mesmo tempo (0 = sem limite), minutos entre dois turnos, cargo mínimo permitido

Quando ninguém entrega

stock.autoRestock: um combustível que fica em 20 % ou menos (below) por 60 minutos (afterMinutes) volta a 45 % (to, ainda um pedido), só enquanto nenhum motorista está em turno (onlyWithoutDrivers). Os postos sem ponto de entrega em data/delivery.lua se reabastecem assim, haja ou não alguém em turno.


Admin: estoque dos postos

/hzfuelstock lista cada posto com o nível de cada combustível. Encha um combustível, um posto ou todos os postos, ou defina um nível. Permitido com o ACE command, admin ou group.admin.


Log no Discord

Turnos, entregas com o pagamento, reabastecimentos automáticos e alterações dos admins. Coloque o webhook no server.cfg, nunca no config.lua (os jogadores podem ler esse arquivo):

set hzf_delivery_webhook "https://discord.com/api/webhooks/..."


Locais

data/delivery.lua guarda os locais do emprego:

SeçãoO que contém
depotsOnde um turno começa e termina: a posição do despachante e as vagas do caminhão e da carreta
refineriesOnde a carreta é enchida: a válvula de carregamento (valve), ou uma válvula do próprio mapa (arm), a baia onde a carreta estaciona e, opcionalmente, os combustíveis vendidos ali
stationTanksPor id de posto de data/stations.lua: as bocas de descarga (tank, de costas para uma parede) e a baia onde a carreta estaciona
Os 17 postos modernos têm as suas bocas de descarga. Um posto só entra nas rotas quando tem uma entrada em stationTanks.

As roupas de trabalho usadas durante um turno ficam em delivery.outfit (só peds freemode), as vozes do despachante e do operador de pátio em delivery.voice ('en', 'fr' ou 'auto'), e o próprio operador de pátio em delivery.yardWorker.