Scripts/resources/[standalone]/vehcar/client/client.lua

286 lines
7.7 KiB
Lua
Raw Normal View History

2024-12-29 20:02:43 +00:00
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)