diff --git a/client/client.lua b/client/client.lua index 646ea6a..6e8aa55 100644 --- a/client/client.lua +++ b/client/client.lua @@ -70,36 +70,84 @@ RegisterNetEvent("um-hackerphone:client:centralchip", function() end) RegisterNetEvent("um-hackerphone:client:vehicletracker", function() - local vehicle = QBCore.Functions.GetClosestVehicle() + local vehicle = NetworkGetNetworkIdFromEntity(QBCore.Functions.GetClosestVehicle()) if vehicle ~= nil and vehicle ~= 0 then + local veh = NetworkGetEntityFromNetworkId(vehicle) local ped = PlayerPedId() local pos = GetEntityCoords(ped) - local vehpos = GetEntityCoords(vehicle) + local vehpos = GetEntityCoords(veh) + local istracked = false local vehicleinfo = { - ["plate"] = QBCore.Functions.GetPlate(vehicle), - ["vehname"] = GetDisplayNameFromVehicleModel(GetEntityModel(vehicle)):lower(), - ["vehengine"] = GetVehicleEngineHealth(vehicle), - ["vehicle"] = vehicle + ["plate"] = QBCore.Functions.GetPlate(NetworkGetEntityFromNetworkId(vehicle)), + ["vehname"] = GetDisplayNameFromVehicleModel(GetEntityModel(NetworkGetEntityFromNetworkId(vehicle))), + ["vehengine"] = math.floor(GetVehicleEngineHealth(NetworkGetEntityFromNetworkId(vehicle))), + ["vehicle"] = vehicle, + ["vehdistance"] = getDistanceFromVehicle(vehicle) } + if #(pos - vehpos) < 2 then - Anim() - exports['ps-ui']:Circle(function(success) - if success then - SendNUIMessage({nuimessage = 'vbool', vehicleinfo = vehicleinfo}) - ClearPedTasks(ped) - QBCore.Functions.Notify('Tracker connected to vehicle', "success") - TriggerServerEvent('um-hackerphone:server:removeitem',"tracker") + QBCore.Functions.TriggerCallback('um-hackerphone:server:isvehicletracked', function(result) + istracked = result --Just checking if the vehicle (with same plate) is already being tracked in db + if istracked == false then + Anim() + exports['ps-ui']:Circle(function(success) + if success then + SendNUIMessage({nuimessage = 'vbool', vehicleinfo = vehicleinfo}) + ClearPedTasks(ped) + QBCore.Functions.Notify('Tracker connected to vehicle', "success") + TriggerServerEvent('um-hackerphone:server:removeitem',"tracker") + TriggerServerEvent('um-hackerphone:server:newtracker', ped, veh, vehicleinfo) + else + ClearPedTasks(ped) + QBCore.Functions.Notify('Failed to connect', "error") + end + end, 5, 10) else - ClearPedTasks(ped) - QBCore.Functions.Notify('Failed to connect', "error") + QBCore.Functions.Notify('This vehicle is already being tracked', "error") end - end, 5, 10) + end, vehicleinfo.plate) else QBCore.Functions.Notify('No cars nearby', "error") end end end) +RegisterNUICallback('um-hackerphone:nuicallback:ping', function(vehicle, id) + if DoesEntityExist(NetworkGetEntityFromNetworkId(vehicle)) then + local ped = PlayerPedId() + local pos = GetEntityCoords(ped) + local veh = NetworkGetEntityFromNetworkId(vehicle) + local vehpos = GetEntityCoords(veh) + local vehicleinfo = { + ["plate"] = QBCore.Functions.GetPlate(NetworkGetEntityFromNetworkId(vehicle)), + ["vehname"] = GetDisplayNameFromVehicleModel(GetEntityModel(NetworkGetEntityFromNetworkId(vehicle))), + ["vehengine"] = math.floor(GetVehicleEngineHealth(NetworkGetEntityFromNetworkId(vehicle))), + ["vehicle"] = vehicle, + ["vehdistance"] = getDistanceFromVehicle(vehicle) + } + TriggerServerEvent('um-hackerphone:server:updatetracker', vehicleinfo) + SendNUIMessage({nuimessage = 'vbool', vehicleinfo = vehicleinfo}) + else + local vehicleinfo = { + ["plate"] = "CORRUPTED", + ["vehname"] = "CORRUPTED", + ["vehengine"] = "CORRUPTED", + ["vehicle"] = "CORRUPTED", + ["vehdistance"] = "CORRUPTED" + } + --SendNUIMessage({nuimessage = 'vbool', vehicleinfo = vehicleinfo}) + end +end) + +function getDistanceFromVehicle(vehicle) + local ped = PlayerPedId() + local pos = GetEntityCoords(ped) + local veh = NetworkGetEntityFromNetworkId(vehicle) + local vehpos = GetEntityCoords(veh) + local distance = math.floor(GetDistanceBetweenCoords(pos, vehpos)) + return distance +end + RegisterNetEvent("um-hackerphone:client:notify", function() SendNUIMessage({nuimessage = 'error'}) end) @@ -109,7 +157,10 @@ RegisterNUICallback("um-hackerphone:nuicallback:targetinformation", function() end) RegisterNUICallback("um-hackerphone:broken:vehicle", function(vehicle) - local vehpos = GetEntityCoords(vehicle) + local plate = QBCore.Functions.GetPlate(NetworkGetEntityFromNetworkId(vehicle)) + local vehpos = GetEntityCoords(NetworkGetEntityFromNetworkId(vehicle)) + TriggerServerEvent('um-hackerphone:server:removetracker', plate) + Wait(3) AddExplosion(vehpos.x, vehpos.y, vehpos.z, 7, 0.5, true, false, true) end) @@ -121,6 +172,11 @@ RegisterNUICallback("um-hackerphone:nuicallback:cam", function(camid) TriggerEvent("police:client:ActiveCamera", tonumber(camid)) end) +RegisterNUICallback("um-hackerphone:nuicallback:removetracker", function(vehicle) + local plate = QBCore.Functions.GetPlate(NetworkGetEntityFromNetworkId(vehicle)) + TriggerServerEvent('um-hackerphone:server:removetracker', plate) +end) + RegisterNUICallback("um-hackerphone:nuicallback:escape", function() SetNuiFocusKeepInput(false) SetNuiFocus(false,false) diff --git a/config.js b/config.js index 9473ab0..1eb93fb 100644 --- a/config.js +++ b/config.js @@ -2,7 +2,7 @@ UMHackerPhone = []; UMHackerPhone.CloseKey = "Escape" -UMHackerPhone.BlackoutSeconds = 10 +UMHackerPhone.BlackoutSeconds = 45 UMHackerPhone.Cams = { [1] : "Pacific Bank CAM#1", @@ -51,6 +51,7 @@ UMHackerPhone.Lang = { userinfo: "User Information", vehicle: "Vehicle", vehicletrack: "Vehicle Tracking", + distance: "Distance: ", blackout: "Blackout", plate: "Plate: ", model: "Model: ", @@ -63,4 +64,5 @@ UMHackerPhone.Lang = { explosion: "Explosion", hackpower: "Hack power station", fixpower: "Fix power station Seconds: ", + ping: "Ping", } \ No newline at end of file diff --git a/fxmanifest.lua b/fxmanifest.lua index 7245080..09bb186 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -1,7 +1,7 @@ fx_version 'cerulean' game 'gta5' -author 'uyuyorum' +author 'uyuyorum, Mickeystix' description 'UM - Hacker Phone' version '2.0.0' ui_page 'nui/ui.html' @@ -16,4 +16,4 @@ files { } client_scripts {'client/anim.lua','client/client.lua'} -server_script 'server/server.lua' \ No newline at end of file +server_scripts {'@oxmysql/lib/MySQL.lua','server/server.lua','server/utils.lua','server/dbm.lua'} \ No newline at end of file diff --git a/nui/assets/js/app.js b/nui/assets/js/app.js index 78c1ab4..85b6939 100644 --- a/nui/assets/js/app.js +++ b/nui/assets/js/app.js @@ -48,7 +48,7 @@ const hackerphone = Vue.createApp({ break; case "vbool": this.vbool = true - this.carlists.push({trackerid: 'Tracker - ' + d.vehicleinfo.vehicle, vehicleinfoplate: d.vehicleinfo.plate, vehicleinfoname: d.vehicleinfo.vehname, vehicleinfoengine: d.vehicleinfo.vehengine, vehicle: d.vehicleinfo.vehicle}); + this.carlists.push({trackerid: 'Tracker - ' + d.vehicleinfo.vehicle, vehicleinfoplate: d.vehicleinfo.plate, vehicleinfoname: d.vehicleinfo.vehname, vehicleinfoengine: d.vehicleinfo.vehengine, vehicle: d.vehicleinfo.vehicle, vehicledistance: d.vehicleinfo.vehdistance}); break; case "cbool": this.cbool = true @@ -59,6 +59,10 @@ const hackerphone = Vue.createApp({ this.erroricon = "fa-mobile-screen" this.pageReset() break; + case "ping": + this.vbool = true + this.carlists.push({trackerid: 'Tracker - ' + d.vehicleinfo.vehicle, vehicleinfoplate: d.vehicleinfo.plate, vehicleinfoname: d.vehicleinfo.vehname, vehicleinfoengine: d.vehicleinfo.vehengine, vehicle: d.vehicleinfo.vehicle, vehicledistance: d.vehicleinfo.vehdistance}); + break; } }, postMessage: function(url,data) { @@ -80,7 +84,7 @@ const hackerphone = Vue.createApp({ this.pageReset(tvariable) } }, - generalButton: function(task,id) { + generalButton: function(task, id, vehicle) { const x = document.getElementById(id); if (task === "toggle") { if (x.style.display === "none") { @@ -89,23 +93,29 @@ const hackerphone = Vue.createApp({ x.style.display = "none"; } }else if (task === "delete") { + this.postMessage("um-hackerphone:nuicallback:removetracker", vehicle) x.remove() } }, + pingButton: function(key, id) { + this.postMessage('um-hackerphone:nuicallback:ping', key, id) + const x = document.getElementById(id); + x.remove() + }, blackoutButton: function(post) { - this.hackblackout = true - if (!this.timerready) { - this.postMessage(post) - this.timerready = true - this.interval = setInterval(() => { - if (this.timer === 0) { - this.hackblackout = false - this.timerready = false - this.postMessage(post) + this.hackblackout = true + if (!this.timerready) { + this.postMessage(post) + this.timerready = true + this.interval = setInterval(() => { + if (this.timer === 0) { + this.hackblackout = false + this.timerready = false + this.postMessage(post) this.timer = UMHackerPhone.BlackoutSeconds - clearInterval(this.interval) + clearInterval(this.interval) } else { - this.timer-- + this.timer-- } }, 1000) } diff --git a/nui/ui.html b/nui/ui.html index 2906170..980a89f 100644 --- a/nui/ui.html +++ b/nui/ui.html @@ -45,9 +45,11 @@