forked from Simnation/Main
Update server.lua
This commit is contained in:
parent
3a764e7c31
commit
353887459e
1 changed files with 61 additions and 5 deletions
|
@ -6,9 +6,9 @@ local function deleteOldTrackers()
|
|||
return MySQL.query.await('DELETE FROM `vehicle_trackers` WHERE startedAt < (NOW() - INTERVAL 7 DAY)')
|
||||
end
|
||||
|
||||
local function addTracker(serialNumber, vehiclePlate, owner, name)
|
||||
return MySQL.prepare.await('INSERT INTO `vehicle_trackers` (`serialNumber`, `vehiclePlate`, `owner`, `name`) VALUES (?, ?, ?, ?)',
|
||||
{ serialNumber, vehiclePlate, owner, name })
|
||||
local function addTracker(serialNumber, vehiclePlate, owner, name, phoneNumber)
|
||||
return MySQL.prepare.await('INSERT INTO `vehicle_trackers` (`serialNumber`, `vehiclePlate`, `owner`, `name`, `phoneNumber`) VALUES (?, ?, ?, ?, ?)',
|
||||
{ serialNumber, vehiclePlate, owner, name, phoneNumber })
|
||||
end
|
||||
|
||||
local function deleteTracker(vehiclePlate)
|
||||
|
@ -16,7 +16,7 @@ local function deleteTracker(vehiclePlate)
|
|||
end
|
||||
|
||||
local function getTracker(serialNumber)
|
||||
return MySQL.single.await('SELECT `serialNumber`, `vehiclePlate`, `name` FROM `vehicle_trackers` WHERE `serialNumber` = ? LIMIT 1', { serialNumber })
|
||||
return MySQL.single.await('SELECT `serialNumber`, `vehiclePlate`, `name`, `phoneNumber`, `owner` FROM `vehicle_trackers` WHERE `serialNumber` = ? LIMIT 1', { serialNumber })
|
||||
end
|
||||
|
||||
local function isTracked(vehiclePlate)
|
||||
|
@ -63,6 +63,14 @@ local function isPlayerNearVehicle(playerCoords, vehiclePlate)
|
|||
return true
|
||||
end
|
||||
|
||||
local function getPlayerPhoneNumber(citizenid)
|
||||
local player = MySQL.single.await('SELECT phone_number FROM players WHERE citizenid = ?', { citizenid })
|
||||
if player then
|
||||
return player.phone_number
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
-- QB Usable Items
|
||||
QBCore.Functions.CreateUseableItem(config.trackerItem, function(source, item)
|
||||
TriggerClientEvent('qb_vehicle_tracker:client:placeTracker', source, item.slot, getRandomSerialNumber())
|
||||
|
@ -116,7 +124,9 @@ lib.callback.register('qb_vehicle_tracker:placeTracker', function(source, vehicl
|
|||
|
||||
local Player = QBCore.Functions.GetPlayer(source)
|
||||
local defaultName = "Tracker " .. trim(vehiclePlate)
|
||||
if not addTracker(serialNumber, trim(vehiclePlate), Player.PlayerData.citizenid, defaultName) then return false end
|
||||
local phoneNumber = getPlayerPhoneNumber(Player.PlayerData.citizenid) or "Unknown"
|
||||
|
||||
if not addTracker(serialNumber, trim(vehiclePlate), Player.PlayerData.citizenid, defaultName, phoneNumber) then return false end
|
||||
|
||||
Player.Functions.RemoveItem(config.trackerItem, 1, slot)
|
||||
TriggerClientEvent('inventory:client:ItemBox', source, QBCore.Shared.Items[config.trackerItem], 'remove')
|
||||
|
@ -171,3 +181,49 @@ lib.callback.register('qb_vehicle_tracker:updateTrackerName', function(source, s
|
|||
-- Update the name
|
||||
return updateTrackerName(serialNumber, name)
|
||||
end)
|
||||
|
||||
-- New callbacks for advanced scanner features
|
||||
lib.callback.register('qb_vehicle_tracker:getTrackerOwnerLocation', function(source, vehiclePlate)
|
||||
if type(vehiclePlate) ~= "string" then return nil end
|
||||
|
||||
local serialNumber = isTracked(trim(vehiclePlate))
|
||||
if not serialNumber then return nil end
|
||||
|
||||
local tracker = getTracker(serialNumber)
|
||||
if not tracker or not tracker.owner then return nil end
|
||||
|
||||
local targetPlayer = QBCore.Functions.GetPlayerByCitizenId(tracker.owner)
|
||||
if not targetPlayer then return nil end
|
||||
|
||||
local targetPed = GetPlayerPed(targetPlayer.PlayerData.source)
|
||||
if not targetPed then return nil end
|
||||
|
||||
local targetCoords = GetEntityCoords(targetPed)
|
||||
return vector2(targetCoords.x, targetCoords.y)
|
||||
end)
|
||||
|
||||
lib.callback.register('qb_vehicle_tracker:getTrackerOwnerPhone', function(source, vehiclePlate)
|
||||
local Player = QBCore.Functions.GetPlayer(source)
|
||||
if not Player then return nil end
|
||||
|
||||
-- Check if player is police
|
||||
local isPolice = false
|
||||
for _, jobName in pairs(config.policeJobs) do
|
||||
if Player.PlayerData.job.name == jobName then
|
||||
isPolice = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if not isPolice then return nil end
|
||||
|
||||
if type(vehiclePlate) ~= "string" then return nil end
|
||||
|
||||
local serialNumber = isTracked(trim(vehiclePlate))
|
||||
if not serialNumber then return nil end
|
||||
|
||||
local tracker = getTracker(serialNumber)
|
||||
if not tracker or not tracker.phoneNumber then return nil end
|
||||
|
||||
return tracker.phoneNumber
|
||||
end)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue