----------------------------------------- -- FD DRONE SCRIPT - SERVER ----------------------------------------- local activeState = { isActive = false, truckNet = 0, droneNet = 0 } ------------------------------------------------- -- SPOTLIGHT SYNC ------------------------------------------------- RegisterNetEvent("fd_drone:syncSpotlight", function(netId, data) local src = source -- Basic sanity if type(netId) ~= "number" or type(data) ~= "table" then return end -- Re-broadcast to everyone except sender TriggerClientEvent("fd_drone:applySpotlight", -1, src, netId, { enabled = data.enabled or false, pitch = data.pitch or 0.0, yaw = data.yaw or 0.0, radius = data.radius or 5.0, intensity = data.intensity or 10.0 }) end) ------------------------------------------------- -- GLOBAL ACTIVE DRONE STATE ------------------------------------------------- RegisterNetEvent("fd_drone:setActiveState", function(isActive, truckNet, droneNet) local src = source isActive = not not isActive truckNet = tonumber(truckNet) or 0 droneNet = tonumber(droneNet) or 0 -- If setting active, store them if isActive then activeState.isActive = true activeState.truckNet = truckNet activeState.droneNet = droneNet else activeState.isActive = false activeState.truckNet = 0 activeState.droneNet = 0 end TriggerClientEvent("fd_drone:updateActiveState", -1, activeState.isActive, activeState.truckNet, activeState.droneNet) end) ------------------------------------------------- -- TRUNK DOOR / PROP SYNC ------------------------------------------------- RegisterNetEvent("fd_drone:syncTrunk", function(truckNet, state) -- Simple broadcast: everyone applies the same trunk state TriggerClientEvent("fd_drone:applyTrunk", -1, truckNet, state) end) -- When a player joins / resource restarts, client requests this RegisterNetEvent("fd_drone:requestActiveState", function() local src = source TriggerClientEvent("fd_drone:updateActiveState", src, activeState.isActive, activeState.truckNet, activeState.droneNet) end)