NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

if Config.UseESX then
ESX = nil

Citizen.CreateThread(function()
while not ESX do
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
Citizen.Wait(100)
end
end)
end

local isNearPump = false
local isFueling = false
local currentFuel = 0.0
local currentTutar = 0.0
local currentCash = 1000
local fuelSynced = false
local inBlacklisted = false

function ManageFuelUsage(vehicle)
if not DecorExistOn(vehicle, Config.FuelDecor) then
SetFuel(vehicle, math.random(200, 800) / 10)
elseif not fuelSynced then
SetFuel(vehicle, GetFuel(vehicle))

fuelSynced = true
end

if IsVehicleEngineOn(vehicle) then
SetFuel(vehicle, GetVehicleFuelLevel(vehicle) - Config.FuelUsage[Round(GetVehicleCurrentRpm(vehicle), 1)] * (Config.Classes[GetVehicleClass(vehicle)] or 1.0) / 10)
end
end

Citizen.CreateThread(function()
DecorRegister(Config.FuelDecor, 1)

for i = 1, #Config.Blacklist do
if type(Config.Blacklist[i]) == 'string' then
Config.Blacklist[GetHashKey(Config.Blacklist[i])] = true
else
Config.Blacklist[Config.Blacklist[i]] = true
end
end

for i = #Config.Blacklist, 1, -1 do
table.remove(Config.Blacklist, i)
end

while true do
Citizen.Wait(1000)

local ped = PlayerPedId()

if IsPedInAnyVehicle(ped) then
local vehicle = GetVehiclePedIsIn(ped)

if Config.Blacklist[GetEntityModel(vehicle)] then
inBlacklisted = true
else
inBlacklisted = false
end

if not inBlacklisted and GetPedInVehicleSeat(vehicle, -1) == ped then
ManageFuelUsage(vehicle)
end
else
if fuelSynced then
fuelSynced = false
end

if inBlacklisted then
inBlacklisted = false
end
end
end
end)

function FindNearestFuelPump()
local coords = GetEntityCoords(PlayerPedId())
local fuelPumps = {}
local handle, object = FindFirstObject()
local success

repeat
if Config.PumpModels[GetEntityModel(object)] then
table.insert(fuelPumps, object)
end

success, object = FindNextObject(handle, object)
until not success

EndFindObject(handle)

local pumpObject = 0
local pumpDistance = 1000

for k,v in pairs(fuelPumps) do
local dstcheck = GetDistanceBetweenCoords(coords, GetEntityCoords(v))

if dstcheck < pumpDistance then
pumpDistance = dstcheck
pumpObject = v
end
end

return pumpObject, pumpDistance
end

Citizen.CreateThread(function()
while true do
Citizen.Wait(250)

local pumpObject, pumpDistance = FindNearestFuelPump()

if pumpDistance < 2.5 then
isNearPump = pumpObject

if Config.UseESX then
currentCash = ESX.GetPlayerData().money
end
else
isNearPump = false

Citizen.Wait(math.ceil(pumpDistance * 20))
end
end
end)

function DrawText3Ds(x, y, z, text)
local onScreen,_x,_y=World3dToScreen2d(x,y,z)
local px,py,pz=table.unpack(GetGameplayCamCoords())

SetTextScale(0.35, 0.35)
SetTextFont(4)
SetTextProportional(1)
SetTextColour(255, 255, 255, 215)
SetTextEntry("STRING")
SetTextCentre(1)
AddTextComponentString(text)
DrawText(_x,_y)
end

function LoadAnimDict(dict)
if not HasAnimDictLoaded(dict) then
RequestAnimDict(dict)

while not HasAnimDictLoaded(dict) do
Citizen.Wait(1)
end
end
end

AddEventHandler('fuel:startFuelUpTick', function(pumpObject, ped, vehicle)
currentFuel = GetVehicleFuelLevel(vehicle)

while isFueling do
Citizen.Wait(500)

local oldFuel = DecorGetFloat(vehicle, Config.FuelDecor)
local fuelToAdd = math.random(10, 20) / 10.0
local extraTutar = fuelToAdd / 1.5

if not pumpObject then
if GetAmmoInPedWeapon(ped, 883325847) - fuelToAdd * 100 >= 0 then
currentFuel = oldFuel + fuelToAdd

SetPedAmmo(ped, 883325847, math.floor(GetAmmoInPedWeapon(ped, 883325847) - fuelToAdd * 100))
else
isFueling = false
end
else
currentFuel = oldFuel + fuelToAdd
end

if currentFuel > 100.0 then
currentFuel = 100.0
isFueling = false
end

currentTutar = currentTutar + extraTutar

if currentCash >= currentTutar then
SetFuel(vehicle, currentFuel)
else
isFueling = false
end
end

if pumpObject then
TriggerServerEvent('fuel:pay', currentTutar)
end

currentTutar = 0.0
end)

