Scripts/resources/[qb]/[qb_extras]/qb-nitro/server/main.lua
2024-12-29 21:07:50 +01:00

100 lines
3.9 KiB
Lua

local QBCore = exports['qb-core']:GetCoreObject()
local VehicleNitrous = {}
local NitroVeh = {}
QBCore.Functions.CreateUseableItem("nitrous", function(source, item)
TriggerClientEvent('qb-nitro:client:ApplyNitrous', source)
end)
RegisterNetEvent('qb-nitro:server:LoadNitrous', function(Plate)
VehicleNitrous[Plate] = {
hasnitro = true,
level = 100,
}
TriggerClientEvent('qb-nitro:client:LoadNitrous', -1, Plate)
TriggerClientEvent('hud:client:UpdateNitrous', -1, Plate, VehicleNitrous[Plate].level)
TriggerEvent('qb-nitro:database:LoadNitro', Plate, 100)
end)
RegisterNetEvent('qb-nitro:server:SyncFlames', function(netId)
TriggerClientEvent('qb-nitro:client:SyncFlames', -1, netId, source)
end)
RegisterNetEvent('qb-nitro:server:AddEmptyNitrous', function()
local src = source
local Ply = QBCore.Functions.GetPlayer(src)
if not Ply then return end
Ply.Functions.RemoveItem('nitrous', 1)
Ply.Functions.AddItem('emptynitrous', 1)
end)
RegisterNetEvent('qb-nitro:server:UnloadNitrous', function(Plate)
VehicleNitrous[Plate] = nil
TriggerClientEvent('qb-nitro:client:UnloadNitrous', -1, Plate)
TriggerEvent('qb-nitro:database:UnloadNitro', Plate)
end)
RegisterNetEvent('qb-nitro:server:UpdateNitroLevel', function(Plate, level)
VehicleNitrous[Plate].level = level
TriggerClientEvent('qb-nitro:client:UpdateNitroLevel', -1, Plate, level)
TriggerEvent('qb-nitro:database:UpdateNitroLevel', Plate, level)
end)
RegisterNetEvent('qb-nitro:server:StopSync', function(plate)
TriggerClientEvent('qb-nitro:client:StopSync', -1, plate)
end)
QBCore.Functions.CreateCallback('qb-nitro:GetNosLoadedVehs', function(source, cb)
local result = MySQL.Sync.fetchAll('SELECT * FROM player_vehicles WHERE hasnitro = ?', {1})
if result[1] then
for k, v in pairs(result) do
if v["hasnitro"] == 1 then
VehicleNitrous[v["plate"]] = { hasnitro = v["hasnitro"], level = tonumber(v["noslevel"]), }
TriggerClientEvent('qb-nitro:client:LoadNitrous', -1, tostring(v["plate"]))
TriggerClientEvent('hud:client:UpdateNitrous', -1, result[k]["plate"], VehicleNitrous[result[k]["plate"]].level)
end
end
end
cb(VehicleNitrous)
end)
QBCore.Functions.CreateCallback('qb-nitro:GetNosLoaded', function(source, cb, plate)
local result = MySQL.Sync.fetchAll('SELECT * FROM player_vehicles WHERE plate = ?', {plate})
if result[1].hasnitro then
for k, v in pairs(result) do
if v["hasnitro"] == 1 then
VehicleNitrous[result[k]["plate"]] = { hasnitro = true, level = tonumber(result[k]["noslevel"]), }
TriggerClientEvent('qb-nitro:client:LoadNitrous', -1, tostring(result[k]["plate"]))
TriggerClientEvent('hud:client:UpdateNitrous', -1, result[k]["plate"], VehicleNitrous[result[k]["plate"]].level)
end
end
end
cb(VehicleNitrous)
end)
RegisterNetEvent('qb-nitro:database:LoadNitro', function(plate, level)
MySQL.Async.execute('UPDATE player_vehicles SET noslevel = ? WHERE plate = ?', {100, plate})
MySQL.Async.execute('UPDATE player_vehicles SET hasnitro = ? WHERE plate = ?', {1, plate})
end)
RegisterNetEvent('qb-nitro:database:UnloadNitro', function(plate)
MySQL.Async.execute('UPDATE player_vehicles SET noslevel = ?, hasnitro = ? WHERE plate = ?', {0, 0, plate})
end)
RegisterNetEvent('qb-nitro:database:UpdateNitroLevel', function(plate, level)
MySQL.Async.execute('UPDATE player_vehicles SET noslevel = ? WHERE plate = ?', {level, plate})
end)
RegisterNetEvent('qb-nitro:server:SyncPurge', function(netId, enabled)
for k, v in pairs(QBCore.Functions.GetPlayers()) do
local P = QBCore.Functions.GetPlayer(v)
TriggerClientEvent('qb-nitro:client:SyncPurge', P.PlayerData.source, netId, enabled)
end
end)
RegisterNetEvent('qb-nitro:server:SyncFlame', function(netId, scale)
for k, v in pairs(QBCore.Functions.GetPlayers()) do
local P = QBCore.Functions.GetPlayer(v)
TriggerClientEvent('qb-nitro:client:SyncFlame', P.PlayerData.source, netId, scale)
end
end)