forked from Simnation/Main
140 lines
No EOL
5.1 KiB
Lua
140 lines
No EOL
5.1 KiB
Lua
local customGasPumps = {}
|
|
-----------------------------------------------------------------------------------------------------------------------------------------
|
|
-- Threads
|
|
-----------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
-- Thread to detect near fuel pumps
|
|
function createGasMarkersThread()
|
|
CreateThread(function()
|
|
while true do
|
|
local ped = PlayerPedId()
|
|
local playerCoords = GetEntityCoords(ped)
|
|
local pump, pumpModel = GetClosestPump(playerCoords, false)
|
|
|
|
while pump and pump > 0 and #(playerCoords - GetEntityCoords(pump)) < 2.0 do
|
|
playerCoords = GetEntityCoords(ped)
|
|
if not mainUiOpen and not DoesEntityExist(fuelNozzle) then
|
|
Utils.Markers.showHelpNotification(cachedTranslations.open_refuel, true)
|
|
if IsControlJustPressed(0,38) then
|
|
clientOpenUI(pump, pumpModel, false)
|
|
end
|
|
end
|
|
Wait(2)
|
|
end
|
|
Wait(1000)
|
|
end
|
|
end)
|
|
end
|
|
|
|
function createGasTargetsThread()
|
|
local pumpModels = {}
|
|
for _, v in pairs(Config.GasPumpProps) do
|
|
table.insert(pumpModels, v.prop)
|
|
end
|
|
Utils.Target.createTargetForModel(pumpModels,openFuelUICallback,Utils.translate('target.open_refuel'),"fas fa-gas-pump","#a42100",nil,nil,canOpenPumpUiTargetCallback)
|
|
|
|
Utils.Target.createTargetForModel(pumpModels,returnNozzle,Utils.translate('target.return_nozzle'),"fas fa-gas-pump","#a42100",nil,nil,canReturnNozzleTargetCallback)
|
|
end
|
|
|
|
function openFuelUICallback()
|
|
local ped = PlayerPedId()
|
|
local playerCoords = GetEntityCoords(ped)
|
|
local pump, pumpModel = GetClosestPump(playerCoords, false)
|
|
if pump then
|
|
clientOpenUI(pump, pumpModel, false)
|
|
else
|
|
exports['lc_utils']:notify("error", Utils.translate("pump_not_found"))
|
|
end
|
|
end
|
|
|
|
function createCustomPumpModelsThread()
|
|
for _, pumpConfig in pairs(Config.CustomGasPumpLocations) do
|
|
RequestModel(pumpConfig.prop)
|
|
|
|
while not HasModelLoaded(pumpConfig.prop) do
|
|
Wait(50)
|
|
end
|
|
|
|
local heading = pumpConfig.location.w + 180.0
|
|
local gasPump = CreateObject(pumpConfig.prop, pumpConfig.location.x, pumpConfig.location.y, pumpConfig.location.z, false, true, true)
|
|
SetEntityHeading(gasPump, heading)
|
|
FreezeEntityPosition(gasPump, true)
|
|
table.insert(customGasPumps, gasPump)
|
|
end
|
|
end
|
|
|
|
AddEventHandler('onResourceStop', function(resourceName)
|
|
if GetCurrentResourceName() ~= resourceName then return end
|
|
|
|
deleteAllCustomGasPumps()
|
|
end)
|
|
|
|
function deleteAllCustomGasPumps()
|
|
for k, v in ipairs(customGasPumps) do
|
|
DeleteEntity(v)
|
|
end
|
|
end
|
|
|
|
-----------------------------------------------------------------------------------------------------------------------------------------
|
|
-- Jerry Cans
|
|
-----------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
-- Thread to handle the fuel consumption
|
|
function createJerryCanThread()
|
|
CreateThread(function()
|
|
while true do
|
|
Wait(1000)
|
|
local ped = PlayerPedId()
|
|
if not IsPedInAnyVehicle(ped, false) and GetSelectedPedWeapon(ped) == JERRY_CAN_HASH then
|
|
refuelLoop(true)
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- Code to save jerry can ammo in any inventory
|
|
local currentWeaponData
|
|
function updateWeaponAmmo(ammo)
|
|
ammo = math.floor(ammo) -- This is needed or some inventories will break
|
|
|
|
if currentWeaponData and currentWeaponData.info and currentWeaponData.info.ammo then
|
|
currentWeaponData.info.ammo = ammo
|
|
end
|
|
|
|
TriggerServerEvent('ox_inventory:updateWeapon', "ammo", ammo)
|
|
TriggerServerEvent("weapons:server:UpdateWeaponAmmo", currentWeaponData, ammo)
|
|
TriggerServerEvent("qb-weapons:server:UpdateWeaponAmmo", currentWeaponData, ammo)
|
|
|
|
if Config.Debug then print("updateWeaponAmmo:ammo",ammo) end
|
|
if Config.Debug then Utils.Debug.printTable("updateWeaponAmmo:currentWeaponData",currentWeaponData) end
|
|
|
|
local ped = PlayerPedId()
|
|
SetPedAmmo(ped, JERRY_CAN_HASH, ammo)
|
|
end
|
|
|
|
AddEventHandler('weapons:client:SetCurrentWeapon', function(data, bool)
|
|
if bool ~= false then
|
|
currentWeaponData = data
|
|
else
|
|
currentWeaponData = {}
|
|
end
|
|
end)
|
|
|
|
AddEventHandler('qb-weapons:client:SetCurrentWeapon', function(data, bool)
|
|
if bool ~= false then
|
|
currentWeaponData = data
|
|
else
|
|
currentWeaponData = {}
|
|
end
|
|
end)
|
|
|
|
-- Get jerry can ammo by metadata
|
|
function getJerryCanAmmo()
|
|
if currentWeaponData and currentWeaponData.info and currentWeaponData.info.ammo then
|
|
if Config.Debug then print("getJerryCanAmmo:currentWeaponData.info.ammo", currentWeaponData.info.ammo) end
|
|
return currentWeaponData.info.ammo
|
|
end
|
|
local ped = PlayerPedId()
|
|
if Config.Debug then print("getJerryCanAmmo:GetAmmoInPedWeapon", GetAmmoInPedWeapon(ped, JERRY_CAN_HASH)) end
|
|
return GetAmmoInPedWeapon(ped, JERRY_CAN_HASH)
|
|
end |