function Round(num, numDecimalPlaces)
local mult = 10^(numDecimalPlaces or 0)

return math.floor(num * mult + 0.5) / mult
end

AddEventHandler('fuel:refuelFromPump', function(pumpObject, ped, vehicle)
TaskTurnPedToFaceEntity(ped, vehicle, 1000)
Citizen.Wait(1000)
SetCurrentPedWeapon(ped, -1569615261, true)
LoadAnimDict("timetable@gardener@filling_can")
TaskPlayAnim(ped, "timetable@gardener@filling_can", "gar_ig_5_filling_can", 2.0, 8.0, -1, 50, 0, 0, 0, 0)

TriggerEvent('fuel:startFuelUpTick', pumpObject, ped, vehicle)

while isFueling do
Citizen.Wait(1)

for k,v in pairs(Config.DisableKeys) do
DisableControlAction(0, v)
end

local vehicleCoords = GetEntityCoords(vehicle)

if pumpObject then
local stringCoords = GetEntityCoords(pumpObject)
local extraString = ""

if Config.UseESX then
extraString = "nTutar: ~g~$" .. Round(currentTutar, 1)
end

DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.CancelFuelingPump .. extraString)
DrawText3Ds(vehicleCoords.x, vehicleCoords.y, vehicleCoords.z + 0.5, Round(currentFuel, 1) .. "%")
else
DrawText3Ds(vehicleCoords.x, vehicleCoords.y, vehicleCoords.z + 0.5, Config.Strings.CancelFuelingJerryCan .. "nGas can: ~g~" .. Round(GetAmmoInPedWeapon(ped, 883325847) / 4500 * 100, 1) .. "% | Vehicle: " .. Round(currentFuel, 1) .. "%")
end

if not IsEntityPlayingAnim(ped, "timetable@gardener@filling_can", "gar_ig_5_filling_can", 3) then
TaskPlayAnim(ped, "timetable@gardener@filling_can", "gar_ig_5_filling_can", 2.0, 8.0, -1, 50, 0, 0, 0, 0)
end

if IsControlJustReleased(0, 38) or DoesEntityExist(GetPedInVehicleSeat(vehicle, -1)) or (isNearPump and GetEntityHealth(pumpObject) <= 0) then
isFueling = false
end
end

ClearPedTasks(ped)
RemoveAnimDict("timetable@gardener@filling_can")
end)

Citizen.CreateThread(function()
while true do
Citizen.Wait(1)

local ped = PlayerPedId()

if not isFueling and ((isNearPump and GetEntityHealth(isNearPump) > 0) or (GetSelectedPedWeapon(ped) == 883325847 and not isNearPump)) then
if IsPedInAnyVehicle(ped) and GetPedInVehicleSeat(GetVehiclePedIsIn(ped), -1) == ped then
local pumpCoords = GetEntityCoords(isNearPump)

DrawText3Ds(pumpCoords.x, pumpCoords.y, pumpCoords.z + 1.2, Config.Strings.ExitVehicle)
else
local vehicle = GetPlayersLastVehicle()
local vehicleCoords = GetEntityCoords(vehicle)

if DoesEntityExist(vehicle) and GetDistanceBetweenCoords(GetEntityCoords(ped), vehicleCoords) < 2.5 then
if not DoesEntityExist(GetPedInVehicleSeat(vehicle, -1)) then
local stringCoords = GetEntityCoords(isNearPump)
local canFuel = true

if GetSelectedPedWeapon(ped) == 883325847 then
stringCoords = vehicleCoords

if GetAmmoInPedWeapon(ped, 883325847) < 100 then
canFuel = false
end
end

if GetVehicleFuelLevel(vehicle) < 95 and canFuel then
if currentCash > 0 then
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.EToRefuel)

if IsControlJustReleased(0, 38) then
isFueling = true

TriggerEvent('fuel:refuelFromPump', isNearPump, ped, vehicle)
LoadAnimDict("timetable@gardener@filling_can")
end
else
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.NotEnoughCash)
end
elseif not canFuel then
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.JerryCanEmpty)
else
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.FullTank)
end
end
elseif isNearPump then
local stringCoords = GetEntityCoords(isNearPump)

if currentCash >= Config.JerryCanTutar then
if not HasPedGotWeapon(ped, 883325847) then
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.PurchaseJerryCan)

if IsControlJustReleased(0, 38) then
GiveWeaponToPed(ped, 883325847, 4500, false, true)

TriggerServerEvent('fuel:pay', Config.JerryCanTutar)

