Skip to content

Fuel & consumption

Fuel & consumption

Fuel types

Four ship by default. The key is what every vehicle, pump and station price refers to.

config.lua
Config.FuelTypes = {
    gasoline = { label = 'Gasoline', colour = '#e0973f', wholesale = 0.90, price = 2.00, electric = false },
    diesel   = { label = 'Diesel',   colour = '#3fd07f', wholesale = 0.70, price = 1.50, electric = false },
    premium  = { label = 'Premium',  colour = '#5b6cf0', wholesale = 1.40, price = 3.00, electric = false },
    electric = { label = 'Electric', colour = '#41b8c9', wholesale = 2.10, price = 4.50, electric = true  },
}
Field Meaning
wholesale Что владелец платит за литр при заказе товара
price Цена за литр, с которой открывается новая заправка. Владельцы могут менять ее на странице Fuel types
electric Счет выставляется за кВт·ч на зарядной станции вместо литров на колонке

Config.FuelOrder устанавливает порядок их отображения в селекторе в мире.

What a vehicle drinks

Resolved in this order: the model is in Config.VehicleFuel.Electric → an exact match in Config.VehicleFuel.Model → its vehicle class in Config.VehicleFuel.Class → gasoline.

config.lua
Config.VehicleFuel = {
    Class = {
        [0] = 'gasoline', [1] = 'gasoline', [2] = 'diesel',   [3] = 'gasoline',
        [4] = 'premium',  [5] = 'gasoline', [6] = 'premium',  [7] = 'premium',
        [8] = 'gasoline', [9] = 'diesel',   [10] = 'diesel',  [11] = 'diesel',
        [12] = 'diesel',  [17] = 'diesel',  [18] = 'diesel',  [19] = 'diesel',
        [20] = 'diesel',
    },
    Model = {
        -- ['sultanrs'] = 'premium',
    },
    Electric = {
        'voltic', 'voltic2', 'surge', 'neon', 'omnisegt', 'cyclone', 'tezeract',
        'imorgon', 'dilettante', 'dilettante2', 'khamelion', 'raiden', 'iwagen',
        'rcbandito', 'caddy', 'airtug',
    },
}

Все, что находится в списке Electric, работает только на зарядных станциях — топливораздаточная колонка откажет в обслуживании.

Tank sizes

Litres a full tank holds, per class. 0 means that class never needs fuel — cycles (13) and trains (21) ship that way.

config.lua
Config.Consumption.Tank = {
    [0] = 45, [1] = 60, [2] = 75, [3] = 55, [4] = 70, [5] = 55, [6] = 65,
    [7] = 80, [8] = 15, [9] = 80, [10] = 300, [11] = 90, [12] = 90,
    [13] = 0, [14] = 200, [15] = 400, [16] = 500, [17] = 90, [18] = 90,
    [19] = 150, [20] = 120, [21] = 0,
}
Config.Consumption.Default = 65

Топливо отслеживается в процентах для каждого транспорта, поэтому размер бака определяет, насколько хватит одного процента. У промышленного грузовика на 300 литров процент расходуется гораздо медленнее на каждый залитый литр, чем у 15-литрового мотоцикла.

Burn rate

Two things multiply together: a per-class rate and the RPM band the engine is currently sitting in.

config.lua
Config.Consumption.Rate = {
    [0] = 0.6, [2] = 1.2, [4] = 1.6, [6] = 1.4, [7] = 2.0, [8] = 0.4,
    [10] = 3.0, [15] = 3.5, [16] = 4.0,
}
Config.Consumption.RateDefault = 1.0

Config.Consumption.Rpm = {
    [1.0] = 0.13, [0.9] = 0.10, [0.8] = 0.08, [0.7] = 0.065, [0.6] = 0.05,
    [0.5] = 0.04, [0.4] = 0.03, [0.3] = 0.022, [0.2] = 0.015, [0.1] = 0.008,
    [0.0] = 0.0,
}
Config.Consumption.Tick = 1000

Таблица оборотов (RPM) выполняет основную работу. Каждый тик текущие обороты двигателя сопоставляются с наибольшим диапазоном, равным или меньшим их, и расходуется соответствующее количество литров, умноженное на коэффициент класса и размер бака. Езда "в пол" на суперкаре сжигает примерно в шестнадцать раз больше топлива, чем работа компакта на холостом ходу. Расход топлива учитывается только для водителя транспорта с работающим двигателем, поэтому припаркованные автомобили и пассажиры ничего не стоят.

При нулевом уровне топлива двигатель глохнет.

Чтобы сделать расход топлива более щадящим в целом, уменьшите всю таблицу Rpm — сократите каждое значение вдвое, и все на сервере будет расходоваться в два раза дольше, сохранив при этом относительные различия между автомобилями.

Low-fuel warning

config.lua
Config.Consumption.LowWarning = 15
Config.Consumption.LowWarningSound = true
Config.Consumption.WarnTick = 2000
Config.Consumption.IdleTick = 3000

Ниже значения LowWarning в процентах водитель получает уведомление и, по желанию, звуковой сигнал. Он срабатывает один раз на транспортное средство, а не каждый тик, поэтому он не надоедает.

Spawn fuel

config.lua
Config.Consumption.SpawnFuel = { min = 40, max = 80 }

Это самый важный параметр для настройки экономики топлива. Каждый автомобиль, который скрипт видит впервые — каждая припаркованная машина NPC, каждый транспорт из гаража, каждый заспавненный администратором автомобиль — получает случайный уровень топлива в этом диапазоне при первом же осмотре.

Оставьте его на уровне 40–80, и большинство машин, найденных игроком, будут уже наполовину полными, поэтому заправляться придется изредка. Установите значение { min = 5, max = 25 }, и колонки сразу же станут востребованными. Установите оба значения на 100, и никому никогда не придется заправлять новую машину.

Как только автомобиль был замечен, уровень топлива сохраняется в state bag объекта и передается оттуда между клиентами, поэтому повторная генерация не происходит.

Wrong fuel

Pouring diesel into a petrol car, or a jerry can into an electric one, has consequences. The mode is server-wide, and an admin can override it per station from /fueladmin.

Config.WrongFuel = {
    Mode = 'damage',
    SlowPower = 0.45,