diff --git a/client/job.lua b/client/job.lua index d2f5269b..7fde19bc 100644 --- a/client/job.lua +++ b/client/job.lua @@ -45,26 +45,6 @@ local function openFingerprintUI() SetNuiFocus(true, true) end -local function SetCarItemsInfo() - local items = {} - for _, item in pairs(Config.CarItems) do - local itemInfo = QBCore.Shared.Items[item.name:lower()] - items[item.slot] = { - name = itemInfo["name"], - amount = tonumber(item.amount), - info = item.info, - label = itemInfo["label"], - description = itemInfo["description"] and itemInfo["description"] or "", - weight = itemInfo["weight"], - type = itemInfo["type"], - unique = itemInfo["unique"], - useable = itemInfo["useable"], - image = itemInfo["image"], - slot = item.slot, - } - end - Config.CarItems = items -end local function doCarDamage(currentVehicle, veh) local smash = false @@ -131,29 +111,27 @@ function TakeOutImpound(vehicle) end end -function TakeOutVehicle(vehicleInfo) +local function TakeOutVehicle(data) + if QBCore.Shared.QBJobsStatus then return end local coords = Config.Locations["vehicle"][currentGarage] if coords then QBCore.Functions.TriggerCallback('QBCore:Server:SpawnVehicle', function(netId) local veh = NetToVeh(netId) - SetCarItemsInfo() - SetVehicleNumberPlateText(veh, Lang:t('info.police_plate')..tostring(math.random(1000, 9999))) - SetEntityHeading(veh, coords.w) - exports['LegacyFuel']:SetFuel(veh, 100.0) - closeMenuFull() - if Config.VehicleSettings[vehicleInfo] ~= nil then - if Config.VehicleSettings[vehicleInfo].extras ~= nil then - QBCore.Shared.SetDefaultVehicleExtras(veh, Config.VehicleSettings[vehicleInfo].extras) - end - if Config.VehicleSettings[vehicleInfo].livery ~= nil then - SetVehicleLivery(veh, Config.VehicleSettings[vehicleInfo].livery) - end - end - TaskWarpPedIntoVehicle(PlayerPedId(), veh, -1) - TriggerEvent("vehiclekeys:client:SetOwner", QBCore.Functions.GetPlate(veh)) - TriggerServerEvent("inventory:server:addTrunkItems", QBCore.Functions.GetPlate(veh), Config.CarItems) - SetVehicleEngineOn(veh, true, true) - end, vehicleInfo, coords, true) + data.plate = Lang:t('info.police_plate')..tostring(math.random(1000, 9999)) + SetVehicleNumberPlateText(veh, data.plate) + QBCore.Functions.TriggerCallback("police:server:addVehItems", function() + exports['LegacyFuel']:SetFuel(veh, 100.0) + SetEntityHeading(veh, coords.w) + closeMenuFull() + if Config.VehicleSettings[data.vehicle] ~= nil then + if Config.VehicleSettings[data.vehicle].extras ~= nil then QBCore.Shared.SetDefaultVehicleExtras(veh, Config.VehicleSettings[data.vehicle].extras) end + if Config.VehicleSettings[data.vehicle].livery ~= nil then SetVehicleLivery(veh, Config.VehicleSettings[data.vehicle].livery) end + end + TaskWarpPedIntoVehicle(PlayerPedId(), veh, -1) + TriggerEvent("vehiclekeys:client:SetOwner", data.plate) + SetVehicleEngineOn(veh, true, true) + end, data.plate) + end, data.vehicle, coords, true) end end @@ -414,9 +392,8 @@ RegisterNetEvent('police:client:TakeOutImpound', function(data) end) RegisterNetEvent('police:client:TakeOutVehicle', function(data) - if inGarage then - local vehicle = data.vehicle - TakeOutVehicle(vehicle) + if inGarage and Config.AuthorizedVehicles[PlayerJob.grade.level][data.vehicle] then + TakeOutVehicle(data) end end) @@ -801,7 +778,7 @@ else local dutyZones = {} for _, v in pairs(Config.Locations["duty"]) do dutyZones[#dutyZones+1] = BoxZone:Create( - vector3(vector3(v.x, v.y, v.z)), 1.75, 1, { + vector3(v.x, v.y, v.z), 1.75, 1, { name="box_zone", debugPoly = false, minZ = v.z - 1, diff --git a/server/main.lua b/server/main.lua index b558ad18..cf2497fd 100644 --- a/server/main.lua +++ b/server/main.lua @@ -84,6 +84,40 @@ local function CreateObjectId() end end +local function SetCarItemsInfo() + if QBCore.Shared.QBJobsStatus then return end + local items = {} + local index = 1 + if Config.CarItems then + for _,v in pairs(Config.CarItems) do + local itemInfo = QBCore.Shared.Items[v.name:lower()] + items[index] = { + name = itemInfo["name"], + amount = tonumber(v.amount), + info = v.info, + label = itemInfo["label"], + description = itemInfo["description"] and itemInfo["description"] or "", + weight = itemInfo["weight"], + type = itemInfo["type"], + unique = itemInfo["unique"], + useable = itemInfo["useable"], + image = itemInfo["image"], + slot = index, + } + index = index + 1 + end + end + return items +end + +local function addTrunkItems(plate) + if QBCore.Shared.QBJobsStatus then return end + local trunkItems = SetCarItemsInfo() + if trunkItems then + exports['qb-inventory']:addTrunkItems(plate, trunkItems) + end +end + local function IsVehicleOwned(plate) local result = MySQL.scalar.await('SELECT plate FROM player_vehicles WHERE plate = ?', {plate}) return result @@ -617,7 +651,14 @@ QBCore.Functions.CreateCallback('police:server:IsPoliceForcePresent', function(_ cb(retval) end) +QBCore.Functions.CreateCallback('police:server:addVehItems', function(_,cb,plate) + if QBCore.Shared.QBJobsStatus then return end + addTrunkItems(plate) + cb("ok") +end) -- Events + + AddEventHandler('onResourceStart', function(resourceName) if resourceName == GetCurrentResourceName() then CreateThread(function() @@ -797,29 +838,31 @@ RegisterNetEvent('heli:spotlight', function(state) TriggerClientEvent('heli:spotlight', -1, serverID, state) end) --- RegisterNetEvent('police:server:FlaggedPlateTriggered', function(camId, plate, street1, street2, blipSettings) --- local src = source --- for k, v in pairs(QBCore.Functions.GetPlayers()) do --- local Player = QBCore.Functions.GetPlayer(v) --- if Player then --- if (Player.PlayerData.job.name == "police" and Player.PlayerData.job.onduty) then --- if street2 then --- TriggerClientEvent("112:client:SendPoliceAlert", v, "flagged", { --- camId = camId, --- plate = plate, --- streetLabel = street1 .. " " .. street2 --- }, blipSettings) --- else --- TriggerClientEvent("112:client:SendPoliceAlert", v, "flagged", { --- camId = camId, --- plate = plate, --- streetLabel = street1 --- }, blipSettings) --- end --- end --- end --- end --- end) +--[[ +RegisterNetEvent('police:server:FlaggedPlateTriggered', function(camId, plate, street1, street2, blipSettings) + local src = source + for k, v in pairs(QBCore.Functions.GetPlayers()) do + local Player = QBCore.Functions.GetPlayer(v) + if Player then + if (Player.PlayerData.job.name == "police" and Player.PlayerData.job.onduty) then + if street2 then + TriggerClientEvent("112:client:SendPoliceAlert", v, "flagged", { + camId = camId, + plate = plate, + streetLabel = street1 .. " " .. street2 + }, blipSettings) + else + TriggerClientEvent("112:client:SendPoliceAlert", v, "flagged", { + camId = camId, + plate = plate, + streetLabel = street1 + }, blipSettings) + end + end + end + end +end) +]]-- RegisterNetEvent('police:server:SearchPlayer', function(playerId) local src = source