0.0.1
This commit is contained in:
190
resources/[esx_addons]/esx_hud/client/vehicle/main.lua
Normal file
190
resources/[esx_addons]/esx_hud/client/vehicle/main.lua
Normal file
@@ -0,0 +1,190 @@
|
||||
local cruiseControlStatus = false
|
||||
local isPassenger = false
|
||||
local isSeatbeltOn = false
|
||||
local p = promise:new()
|
||||
|
||||
local function SetCruiseControlState(state)
|
||||
cruiseControlStatus = state
|
||||
end
|
||||
|
||||
local function SetSeatbeltState(state)
|
||||
isSeatbeltOn = state
|
||||
end
|
||||
|
||||
exports("CruiseControlState", SetCruiseControlState)
|
||||
exports("SeatbeltState", SetSeatbeltState)
|
||||
|
||||
if not Config.Disable.Vehicle then
|
||||
local vehicleType, playerPos
|
||||
local currentMileage = 0
|
||||
|
||||
HUD.Data.Driver = false
|
||||
|
||||
local values = {
|
||||
show = false,
|
||||
defaultIndicators = {},
|
||||
}
|
||||
|
||||
local function driverCheck(currentVehicle)
|
||||
return DoesEntityExist(currentVehicle) and (GetPedInVehicleSeat(currentVehicle, -1) == ESX.PlayerData.ped)
|
||||
end
|
||||
|
||||
CreateThread(function()
|
||||
while true do
|
||||
local currentVehicle = Citizen.Await(p)
|
||||
if currentVehicle then
|
||||
HUD.Data.Driver = driverCheck(currentVehicle)
|
||||
playerPos = GetEntityCoords(ESX.PlayerData.ped).xy
|
||||
|
||||
if not Config.Default.PassengerSpeedo then
|
||||
if HUD.Data.Driver then
|
||||
isPassenger = false
|
||||
else
|
||||
SendNUIMessage({ type = "VEH_HUD", value = { show = false } })
|
||||
isPassenger = true
|
||||
end
|
||||
end
|
||||
end
|
||||
Wait(1000)
|
||||
end
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
local oldPos
|
||||
while true do
|
||||
local currentVehicle = Citizen.Await(p)
|
||||
if currentVehicle and DoesEntityExist(currentVehicle) then
|
||||
local engineHealth = math.floor(GetVehicleEngineHealth(currentVehicle) / 10)
|
||||
local _, lowBeam, highBeam = GetVehicleLightsState(currentVehicle)
|
||||
local indicator = GetVehicleIndicatorLights(currentVehicle)
|
||||
local tempDoorLockStatus = GetVehicleDoorLockStatus(currentVehicle)
|
||||
|
||||
if engineHealth < 0 then
|
||||
engineHealth = 0
|
||||
end
|
||||
|
||||
local lightState = lowBeam == 1 or highBeam == 1
|
||||
local indicatorLeft = indicator == 1 or indicator == 3
|
||||
local indicatorRight = indicator == 2 or indicator == 3
|
||||
local doorLockStatus = tempDoorLockStatus == 2 or tempDoorLockStatus == 3
|
||||
|
||||
if IsVehicleOnAllWheels(currentVehicle) then
|
||||
if oldPos then
|
||||
local distance = #(oldPos - playerPos)
|
||||
if distance >= 10 then
|
||||
currentMileage += Config.Default.Kmh and distance / 1000 or distance / 1620
|
||||
currentMileage = ESX.Math.Round(currentMileage, 2)
|
||||
oldPos = playerPos
|
||||
end
|
||||
else
|
||||
oldPos = playerPos
|
||||
end
|
||||
end
|
||||
|
||||
values.fuel = { level = HUD:FuelExport() or 100, maxLevel = 100 }
|
||||
values.mileage = currentMileage
|
||||
values.kmh = Config.Default.Kmh
|
||||
values.damage = engineHealth
|
||||
values.vehType = vehicleType
|
||||
values.driver = HUD.Data.Driver
|
||||
values.defaultIndicators.seatbelt = isSeatbeltOn
|
||||
values.defaultIndicators.tempomat = cruiseControlStatus
|
||||
values.defaultIndicators.door = doorLockStatus
|
||||
values.defaultIndicators.light = lightState
|
||||
values.defaultIndicators.leftIndex = indicatorLeft
|
||||
values.defaultIndicators.rightIndex = indicatorRight
|
||||
end
|
||||
Wait(200)
|
||||
end
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
while true do
|
||||
local currentVehicle = Citizen.Await(p)
|
||||
if currentVehicle and DoesEntityExist(currentVehicle) then
|
||||
local currentSpeed = GetEntitySpeed(currentVehicle)
|
||||
local engineRunning = GetIsVehicleEngineRunning(currentVehicle)
|
||||
local rpm
|
||||
|
||||
if vehicleType == "LAND" or vehicleType == "MOTO" then
|
||||
rpm = engineRunning and (GetVehicleCurrentRpm(currentVehicle) * 450) or 0
|
||||
else
|
||||
rpm = math.ceil(ESX.PlayerData.coords.z)
|
||||
end
|
||||
|
||||
values.speed = math.floor(currentSpeed * (Config.Default.Kmh and 3.6 or 2.236936))
|
||||
values.rpm = rpm
|
||||
values.defaultIndicators.engine = engineRunning
|
||||
|
||||
if not isPassenger then
|
||||
SendNUIMessage({ type = "VEH_HUD", value = values })
|
||||
end
|
||||
end
|
||||
Wait(50)
|
||||
end
|
||||
end)
|
||||
|
||||
AddEventHandler("esx:enteredVehicle", function(currentVehicle, currentPlate, currentSeat, displayName, netId)
|
||||
local vehicleClass = GetVehicleClass(currentVehicle)
|
||||
if vehicleClass == 13 then
|
||||
return
|
||||
end
|
||||
|
||||
HUD.Data.Driver = currentSeat == -1 or false
|
||||
HUD.Data.Vehicle = currentVehicle
|
||||
vehicleType = "LAND"
|
||||
|
||||
if vehicleClass == 15 or vehicleClass == 16 then
|
||||
vehicleType = "AIR"
|
||||
elseif vehicleClass == 8 then
|
||||
vehicleType = "MOTO"
|
||||
end
|
||||
|
||||
if Config.Disable.MinimapOnFoot then
|
||||
DisplayRadar(true)
|
||||
end
|
||||
|
||||
if HUD.Data.Driver then
|
||||
TriggerServerEvent("esx_hud:EnteredVehicle", currentPlate, Config.Default.Kmh)
|
||||
end
|
||||
values.show = true
|
||||
p:resolve(currentVehicle)
|
||||
end)
|
||||
|
||||
AddEventHandler("esx:exitedVehicle", function(currentVehicle, currentPlate, currentSeat, displayName, netId)
|
||||
p = promise:new()
|
||||
HUD.Data.Driver = false
|
||||
HUD.Data.Vehicle = nil
|
||||
vehicleType = nil
|
||||
|
||||
values = {
|
||||
show = false,
|
||||
defaultIndicators = {},
|
||||
}
|
||||
|
||||
SendNUIMessage({ type = "VEH_HUD", value = { show = false } })
|
||||
|
||||
if Config.Disable.MinimapOnFoot then
|
||||
DisplayRadar(false)
|
||||
end
|
||||
|
||||
if currentSeat == -1 then
|
||||
TriggerServerEvent("esx_hud:ExitedVehicle", currentPlate, currentMileage, Config.Default.Kmh)
|
||||
end
|
||||
currentMileage = 0
|
||||
isPassenger = false
|
||||
end)
|
||||
|
||||
RegisterNetEvent("esx_hud:UpdateMileage", function(mileage)
|
||||
currentMileage = mileage
|
||||
end)
|
||||
|
||||
AddEventHandler("esx_hud:UnitChanged", function(state)
|
||||
if state then
|
||||
currentMileage = currentMileage * 1.61
|
||||
else
|
||||
currentMileage = currentMileage / 1.61
|
||||
end
|
||||
currentMileage = ESX.Math.Round(currentMileage, 2)
|
||||
end)
|
||||
end
|
||||
Reference in New Issue
Block a user