Fuel script that cover all vehicles, fuel, electric, air, sea with fuel nozzles and electric charging
Video : https://youtu.be/JC8tyz8AI5E Package : https://github.com/Sna-aaa/qb-sna-fuel
- Pumps with nozzle for electric or fuel
- Gas pump for fuel vehicles
- Electric chargers for electric vehicles
- Out of energies are handled by the script, the vehicle just stop his motor, no more sparks and backwards
- Every vehicles excepted blacklisted ones will stop when out of energy
- Electric cars have a specific consumption model (with nothing at idle)
- Electric cars have a charge curve (quickly until 80% then more and more slowly)
- Electric cars have a discharge curve (slowly until 40% then more and more quickly)
- Consumption can be specified for each vehicle separately
- Tank sizes can be specified for each vehicle separately
- Energy is specified in L or Kw, and price can be configured
- Automatic charging of electric vehicles in garages
- Admin command /fuel to refuel/charge vehicles
- Working jerrican for fuel vehicles
- Jerrican capacity is configurable
- A new export "ApplyFuel" to apply fuel without electric charge for persistence scripts
- Server synced nozzles and hozes
-
Remove any fuel or electricity script that you may have including LegacyFuel, ps-fuel etc
-
Replace all occurences of "LegacyFuel" by "qb-sna-fuel" (or wathever your directory name is) in all your Legacyfuel compatible resources 2a) Look in all your resources the use of native GetVehicleFuelLevel for non Legacyfuel compatible resources When this native is found it must be replaced by the export like this
exports['qb-sna-fuel']:GetFuel(vehicle)
2b) Look in all your resources the use of native SetVehicleFuelLevel for non Legacyfuel compatible resources When this native is found it must be replaced by the export like this
exports['qb-sna-fuel']:SetFuel(vehicle, fuelpercentage)
- If you want to use the auto charging function for electric vehicles in garage:
- Import the database.sql in your database
- In your garage script a line with UpdateVehicleDateTimeIn must be added when you park the car, here in qb-garage
local function enterVehicle(veh, indexgarage, type, garage)
local plate = QBCore.Functions.GetPlate(veh)
if GetVehicleNumberOfPassengers(veh) == 0 then
QBCore.Functions.TriggerCallback('qb-garage:server:checkOwnership', function(owned)
if owned then
local bodyDamage = math.ceil(GetVehicleBodyHealth(veh))
local engineDamage = math.ceil(GetVehicleEngineHealth(veh))
local totalFuel = GetFuel(veh)
local props = QBCore.Functions.GetVehicleProperties(veh)
TriggerServerEvent('qb-garage:server:updateVehicle', 1, totalFuel, engineDamage, bodyDamage, plate, indexgarage, type, PlayerGang.name, Damages)
TriggerServerEvent('qb-fuel:server:UpdateVehicleDateTimeIn', plate) --Change
DeleteVehicle(veh, garage)
if type == "house" then
exports['qb-core']:DrawText(Lang:t("info.car_e"), 'left')
InputOut = true
InputIn = false
end
if plate then
TriggerServerEvent('qb-garage:server:UpdateOutsideVehicle', plate, nil)
end
QBCore.Functions.Notify(Lang:t("success.vehicle_parked"), "primary", 4500)
else
QBCore.Functions.Notify(Lang:t("error.not_owned"), "error", 3500)
end
end, plate, type, indexgarage, PlayerGang.name)
else
QBCore.Functions.Notify(Lang:t("error.vehicle_occupied"), "error", 5000)
end
end
- If you want to have a corrected jerrican:
- Change in qb-inventory/client/main.lua in event inventory:client:UseWeapon to have ammo of jerrican saved
elseif weaponName == "weapon_snowball" then
GiveWeaponToPed(ped, weaponHash, 10, false, false)
SetPedAmmo(ped, weaponHash, 10)
SetCurrentPedWeapon(ped, weaponHash, true)
TriggerServerEvent('inventory:server:snowball', 'remove')
TriggerEvent('weapons:client:SetCurrentWeapon', weaponData, shootbool)
currentWeapon = weaponName
else
TriggerEvent('weapons:client:SetCurrentWeapon', weaponData, shootbool)
local ammo = tonumber(weaponData.info.ammo) or 0
if weaponName == "weapon_petrolcan" and not weaponData.info.ammo then --Change
ammo = 4000
end
if weaponName == "weapon_fireextinguisher" then --Change
ammo = 4000 --Change
end --Change
GiveWeaponToPed(ped, weaponHash, ammo, false, false)
SetPedAmmo(ped, weaponHash, ammo)
SetCurrentPedWeapon(ped, weaponHash, true)
- Change in qb-smallresources/client/ignore.lua to avoid infinite ammo for jerrican
CreateThread(function()
local sleep
while true do
sleep = 500
local ped = PlayerPedId()
local weapon = GetSelectedPedWeapon(ped)
if weapon ~= `WEAPON_UNARMED` then
if IsPedArmed(ped, 6) then
sleep = 0
DisableControlAction(1, 140, true)
DisableControlAction(1, 141, true)
DisableControlAction(1, 142, true)
end
if weapon == `WEAPON_FIREEXTINGUISHER` then --Change
if IsPedShooting(ped) then
SetPedInfiniteAmmo(ped, true, `WEAPON_FIREEXTINGUISHER`)
--SetPedInfiniteAmmo(ped, true, `WEAPON_PETROLCAN`) --Change
end
end
end
Wait(sleep)
end
end)
- Change in qb-weapons/client/main.lua to remove ammo if used as "weapon"
CreateThread(function()
while true do
local ped = PlayerPedId()
if IsPedArmed(ped, 7) == 1 and (IsControlJustReleased(0, 24) or IsDisabledControlJustReleased(0, 24)) or IsPedShooting(ped) and (IsControlJustReleased(0, 24) or IsDisabledControlJustReleased(0, 24)) then
local weapon = GetSelectedPedWeapon(ped)
local ammo = GetAmmoInPedWeapon(ped, weapon)
TriggerServerEvent("weapons:server:UpdateWeaponAmmo", CurrentWeaponData, tonumber(ammo))
if MultiplierAmount > 0 then
TriggerServerEvent("weapons:server:UpdateWeaponQuality", CurrentWeaponData, MultiplierAmount)
MultiplierAmount = 0
end
end
Wait(0)
end
end)