Scripts/resources/[qb]/[qb_extras]/qb-tunerchip/client/main.lua

273 lines
10 KiB
Lua
Raw Permalink Normal View History

2024-12-29 20:07:10 +00:00
QBCore = exports['qb-core']:GetCoreObject()
local RainbowNeon = false
LastEngineMultiplier = 1.0
function setVehData(veh,data)
local multp = 0.12
local dTrain = 0.0
if tonumber(data.drivetrain) == 2 then dTrain = 0.5 elseif tonumber(data.drivetrain) == 3 then dTrain = 1.0 end
if not DoesEntityExist(veh) or not data then return nil end
SetVehicleHandlingFloat(veh, "CHandlingData", "fInitialDriveForce", data.boost * multp)
SetVehicleHandlingFloat(veh, "CHandlingData", "fDriveInertia", data.acceleration * multp)
SetVehicleEnginePowerMultiplier(veh, data.gearchange * multp)
LastEngineMultiplier = data.gearchange * multp
SetVehicleHandlingFloat(veh, "CHandlingData", "fDriveBiasFront", dTrain*1.0)
SetVehicleHandlingFloat(veh, "CHandlingData", "fBrakeBiasFront", data.breaking * multp)
end
function resetVeh(veh)
SetVehicleHandlingFloat(veh, "CHandlingData", "fInitialDriveForce", 1.0)
SetVehicleHandlingFloat(veh, "CHandlingData", "fDriveInertia", 1.0)
SetVehicleEnginePowerMultiplier(veh, 1.0)
SetVehicleHandlingFloat(veh, "CHandlingData", "fDriveBiasFront", 0.5)
SetVehicleHandlingFloat(veh, "CHandlingData", "fBrakeBiasFront", 1.0)
end
RegisterNUICallback('save', function(data, cb)
QBCore.Functions.TriggerCallback('qb-tunerchip:server:HasChip', function(HasChip)
if HasChip then
local ped = PlayerPedId()
local veh = GetVehiclePedIsUsing(ped)
setVehData(veh, data)
QBCore.Functions.Notify(Lang:t("error.tunerchip_vehicle_tuned"), 'error')
TriggerServerEvent('qb-tunerchip:server:TuneStatus', QBCore.Functions.GetPlate(veh), true)
end
cb('ok')
end, data)
end)
RegisterNetEvent('qb-tunerchip:client:TuneStatus', function()
local ped = PlayerPedId()
local closestVehicle = GetClosestVehicle(GetEntityCoords(ped), 5.0, 0, 70)
local plate = QBCore.Functions.GetPlate(closestVehicle)
local vehModel = GetEntityModel(closestVehicle)
if vehModel ~= 0 then
QBCore.Functions.TriggerCallback('qb-tunerchip:server:GetStatus', function(status)
if status then
QBCore.Functions.Notify(Lang:t("success.this_vehicle_has_been_tuned"), 'success')
else
QBCore.Functions.Notify(Lang:t("error.this_vehicle_has_not_been_tuned"), 'error')
end
end, plate)
else
QBCore.Functions.Notify(Lang:t("error.no_vehicle_nearby"), 'error')
end
end)
RegisterNUICallback('checkItem', function(data, cb)
local retval = false
local result = QBCore.Functions.HasItem(data.item)
if result then
retval = true
end
cb(retval)
end)
RegisterNUICallback('reset', function(_, cb)
local ped = PlayerPedId()
local veh = GetVehiclePedIsUsing(ped)
resetVeh(veh)
QBCore.Functions.Notify(Lang:t("error.tunerchip_vehicle_has_been_reset"), 'error')
cb("ok")
end)
RegisterNetEvent('qb-tunerchip:client:openChip', function()
local ped = PlayerPedId()
local inVehicle = IsPedInAnyVehicle(ped)
if inVehicle then
QBCore.Functions.Progressbar("connect_laptop", Lang:t("error.tunerchip_vehicle_has_been_reset"), 2000, false, true, {
disableMovement = true,
disableCarMovement = true,
disableMouse = false,
disableCombat = true,
}, {
animDict = "anim@amb@clubhouse@tutorial@bkr_tut_ig3@",
anim = "machinic_loop_mechandplayer",
flags = 16,
}, {}, {}, function() -- Done
StopAnimTask(PlayerPedId(), "anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer", 1.0)
openTunerLaptop(true)
end, function() -- Cancel
StopAnimTask(PlayerPedId(), "anim@amb@clubhouse@tutorial@bkr_tut_ig3@", "machinic_loop_mechandplayer", 1.0)
QBCore.Functions.Notify(Lang:t("error.canceled"), "error")
end)
else
QBCore.Functions.Notify(Lang:t("error.you_are_not_in_a_vehicle"), "error")
end
end)
RegisterNUICallback('exit', function(_, cb)
openTunerLaptop(false)
SetNuiFocus(false, false)
cb('ok')
end)
local LastRainbowNeonColor = 0
local RainbowNeonColors = {
[1] = {
r = 255,
g = 0,
b = 0
},
[2] = {
r = 255,
g = 165,
b = 0
},
[3] = {
r = 255,
g = 255,
b = 0
},
[4] = {
r = 0,
g = 0,
b = 255
},
[5] = {
r = 75,
g = 0,
b = 130
},
[6] = {
r = 238,
g = 130,
b = 238
},
}
RegisterNUICallback('saveNeon', function(data, cb)
QBCore.Functions.TriggerCallback('qb-tunerchip:server:HasChip', function(HasChip)
if HasChip then
if not data.rainbowEnabled then
local ped = PlayerPedId()
local veh = GetVehiclePedIsIn(ped)
if tonumber(data.neonEnabled) == 1 then
SetVehicleNeonLightEnabled(veh, 0, true)
SetVehicleNeonLightEnabled(veh, 1, true)
SetVehicleNeonLightEnabled(veh, 2, true)
SetVehicleNeonLightEnabled(veh, 3, true)
if tonumber(data.r) ~= nil and tonumber(data.g) ~= nil and tonumber(data.b) ~= nil then
SetVehicleNeonLightsColour(veh, tonumber(data.r), tonumber(data.g), tonumber(data.b))
else
SetVehicleNeonLightsColour(veh, 255, 255, 255)
end
RainbowNeon = false
else
SetVehicleNeonLightEnabled(veh, 0, false)
SetVehicleNeonLightEnabled(veh, 1, false)
SetVehicleNeonLightEnabled(veh, 2, false)
SetVehicleNeonLightEnabled(veh, 3, false)
RainbowNeon = false
end
else
local ped = PlayerPedId()
local veh = GetVehiclePedIsIn(ped)
if tonumber(data.neonEnabled) == 1 then
if not RainbowNeon then
RainbowNeon = true
SetVehicleNeonLightEnabled(veh, 0, true)
SetVehicleNeonLightEnabled(veh, 1, true)
SetVehicleNeonLightEnabled(veh, 2, true)
SetVehicleNeonLightEnabled(veh, 3, true)
CreateThread(function()
while true do
if RainbowNeon then
if (LastRainbowNeonColor + 1) ~= 7 then
LastRainbowNeonColor = LastRainbowNeonColor + 1
SetVehicleNeonLightsColour(veh, RainbowNeonColors[LastRainbowNeonColor].r, RainbowNeonColors[LastRainbowNeonColor].g, RainbowNeonColors[LastRainbowNeonColor].b)
else
LastRainbowNeonColor = 1
SetVehicleNeonLightsColour(veh, RainbowNeonColors[LastRainbowNeonColor].r, RainbowNeonColors[LastRainbowNeonColor].g, RainbowNeonColors[LastRainbowNeonColor].b)
end
else
break
end
Wait(350)
end
end)
end
else
RainbowNeon = false
SetVehicleNeonLightEnabled(veh, 0, false)
SetVehicleNeonLightEnabled(veh, 1, false)
SetVehicleNeonLightEnabled(veh, 2, false)
SetVehicleNeonLightEnabled(veh, 3, false)
end
end
end
cb('ok')
end)
end)
local RainbowHeadlight = false
local RainbowHeadlightValue = 0
RegisterNUICallback('saveHeadlights', function(data, cb)
QBCore.Functions.TriggerCallback('qb-tunerchip:server:HasChip', function(HasChip)
if HasChip then
if data.rainbowEnabled then
RainbowHeadlight = true
local ped = PlayerPedId()
local veh = GetVehiclePedIsIn(ped)
local value = tonumber(data.value)
CreateThread(function()
while true do
if RainbowHeadlight then
if (RainbowHeadlightValue + 1) ~= 12 then
RainbowHeadlightValue = RainbowHeadlightValue + 1
ToggleVehicleMod(veh, 22, true)
SetVehicleHeadlightsColour(veh, RainbowHeadlightValue)
else
RainbowHeadlightValue = 1
ToggleVehicleMod(veh, 22, true)
SetVehicleHeadlightsColour(veh, RainbowHeadlightValue)
end
else
break
end
Wait(300)
end
end)
ToggleVehicleMod(veh, 22, true)
SetVehicleHeadlightsColour(veh, value)
else
RainbowHeadlight = false
local ped = PlayerPedId()
local veh = GetVehiclePedIsIn(ped)
local value = tonumber(data.value)
ToggleVehicleMod(veh, 22, true)
SetVehicleHeadlightsColour(veh, value)
end
end
cb('ok')
end)
end)
function openTunerLaptop(bool)
SetNuiFocus(bool, bool)
SendNUIMessage({
action = "ui",
toggle = bool
})
end
RegisterNUICallback('SetStancer', function(data, cb)
local fOffset = data.fOffset * 100 / 1000
local fRotation = data.fRotation * 100 / 1000
local rOffset = data.rOffset * 100 / 1000
local rRotation = data.rRotation * 100 / 1000
local ped = PlayerPedId()
local veh = GetVehiclePedIsIn(ped)
exports["vstancer"]:SetWheelPreset(veh, -fOffset, -fRotation, -rOffset, -rRotation)
cb("ok")
end)