currentCash = ESX.GetPlayerData().money
end
else
if Config.UseESX then
local refillTutar = Round(Config.RefillTutar * (1 - GetAmmoInPedWeapon(ped, 883325847) / 4500))

if refillTutar > 0 then
if currentCash >= refillTutar then
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.RefillJerryCan .. refillTutar)

if IsControlJustReleased(0, 38) then
TriggerServerEvent('fuel:pay', refillTutar)

SetPedAmmo(ped, 883325847, 4500)
end
else
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.NotEnoughCashJerryCan)
end
else
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.JerryCanFull)
end
else
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.RefillJerryCan)

if IsControlJustReleased(0, 38) then
SetPedAmmo(ped, 883325847, 4500)
end
end
end
else
DrawText3Ds(stringCoords.x, stringCoords.y, stringCoords.z + 1.2, Config.Strings.NotEnoughCash)
end
else
Citizen.Wait(250)
end
end
else
Citizen.Wait(250)
end
end
end)

function CreateBlip(coords)
local blip = AddBlipForCoord(coords)

SetBlipSprite(blip, 361)
SetBlipScale(blip, 0.9)
SetBlipColour(blip, 4)
SetBlipDisplay(blip, 4)
SetBlipAsShortRange(blip, true)

BeginTextCommandSetBlipName("STRING")
AddTextComponentString("Gas Station")
EndTextCommandSetBlipName(blip)

return blip
end

if Config.ShowNearestGasStationOnly then
Citizen.CreateThread(function()
local currentGasBlip = 0

while true do
Citizen.Wait(10000)

local coords = GetEntityCoords(PlayerPedId())
local closest = 1000
local closestCoords

for k,v in pairs(Config.GasStations) do
local dstcheck = GetDistanceBetweenCoords(coords, v)

if dstcheck < closest then
closest = dstcheck
closestCoords = v
end
end

if DoesBlipExist(currentGasBlip) then
RemoveBlip(currentGasBlip)
end

currentGasBlip = CreateBlip(closestCoords)
end
end)
elseif Config.ShowAllGasStations then
Citizen.CreateThread(function()
for k,v in pairs(Config.GasStations) do
CreateBlip(v)
end
end)
end

function GetFuel(vehicle)
return DecorGetFloat(vehicle, Config.FuelDecor)
end

function SetFuel(vehicle, fuel)
if type(fuel) == 'number' and fuel >= 0 and fuel <= 100 then
SetVehicleFuelLevel(vehicle, fuel + 0.0)
DecorSetFloat(vehicle, Config.FuelDecor, GetVehicleFuelLevel(vehicle))
end
end

if Config.EnableHUD then
local function DrawAdvancedText(x,y ,w,h,sc, text, r,g,b,a,font,jus)
SetTextFont(font)
SetTextProportional(0)
SetTextScale(sc, sc)
N_0x4e096588b13ffeca(jus)
SetTextColour(r, g, b, a)
SetTextDropShadow(0, 0, 0, 0,255)
SetTextEdge(1, 0, 0, 0, 255)
SetTextDropShadow()
SetTextOutline()
SetTextEntry("STRING")
AddTextComponentString(text)
DrawText(x - 0.1+w, y - 0.02+h)
end

local mph = 0
local kmh = 0
local fuel = 0
local displayHud = false

local x = 0.01135
local y = 0.002

Citizen.CreateThread(function()
while true do
Citizen.Wait(50)

local ped = PlayerPedId()

if IsPedInAnyVehicle(ped) and not (Config.RemoveHUDForBlacklistedVehicle and inBlacklisted) then
local vehicle = GetVehiclePedIsIn(ped)
local speed = GetEntitySpeed(vehicle)

mph = tostring(math.ceil(speed * 2.236936))
kmh = tostring(math.ceil(speed * 3.6))
fuel = tostring(math.ceil(GetVehicleFuelLevel(vehicle)))

displayHud = true
else
displayHud = false

Citizen.Wait(500)
end
end
end)

Citizen.CreateThread(function()
while true do
Citizen.Wait(1)

if displayHud then
DrawAdvancedText(0.130 - x, 0.77 - y, 0.005, 0.0028, 0.6, mph, 255, 255, 255, 255, 6, 1)
DrawAdvancedText(0.174 - x, 0.77 - y, 0.005, 0.0028, 0.6, kmh, 255, 255, 255, 255, 6, 1)
DrawAdvancedText(0.2195 - x, 0.77 - y, 0.005, 0.0028, 0.6, fuel, 255, 255, 255, 255, 6, 1)
DrawAdvancedText(0.148 - x, 0.7765 - y, 0.005, 0.0028, 0.4, "mp/h km/h Fuel", 255, 255, 255, 255, 6, 1)
else
Citizen.Wait(750)
end
end
end)
end
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.