Trabajo de reparto de combustible

Cada gasolinera tiene un stock de cada combustible que vende. Los repostajes de los jugadores y los clientes NPC lo vacían; los conductores lo rellenan desde una refinería con una cisterna. Los ajustes están en config.delivery, los puntos de reparto en data/delivery.lua.

El trabajo nace de la demanda. Una ruta solo existe cuando las gasolineras van cortas de combustible, así que el dinero que crea el trabajo está limitado por lo que consume tu servidor.

Quién puede trabajar

Los miembros del trabajo fueldelivery (delivery.jobs). Solo ellos ven los depósitos en el mapa y pueden coger un turno. HZ-Fuel crea el trabajo cuando tu framework no lo tiene, consulta Instalación. jobs = false deja trabajar a todo el mundo; también funcionan varios trabajos: { 'fueldelivery', 'trucker' }.


Un turno

  1. Habla con el despachador (E). Hay uno en cada refinería: El Burro Heights, Elysian Island, Palmer-Taylor, Grand Senora y Paleto Bay.
  2. Abre las Rutas: las gasolineras cortas de un combustible, agrupadas por zona, con los litros por entregar, la distancia y el pago estimado. Con hz_lib, tu personaje saca una tablet con un mapa de las rutas; sin él, las muestra un menú de ox_lib.
  3. Toma una ruta. Se cobra la fianza ($1,000), salen tu camión y tu cisterna, y llevas ropa de trabajo durante el turno. Las gasolineras de la ruta quedan reservadas para ti.
  4. Carga. En la toma de carga de la refinería, saca la manguera de la parte trasera de la cisterna y conéctala. El operario de patio te avisa cuando estás conectado y cuando la cisterna está llena.
  5. Entrega. Conduce hasta cada gasolinera de la ruta: el GPS va a la siguiente después de cada descarga. Conecta la manguera a las bocas de llenado de la gasolinera, una por combustible. Cada descarga se suma a tu nómina.
  6. Devuelve el camión en cualquier refinería. La fianza se devuelve, en proporción al estado del camión, y se te paga la nómina, +15 % cuando la cisterna vuelve vacía.
Durante el turno:
  • /hzfuelorders vuelve a abrir las rutas. Se puede tomar una nueva ruta cuando la cisterna está vacía o lleva el mismo combustible.
  • El combustible que queda en la cisterna puede ir a cualquier otra gasolinera que lo necesite.
  • Se te avisa cuando una gasolinera va corta y cuando se queda seca.
  • Con un hz_lib actualizado, los pasos del turno se muestran en los objetivos en pantalla (llenar la cisterna, cada gasolinera de la ruta, devolver el camión, la nómina acumulada). Sin él, el paso actual llega como notificación.
  • Cuando la cisterna está llena o vacía, la manguera sigue conectada: desconéctala tú.
  • Una cisterna dañada pierde parte de su carga (damageLoss).
CamiónValor
Camión / remolquephantom / tanker
Capacidad de la cisterna12.000 L, todos los combustibles juntos
Carga / descarga150 L/s en una refinería, 100 L/s en una gasolinera
Manguera de reparto12 m

Las llaves del camión

Se entregan a través de qbx_vehiclekeys, qb-vehiclekeys, qs-vehiclekeys, wasabi_carlock, mono_carkeys, MrNewbVehicleKeys, cd_garage o vehicles_keys cuando uno de ellos está en marcha. ESX por sí solo no tiene llaves: el camión se queda abierto. Para otro script de llaves, rellena delivery.giveKeys (cliente) o delivery.giveKeysServer (servidor).

Cómo termina un turno

FinalFianzaNómina
Camión devuelto en una refineríaDevuelta, según el estado del camiónPagada, +15 % con la cisterna vacía
Dejar el trabajo, o fuera de servicio con requireDutyDevuelta solo si estás en un depósito con el camiónPagada, sin bono
Inactivo: ninguna transferencia y el camión aparcado 20 min (shift.idleMinutes)PerdidaPagada, sin bono
El juego del jugador se cierra a mitad de turnoPerdidaPagada en la siguiente conexión
Esperar en una refinería o en un depósito, o mientras no hay ningún pedido, no cuenta como inactividad.

Pago

Cada descarga se suma a la nómina del conductor:

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 es la distancia desde la refinería de la que salió la carga. Con los valores por defecto, una cisterna llena de Regular entregada a 6 km paga $1,350, $1,552 con el bono de cisterna vacía, y $1,940 a gasolineras por debajo del 20 %. Una cisterna llena de Diesel paga $1,690 con el bono de cisterna vacía. Una vuelta dura unos 15 minutos, así que un conductor gana hasta unos $6,200 por hora si hay suficiente demanda.

