128 lines
3.9 KiB
Lua
128 lines
3.9 KiB
Lua
local dashcamActive = false
|
|
local attachedVehicle = nil
|
|
local cameraHandle = nil
|
|
|
|
Citizen.CreateThread(function()
|
|
while true do
|
|
if dashcamActive then
|
|
|
|
if dashcamActive and not IsPedInAnyVehicle(GetPlayerPed(PlayerId()), false) then
|
|
DisableDash()
|
|
dashcamActive = false
|
|
end
|
|
|
|
if IsPedInAnyVehicle(GetPlayerPed(PlayerId()), false) and dashcamActive then
|
|
UpdateDashcam()
|
|
end
|
|
|
|
end
|
|
Citizen.Wait(1000)
|
|
end
|
|
end)
|
|
|
|
Citizen.CreateThread(function()
|
|
while true do
|
|
if IsControlJustPressed(1, 81) and IsPedInAnyVehicle(GetPlayerPed(PlayerId()), false) then
|
|
if dashcamActive then
|
|
DisableDash()
|
|
else
|
|
EnableDash()
|
|
end
|
|
end
|
|
|
|
if dashcamActive then
|
|
local bonPos = GetWorldPositionOfEntityBone(attachedVehicle, GetEntityBoneIndexByName(attachedVehicle, "windscreen"))
|
|
local vehRot = GetEntityRotation(attachedVehicle, 0)
|
|
SetCamCoord(cameraHandle, bonPos.x, bonPos.y, bonPos.z)
|
|
SetCamRot(cameraHandle, vehRot.x, vehRot.y, vehRot.z, 0)
|
|
end
|
|
Citizen.Wait(0)
|
|
end
|
|
end)
|
|
|
|
function EnableDash()
|
|
attachedVehicle = GetVehiclePedIsIn(GetPlayerPed(PlayerId()), false)
|
|
if DashcamConfig.RestrictVehicles then
|
|
if CheckVehicleRestriction() then
|
|
SetTimecycleModifier("scanline_cam_cheap")
|
|
SetTimecycleModifierStrength(2.2)
|
|
local cam = CreateCam("DEFAULT_SCRIPTED_CAMERA", 1)
|
|
RenderScriptCams(1, 0, 0, 1, 1)
|
|
SetFocusEntity(attachedVehicle)
|
|
cameraHandle = cam
|
|
SendNUIMessage({
|
|
type = "enabledash"
|
|
})
|
|
dashcamActive = true
|
|
end
|
|
else
|
|
SetTimecycleModifier("scanline_cam_cheap")
|
|
SetTimecycleModifierStrength(2.2)
|
|
local cam = CreateCam("DEFAULT_SCRIPTED_CAMERA", 1)
|
|
RenderScriptCams(1, 0, 0, 1, 1)
|
|
SetFocusEntity(attachedVehicle)
|
|
cameraHandle = cam
|
|
SendNUIMessage({
|
|
type = "enabledash"
|
|
})
|
|
dashcamActive = true
|
|
end
|
|
end
|
|
|
|
function DisableDash()
|
|
ClearTimecycleModifier("scanline_cam_cheap")
|
|
RenderScriptCams(0, 0, 1, 1, 1)
|
|
DestroyCam(cameraHandle, false)
|
|
SetFocusEntity(GetPlayerPed(PlayerId()))
|
|
SendNUIMessage({
|
|
type = "disabledash"
|
|
})
|
|
dashcamActive = false
|
|
end
|
|
|
|
function UpdateDashcam()
|
|
local gameTime = GetGameTimer()
|
|
local year, month, day, hour, minute, second = GetLocalTime()
|
|
local unitNumber = GetPlayerServerId(PlayerId())
|
|
local unitName = GetPlayerName(PlayerId())
|
|
local unitSpeed = nil
|
|
|
|
if DashcamConfig.useMPH then
|
|
unitSpeed = GetEntitySpeed(attachedVehicle) * 2.23694
|
|
else
|
|
unitSpeed = GetEntitySpeed(attachedVehicle) * 3.6
|
|
end
|
|
|
|
SendNUIMessage({
|
|
type = "updatedash",
|
|
info = {
|
|
gameTime = gameTime,
|
|
clockTime = {year = year, month = month, day = day, hour = hour, minute = minute, second = second},
|
|
unitNumber = unitNumber,
|
|
unitName = unitName,
|
|
unitSpeed = unitSpeed,
|
|
useMPH = DashcamConfig.useMPH
|
|
}
|
|
})
|
|
end
|
|
|
|
function CheckVehicleRestriction()
|
|
if DashcamConfig.RestrictionType == "custom" then
|
|
for a = 1, #DashcamConfig.AllowedVehicles do
|
|
print(GetHashKey(DashcamConfig.AllowedVehicles[a]))
|
|
print(GetEntityModel(attachedVehicle))
|
|
if GetHashKey(DashcamConfig.AllowedVehicles[a]) == GetEntityModel(attachedVehicle) then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
elseif DashcamConfig.RestrictionType == "class" then
|
|
if GetVehicleClass(attachedVehicle) == 18 then
|
|
return true
|
|
else
|
|
return false
|
|
end
|
|
else
|
|
return false
|
|
end
|
|
end |