286 lines
7.7 KiB
Lua
286 lines
7.7 KiB
Lua
|
local enabled = false
|
||
|
local player = false
|
||
|
local veh = 0
|
||
|
|
||
|
Citizen.CreateThread(function()
|
||
|
while true do
|
||
|
Citizen.Wait(0)
|
||
|
if veh ~= 0 then
|
||
|
if enabled then
|
||
|
refreshUI()
|
||
|
end
|
||
|
else
|
||
|
Wait(100)
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
RegisterNetEvent('veh:options')
|
||
|
AddEventHandler('veh:options', function()
|
||
|
EnableGUI(true)
|
||
|
end)
|
||
|
|
||
|
function EnableGUI(enable)
|
||
|
enabled = enable
|
||
|
SetNuiFocus(enable, enable)
|
||
|
SendNUIMessage({
|
||
|
type = "enablecarmenu",
|
||
|
enable = enable
|
||
|
})
|
||
|
end
|
||
|
|
||
|
function refreshUI()
|
||
|
local settings = {}
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
if veh ~= 0 then
|
||
|
settings.seat1 = checkSeat(player, veh, -1)
|
||
|
settings.seat2 = checkSeat(player, veh, 0)
|
||
|
settings.seat3 = checkSeat(player, veh, 1)
|
||
|
settings.seat4 = checkSeat(player, veh, 2)
|
||
|
settings.engineAccess = settings.seat1 == -1 and true or false
|
||
|
if GetVehicleDoorAngleRatio(veh, 0) ~= 0 then
|
||
|
settings.door0 = true
|
||
|
end
|
||
|
if GetVehicleDoorAngleRatio(veh, 1) ~= 0 then
|
||
|
settings.door1 = true
|
||
|
end
|
||
|
if GetVehicleDoorAngleRatio(veh, 2) ~= 0 then
|
||
|
settings.door2 = true
|
||
|
end
|
||
|
if GetVehicleDoorAngleRatio(veh, 3) ~= 0 then
|
||
|
settings.door3 = true
|
||
|
end
|
||
|
if GetVehicleDoorAngleRatio(veh, 4) ~= 0 then
|
||
|
settings.hood = true
|
||
|
end
|
||
|
if GetVehicleDoorAngleRatio(veh, 5) ~= 0 then
|
||
|
settings.trunk = true
|
||
|
end
|
||
|
|
||
|
if not IsVehicleWindowIntact(veh, 0) then
|
||
|
settings.windowr1 = true
|
||
|
end
|
||
|
if not IsVehicleWindowIntact(veh, 1) then
|
||
|
settings.windowl1 = true
|
||
|
end
|
||
|
if not IsVehicleWindowIntact(veh, 2) then
|
||
|
settings.windowr2 = true
|
||
|
end
|
||
|
if not IsVehicleWindowIntact(veh, 3) then
|
||
|
settings.windowl2 = true
|
||
|
end
|
||
|
|
||
|
local engine = GetIsVehicleEngineRunning(veh);
|
||
|
if engine then
|
||
|
settings.engine = true
|
||
|
else
|
||
|
settings.engine = false
|
||
|
end
|
||
|
|
||
|
local model = GetEntityModel(veh)
|
||
|
local damageLevel = GetVehicleEngineHealth(veh)
|
||
|
settings.plate = GetVehicleNumberPlateText(veh)
|
||
|
settings.fuel = GetVehicleFuelLevel(veh)
|
||
|
settings.name = GetDisplayNameFromVehicleModel(model)
|
||
|
local overallDamage = damageLevel / 10
|
||
|
if overallDamage < 100 then
|
||
|
settings.damage = overallDamage - 15
|
||
|
else
|
||
|
settings.damage = 100
|
||
|
end
|
||
|
SendNUIMessage({
|
||
|
type = "refreshcarmenu",
|
||
|
settings = settings,
|
||
|
})
|
||
|
else
|
||
|
SendNUIMessage({
|
||
|
type = "resetcarmenu"
|
||
|
})
|
||
|
end
|
||
|
end
|
||
|
|
||
|
RegisterNUICallback('openDoor', function(data, cb)
|
||
|
doorIndex = tonumber(data['doorIndex'])
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
|
||
|
if veh ~= 0 then
|
||
|
local lockStatus = GetVehicleDoorLockStatus(veh)
|
||
|
if lockStatus == 1 or lockStatus == 0 then
|
||
|
if (GetVehicleDoorAngleRatio(veh, doorIndex) == 0) then
|
||
|
SetVehicleDoorOpen(veh, doorIndex, false, false)
|
||
|
else
|
||
|
SetVehicleDoorShut(veh, doorIndex, false)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
cb('ok')
|
||
|
end)
|
||
|
|
||
|
RegisterNUICallback('switchSeat', function(data, cb)
|
||
|
seatIndex = tonumber(data['seatIndex'])
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
if veh ~= 0 then
|
||
|
SetPedIntoVehicle(player, veh, seatIndex)
|
||
|
end
|
||
|
cb('ok')
|
||
|
end)
|
||
|
|
||
|
|
||
|
RegisterCommand('seat', function(src, args)
|
||
|
local id = tonumber(args[1])
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
if veh ~= 0 then
|
||
|
SetPedIntoVehicle(player, veh, id)
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
RegisterCommand('door', function(src, args)
|
||
|
local id = tonumber(args[1])
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
|
||
|
if veh ~= 0 then
|
||
|
local lockStatus = GetVehicleDoorLockStatus(veh)
|
||
|
if lockStatus == 1 or lockStatus == 0 then
|
||
|
if (GetVehicleDoorAngleRatio(veh, id) == 0) then
|
||
|
SetVehicleDoorOpen(veh, id, false, false)
|
||
|
else
|
||
|
SetVehicleDoorShut(veh, id, false)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
RegisterCommand('window', function(src, args)
|
||
|
local id = tonumber(args[1])
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
if veh ~= 0 then
|
||
|
if not IsVehicleWindowIntact(veh, id) then
|
||
|
RollUpWindow(veh, id)
|
||
|
if not IsVehicleWindowIntact(veh, id) then
|
||
|
RollDownWindow(veh, id)
|
||
|
end
|
||
|
else
|
||
|
RollDownWindow(veh, id)
|
||
|
end
|
||
|
end
|
||
|
end)
|
||
|
|
||
|
RegisterNUICallback('togglewindow', function(data, cb)
|
||
|
windowIndex = tonumber(data['windowIndex'])
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
if veh ~= 0 then
|
||
|
if not IsVehicleWindowIntact(veh, windowIndex) then
|
||
|
RollUpWindow(veh, windowIndex)
|
||
|
if not IsVehicleWindowIntact(veh, windowIndex) then
|
||
|
RollDownWindow(veh, windowIndex)
|
||
|
end
|
||
|
else
|
||
|
RollDownWindow(veh, windowIndex)
|
||
|
end
|
||
|
end
|
||
|
cb('ok')
|
||
|
end)
|
||
|
|
||
|
RegisterNUICallback('togglealldoor', function(data, cb)
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
if veh ~= 0 then
|
||
|
SetVehicleDoorShut(veh, 0, false)
|
||
|
SetVehicleDoorShut(veh, 1, false)
|
||
|
SetVehicleDoorShut(veh, 2, false)
|
||
|
SetVehicleDoorShut(veh, 3, false)
|
||
|
SetVehicleDoorShut(veh, 4, false)
|
||
|
SetVehicleDoorShut(veh, 5, false)
|
||
|
SetVehicleDoorShut(veh, 6, false)
|
||
|
end
|
||
|
cb('ok')
|
||
|
end)
|
||
|
|
||
|
RegisterNUICallback('lockdoors', function(data, cb)
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
if veh ~= 0 then
|
||
|
TriggerEvent("vehiclelocking")
|
||
|
end
|
||
|
cb('ok')
|
||
|
end)
|
||
|
|
||
|
RegisterNUICallback('convertroof', function(data, cb)
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
if veh ~= 0 then
|
||
|
local roofState = GetConvertibleRoofState(veh)
|
||
|
if roofState == 0 then
|
||
|
LowerConvertibleRoof(veh)
|
||
|
elseif roofState == 2 then
|
||
|
RaiseConvertibleRoof(veh)
|
||
|
end
|
||
|
end
|
||
|
cb('ok')
|
||
|
end)
|
||
|
|
||
|
RegisterNUICallback('givekeys', function(data, cb)
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
if veh ~= 0 then
|
||
|
TriggerEvent('vehiclekeys:client:GiveKeys', source)
|
||
|
end
|
||
|
cb('ok')
|
||
|
end)
|
||
|
|
||
|
RegisterNUICallback('toggleengine', function(data, cb)
|
||
|
player = PlayerPedId()
|
||
|
veh = GetVehiclePedIsIn(player, false)
|
||
|
local seatIn = GetPedInVehicleSeat(player, -1)
|
||
|
if veh ~= 0 then
|
||
|
if IsVehicleEngineOn(veh) then
|
||
|
SetVehicleEngineOn(veh, false, false, true)
|
||
|
SetVehicleUndriveable(veh, true)
|
||
|
else
|
||
|
SetVehicleEngineOn(veh, true, false, true)
|
||
|
SetVehicleUndriveable(veh, false)
|
||
|
end
|
||
|
end
|
||
|
cb('ok')
|
||
|
end)
|
||
|
|
||
|
RegisterNUICallback('escape', function(data, cb)
|
||
|
EnableGUI(false)
|
||
|
cb('ok')
|
||
|
end)
|
||
|
|
||
|
function checkSeat(player, veh, seatIndex)
|
||
|
local ped = GetPedInVehicleSeat(veh, seatIndex);
|
||
|
if ped == player then
|
||
|
return seatIndex;
|
||
|
elseif ped ~= 0 then
|
||
|
return false;
|
||
|
else
|
||
|
return true;
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-- Disable Seat Shuffling
|
||
|
CreateThread(function()
|
||
|
local timer = 5
|
||
|
while true do
|
||
|
if IsPedInAnyVehicle(PlayerPedId(), false) then
|
||
|
timer = 5
|
||
|
if GetPedInVehicleSeat(GetVehiclePedIsIn(PlayerPedId(), false), 0) == PlayerPedId() then
|
||
|
if GetIsTaskActive(PlayerPedId(), 165) then
|
||
|
SetPedIntoVehicle(PlayerPedId(), GetVehiclePedIsIn(PlayerPedId(), false), 0)
|
||
|
end
|
||
|
end
|
||
|
else
|
||
|
timer = 1200
|
||
|
end
|
||
|
Wait(timer)
|
||
|
end
|
||
|
end)
|