AjusteEfecto
pay.account'bank' o 'cash'
pay.perLiterPago base por litro: Regular 0.10, Plus 0.12, Premium 0.14, Diesel 0.11
pay.perKm25 por km desde la refinería, para una cisterna llena (proporcional a los litros)
pay.gradeBonusParte extra por rango del trabajo, p. ej. { [1] = 0.05, [2] = 0.10 }
pay.urgentBonus+25 % para un combustible al 20 % de su depósito o menos
pay.emptyBonus+15 % en la nómina cuando la cisterna vuelve vacía
pay.taxParte que se retiene de cada pago, retirada de la economía
pay.maxPerHourLo máximo que gana un conductor en 60 minutos. 0 = sin límite
pay.payoutTu propia función de pago, p. ej. pagar desde una cuenta de empresa
deposit1000, se cobra al empezar y se devuelve con el camión
¿Servidor público? Pon un límite con pay.maxPerHour. Por defecto no hay ninguno.

Stock y demanda

AjustePor defectoEfecto
stock.enabledtruefalse = las gasolineras nunca se quedan sin combustible
stock.capacityRegular 8.000 L, Plus 5.000 L, Premium 4.000 L, Diesel 6.000 LTamaño del depósito por gasolinera
stock.startLevel30 a 70 %Nivel aleatorio de cada combustible en el primerísimo arranque
stock.drainPerHourRegular 400, Plus 200, Premium 150, Diesel 250Litros por hora que compran los clientes NPC, por gasolinera
stock.drainFloor0.15Los clientes NPC dejan de comprar por debajo de esta parte del depósito
stock.drainOnlyWithPlayerstrueLos clientes NPC solo compran mientras hay jugadores conectados
stock.stationWeight{}Multiplicador por id de gasolinera, p. ej. { ls_ltd_grove = 1.5 }
stock.perPlayer / maxPlayerFactor0.02 / 2.0+2 % de ventas por jugador conectado, como mucho el doble
stock.perDriver0Litros extra por hora por cada conductor de turno, para que siempre haya trabajo. Esto crea dinero
stock.lowLevel0.5Por debajo del 50 %, un combustible pasa a ser un pedido
orders.maxStops / orders.maxHop5 / 4000Gasolineras en una ruta, y metros como máximo entre dos de ellas
orders.reserveMinutes30Las gasolineras de una ruta siguen reservadas este tiempo después de la última transferencia del conductor
orders.noWorkWhenFulltrueNingún turno nuevo mientras todas las gasolineras estén por encima de lowLevel
shift.maxDrivers / cooldownMinutes / minGrade0 / 5 / 0Conductores a la vez (0 = sin límite), minutos entre dos turnos, rango mínimo permitido

Cuando nadie reparte

stock.autoRestock: un combustible que se queda al 20 % o menos (below) durante 60 minutos (afterMinutes) vuelve a subir al 45 % (to, sigue siendo un pedido), solo mientras no hay ningún conductor de turno (onlyWithoutDrivers). Las gasolineras sin punto de entrega en data/delivery.lua se rellenan así esté quien esté de turno.


Admin: stock de las gasolineras

/hzfuelstock lista todas las gasolineras con su nivel por combustible. Llena un combustible, una gasolinera o todas las gasolineras, o fija un nivel. Permitido con el ACE command, admin o group.admin.


Log de Discord

Turnos, entregas con su pago, rellenados automáticos y cambios de los admins. Pon el webhook en server.cfg, nunca en config.lua (los jugadores pueden leer ese archivo):

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


Puntos de reparto

data/delivery.lua contiene los lugares del trabajo:

SecciónQué contiene
depotsDonde empieza y termina un turno: la posición del despachador y las plazas de aparcamiento del camión y del remolque
refineriesDonde se llena la cisterna: la toma de carga (valve), o una válvula del propio mapa (arm), la plaza donde aparca el remolque y, opcionalmente, los combustibles que se venden allí
stationTanksPor id de gasolinera de data/stations.lua: las bocas de llenado (tank, de espaldas a una pared) y la plaza donde aparca el remolque
Las 17 gasolineras modernas tienen sus bocas de llenado. Una gasolinera solo entra en las rutas cuando tiene una entrada en stationTanks.

La ropa de trabajo del turno está en delivery.outfit (solo peds freemode), las voces del despachador y del operario de patio en delivery.voice ('en', 'fr' o 'auto'), y el propio operario de patio en delivery.yardWorker.