diff --git a/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/client/client.lua b/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/client/client.lua index d1af2034a..4104bbc54 100644 --- a/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/client/client.lua +++ b/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/client/client.lua @@ -9,8 +9,6 @@ local PlyInCarCam = false local bcamstate = false local carCam = false local onRec = false -local isRecording = false -local isDashcamRecording = false -- for prop and ped local propNetID = nil @@ -769,88 +767,22 @@ RegisterNetEvent('spy-bodycam:client:deleteDecoyPed',function(plyId) end) RegisterNetEvent('spy-bodycam:client:startRec',function(webhook,serviceUsed) - if isRecording then - SendNUIMessage({action = "cancel_rec_force"}) - isRecording = false - NotifyPlayer('Recording stopped!', 'success', 2500) - - if Config.ForceViewCam then - onRec = false - SetFollowPedCamViewMode(1) - SetTimecycleModifier('default') - SetTimecycleModifierStrength(1.0) - end - else - SendNUIMessage({ - action = "toggle_record", - hook = webhook, - service = serviceUsed, - recTiming = Config.RecordTime, - }) - isRecording = true - NotifyPlayer('Recording started!', 'success', 2500) - - if Config.ForceViewCam then - SetTimecycleModifier(Config.CameraEffect.bodycam) - SetTimecycleModifierStrength(0.5) - CreateThread(function() - onRec = true - while onRec do - SetFollowPedCamViewMode(4) - Wait(0) - end - end) - end - end -end) - -RegisterNetEvent('spy-bodycam:client:startDashcamRec', function(webhook, serviceUsed, netId) - if isDashcamRecording then - SendNUIMessage({action = "stop_dashcam_recording"}) - isDashcamRecording = false - NotifyPlayer('Dashcam recording stopped!', 'success', 2500) - - if Config.ForceViewCam then - onRec = false - SetFollowPedCamViewMode(1) - SetTimecycleModifier('default') - SetTimecycleModifierStrength(1.0) - end - else - local veh = NetworkGetEntityFromNetworkId(netId) - if not DoesEntityExist(veh) then - NotifyPlayer('Vehicle not found!', 'error', 2500) - return - end - - -- Get vehicle info for recording overlay - local carPlate = GetVehicleNumberPlateText(veh) - local carName = GetVehDisplayName(GetEntityModel(veh)) - - -- Send message to NUI to start recording - SendNUIMessage({ - action = "toggle_dashcam_record", - hook = webhook, - service = serviceUsed, - recTiming = Config.RecordTime, - vehicleId = netId, - vehiclePlate = carPlate, - vehicleName = carName - }) - isDashcamRecording = true - NotifyPlayer('Dashcam recording started!', 'success', 2500) - - if Config.ForceViewCam then - SetTimecycleModifier(Config.CameraEffect.dashcam) - SetTimecycleModifierStrength(0.5) - CreateThread(function() - onRec = true - while onRec do - SetFollowPedCamViewMode(4) - Wait(0) - end - end) - end + SendNUIMessage({ + action = "toggle_record", + hook = webhook, + service = serviceUsed, + recTiming = Config.RecordTime, + }) + if Config.ForceViewCam then + SetTimecycleModifier(Config.CameraEffect.bodycam) + SetTimecycleModifierStrength(0.5) + CreateThread(function() + onRec = true + while onRec do + SetFollowPedCamViewMode(4) + Wait(0) + end + end) end end) @@ -873,42 +805,6 @@ RegisterNetEvent('spy-bodycam:client:refreshRecords',function(records,isBoss) }) end) --- Register hotkeys for recording if enabled in config -Citizen.CreateThread(function() - if Config.EnableRecordingHotkeys then - -- Bodycam recording hotkey - RegisterKeyMapping('bodycamrecord', 'Start/Stop bodycam recording', 'keyboard', Config.RecordHotkey) - RegisterCommand('bodycamrecord', function() - if bcamstate then -- Only if bodycam is active - TriggerServerEvent('spy-bodycam:server:toggleRecording') - else - NotifyPlayer('Bodycam not activated!', 'error', 2500) - end - end, false) - - -- Dashcam recording hotkey - RegisterKeyMapping('dashcamrecord', 'Start/Stop dashcam recording', 'keyboard', Config.DashcamHotkey) - RegisterCommand('dashcamrecord', function() - if IsPedInAnyVehicle(cache.ped, false) then - local veh = GetVehiclePedIsIn(cache.ped, false) - if isCarAuth(veh) then - local netId = NetworkGetNetworkIdFromEntity(veh) - if GlobalState.CarsOnBodycam[netId] then - TriggerServerEvent('spy-bodycam:server:toggleDashcamRecording', netId) - else - NotifyPlayer('Dashcam not activated in this vehicle!', 'error', 2500) - end - else - NotifyPlayer('Vehicle not authorized for dashcam!', 'error', 2500) - end - else - NotifyPlayer('You need to be in a vehicle to use dashcam!', 'error', 2500) - end - end, false) - end -end) - - RegisterKeyMapping('bodycamexit', 'Exit bodycam spectate', 'keyboard', Config.ExitCamKey) RegisterCommand('bodycamexit', function() if PlyInCam or PlyInCarCam then @@ -931,7 +827,7 @@ RegisterNUICallback('videoLog', function(data, cb) local videoUrl = data.vidurl local pos = GetEntityCoords(cache.ped) local s1, s2 = GetStreetNameAtCoord(pos.x, pos.y, pos.z) - TriggerServerEvent('spy-bodycam:server:logVideoDetails', videoUrl, GetStreetNameFromHashKey(s1), data.isDashcam) + TriggerServerEvent('spy-bodycam:server:logVideoDetails', videoUrl,GetStreetNameFromHashKey(s1)) end end) @@ -1145,7 +1041,6 @@ function PlayWatchAnim(ped,isNet) Citizen.Wait(10) end local prop = CreateObject(tabletprop, x, y, z + 0.2, isNet, true, false) - AttachEntityToEntity(prop, ped, GetPedBoneIndex(ped, 28422), -0.05, 0.0, 0.0, 0.0, 0.0, 0.0, AttachEntityToEntity(prop, ped, GetPedBoneIndex(ped, 28422), -0.05, 0.0, 0.0, 0.0, 0.0, 0.0, true, true, false, true, 1, true) local animDict = 'amb@code_human_in_bus_passenger_idles@female@tablet@idle_a' RequestAnimDict(animDict) @@ -1325,37 +1220,4 @@ function HasItemsCheck(itemname) return false end --- Register hotkeys for recording -if Config.EnableRecordingHotkeys then - RegisterCommand('+bodycamrecord', function() - if bcamstate then - TriggerServerEvent('spy-bodycam:server:toggleRecording') - else - NotifyPlayer('Bodycam not activated!', 'error', 2500) - end - end, false) - - RegisterCommand('+dashcamrecord', function() - if IsPedInAnyVehicle(cache.ped, false) then - local veh = GetVehiclePedIsIn(cache.ped, false) - if isCarAuth(veh) then - local netId = NetworkGetNetworkIdFromEntity(veh) - if GlobalState.CarsOnBodycam[netId] then - TriggerServerEvent('spy-bodycam:server:toggleDashcamRecording', netId) - else - NotifyPlayer('Dashcam not activated in this vehicle!', 'error', 2500) - end - else - NotifyPlayer('Vehicle not authorized for dashcam!', 'error', 2500) - end - else - NotifyPlayer('You need to be in a vehicle to use dashcam!', 'error', 2500) - end - end, false) - - RegisterKeyMapping('+bodycamrecord', 'Start/Stop bodycam recording', 'keyboard', Config.RecordHotkey) - RegisterKeyMapping('+dashcamrecord', 'Start/Stop dashcam recording', 'keyboard', Config.DashcamHotkey) -end - - diff --git a/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/config.lua b/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/config.lua index 1ac06914d..cb9ef331b 100644 --- a/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/config.lua +++ b/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/config.lua @@ -21,13 +21,10 @@ Config.Dependency = { UseProgress = 'qb', -- qb | ox | esx UseMenu = 'qb', -- qb | ox | esx UseNotify = 'qb', -- qb | ox | esx - UseAppearance = 'illenium', -- qb | illenium | false + UseAppearance = 'illenium', -- qb | illenium | false } Config.ExitCamKey = 'BACK' -Config.RecordHotkey = 'F1' -- Hotkey for bodycam recording -Config.DashcamHotkey = 'F10' -- Hotkey for dashcam recording -Config.EnableRecordingHotkeys = true -- Enable/disable hotkey functionality Config.CameraEffect = { bodycam = 'Island_CCTV_ChannelFuzz', @@ -122,4 +119,4 @@ Config.VehCamOffset = { -- 19: Military -- 20: Commercial -- 21: Trains --- 22: Open Wheel +-- 22: Open Wheel \ No newline at end of file diff --git a/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/server/server.lua b/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/server/server.lua index 8748be1d3..bf4ee74dc 100644 --- a/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/server/server.lua +++ b/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/server/server.lua @@ -161,71 +161,13 @@ Citizen.CreateThread(function() end end) --- Handle bodycam recording toggle -RegisterNetEvent('spy-bodycam:server:toggleRecording', function() - local src = source - if PlayerOnBodycam[src] then - local defwebhook - if Upload.ServiceUsed == 'discord' then - local jobKey - if Config.Framework == 'qb' then - local Player = QBCore.Functions.GetPlayer(src) - jobKey = Player.PlayerData.job.name - else - local xPlayer = ESX.GetPlayerFromId(src) - jobKey = xPlayer.getJob().name - end - if Upload.JobUploads[jobKey] then - defwebhook = Upload.JobUploads[jobKey].webhook - else - defwebhook = Upload.DefaultUploads.webhook - end - elseif Upload.ServiceUsed == 'fivemanage' or Upload.ServiceUsed == 'fivemerr' then - defwebhook = Upload.Token - end - TriggerClientEvent('spy-bodycam:client:startRec', src, defwebhook, Upload.ServiceUsed) - else - NotifyPlayerSv('Bodycam not turned on!', 'error', 3000, src) - end -end) - --- Handle dashcam recording toggle -RegisterNetEvent('spy-bodycam:server:toggleDashcamRecording', function(netId) - local src = source - if CarsOnBodycam[netId] then - local defwebhook - if Upload.ServiceUsed == 'discord' then - local jobKey - if Config.Framework == 'qb' then - local Player = QBCore.Functions.GetPlayer(src) - jobKey = Player.PlayerData.job.name - else - local xPlayer = ESX.GetPlayerFromId(src) - jobKey = xPlayer.getJob().name - end - if Upload.JobUploads[jobKey] then - defwebhook = Upload.JobUploads[jobKey].webhook - else - defwebhook = Upload.DefaultUploads.webhook - end - elseif Upload.ServiceUsed == 'fivemanage' or Upload.ServiceUsed == 'fivemerr' then - defwebhook = Upload.Token - end - TriggerClientEvent('spy-bodycam:client:startDashcamRec', src, defwebhook, Upload.ServiceUsed, netId) - else - NotifyPlayerSv('Dashcam not turned on!', 'error', 3000, src) - end -end) - - -RegisterNetEvent('spy-bodycam:server:logVideoDetails', function(videoUrl, streetName, isDashcam) +RegisterNetEvent('spy-bodycam:server:logVideoDetails', function(videoUrl,streetName) local src = source local offName local offJob local offRank local jobKey local date = os.date('%Y-%m-%d') - local recordType = isDashcam and "dashcam" or "bodycam" if Config.Framework == 'qb' then local Player = QBCore.Functions.GetPlayer(src) @@ -242,13 +184,12 @@ RegisterNetEvent('spy-bodycam:server:logVideoDetails', function(videoUrl, street end ---SQL UPLOAD - MySQL.Async.execute('INSERT INTO spy_bodycam (job, videolink, street, date, playername, recordtype) VALUES (@job, @videolink, @street, @date, @playername, @recordtype)', { + MySQL.Async.execute('INSERT INTO spy_bodycam (job, videolink, street, date, playername) VALUES (@job, @videolink, @street, @date, @playername)', { ['@job'] = jobKey, ['@videolink'] = videoUrl, ['@street'] = streetName, ['@date'] = date, - ['@playername'] = offName, - ['@recordtype'] = recordType + ['@playername'] = offName }, function(rowsChanged) end) if Upload.DiscordLogs.Enabled then @@ -263,7 +204,7 @@ RegisterNetEvent('spy-bodycam:server:logVideoDetails', function(videoUrl, street end local embedData = { { - title = Upload.DiscordLogs.Title .. (isDashcam and " (Dashcam)" or " (Bodycam)"), + title = Upload.DiscordLogs.Title, color = 16761035, fields = { { name = "Name:", value = offName, inline = false }, @@ -271,7 +212,7 @@ RegisterNetEvent('spy-bodycam:server:logVideoDetails', function(videoUrl, street { name = "Job Rank:", value = offRank, inline = false }, }, footer = { - text = "Date: " .. os.date("!%Y-%m-%d %H:%M:%S", os.time()), + text = "Date: " .. os.date("!%Y-%m-%d %H:%M:%S", os.time()), icon_url = "https://i.imgur.com/CuSyeZT.png", }, author = author @@ -429,58 +370,4 @@ AddEventHandler('onResourceStart', function(resourceName) checkForUpdates() end end) --- Handle bodycam recording toggle -RegisterNetEvent('spy-bodycam:server:toggleRecording', function() - local src = source - if PlayerOnBodycam[src] then - local defwebhook - if Upload.ServiceUsed == 'discord' then - local jobKey - if Config.Framework == 'qb' then - local Player = QBCore.Functions.GetPlayer(src) - jobKey = Player.PlayerData.job.name - else - local xPlayer = ESX.GetPlayerFromId(src) - jobKey = xPlayer.getJob().name - end - if Upload.JobUploads[jobKey] then - defwebhook = Upload.JobUploads[jobKey].webhook - else - defwebhook = Upload.DefaultUploads.webhook - end - elseif Upload.ServiceUsed == 'fivemanage' or Upload.ServiceUsed == 'fivemerr' then - defwebhook = Upload.Token - end - TriggerClientEvent('spy-bodycam:client:startRec', src, defwebhook, Upload.ServiceUsed) - else - NotifyPlayerSv('Bodycam not turned on!', 'error', 3000, src) - end -end) --- Handle dashcam recording toggle -RegisterNetEvent('spy-bodycam:server:toggleDashcamRecording', function(netId) - local src = source - if CarsOnBodycam[netId] then - local defwebhook - if Upload.ServiceUsed == 'discord' then - local jobKey - if Config.Framework == 'qb' then - local Player = QBCore.Functions.GetPlayer(src) - jobKey = Player.PlayerData.job.name - else - local xPlayer = ESX.GetPlayerFromId(src) - jobKey = xPlayer.getJob().name - end - if Upload.JobUploads[jobKey] then - defwebhook = Upload.JobUploads[jobKey].webhook - else - defwebhook = Upload.DefaultUploads.webhook - end - elseif Upload.ServiceUsed == 'fivemanage' or Upload.ServiceUsed == 'fivemerr' then - defwebhook = Upload.Token - end - TriggerClientEvent('spy-bodycam:client:startDashcamRec', src, defwebhook, Upload.ServiceUsed, netId) - else - NotifyPlayerSv('Dashcam not turned on!', 'error', 3000, src) - end -end) diff --git a/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/web/index.html b/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/web/index.html index d7463b4dd..23ade29bb 100644 --- a/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/web/index.html +++ b/resources/[jobs]/[police]/[spy-bodycam]/spy-bodycam/web/index.html @@ -79,18 +79,9 @@ - -