local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local camera = workspace.CurrentCamera local player = Players.LocalPlayer -- CLEANUP for _, v in pairs(player.PlayerGui:GetChildren()) do if v.Name == "OUROBOROS_V35" then v:Destroy() end end if camera:FindFirstChild("DroneBlur") then camera.DroneBlur:Destroy() end if camera:FindFirstChild("FlashlightModel") then camera.FlashlightModel:Destroy() end -- Config local active = false local flashlightActive = false local speed, fov, vigIntensity = 65, 75, 0.65 local currentVelocity = Vector3.new(0,0,0) local dronePos = camera.CFrame.Position local camRot = Vector2.new(0, 0) local moveVec = Vector3.new(0, 0, 0) local isInteractingUI = false local tiltAngle = 0 local lastRot = Vector2.new(0,0) -- UI ROOT local Gui = Instance.new("ScreenGui", player.PlayerGui) Gui.Name = "OUROBOROS_V35"; Gui.IgnoreGuiInset = true; Gui.ResetOnSpawn = false local Blur = Instance.new("BlurEffect", camera) Blur.Name = "DroneBlur"; Blur.Size = 0 -- --- 1. LIVE VHS OVERLAY & CROSSHAIR --- local Overlay = Instance.new("Frame", Gui) Overlay.Size = UDim2.new(1, 0, 1, 0); Overlay.BackgroundTransparency = 1; Overlay.Visible = false local function drawLine(pos, size, parent) local l = Instance.new("Frame", parent); l.Position = pos; l.Size = size; l.BackgroundColor3 = Color3.new(1, 1, 1); l.BorderSizePixel = 0; l.ZIndex = 6 end -- Brackets local bS, bT = 60, 2 drawLine(UDim2.new(0, 30, 0, 30), UDim2.new(0, bS, 0, bT), Overlay) drawLine(UDim2.new(0, 30, 0, 30), UDim2.new(0, bT, 0, bS), Overlay) drawLine(UDim2.new(1, -30-bS, 0, 30), UDim2.new(0, bS, 0, bT), Overlay) drawLine(UDim2.new(1, -32, 0, 30), UDim2.new(0, bT, 0, bS), Overlay) drawLine(UDim2.new(0, 30, 1, -32), UDim2.new(0, bS, 0, bT), Overlay) drawLine(UDim2.new(0, 30, 1, -30-bS), UDim2.new(0, bT, 0, bS), Overlay) drawLine(UDim2.new(1, -30-bS, 1, -32), UDim2.new(0, bS, 0, bT), Overlay) drawLine(UDim2.new(1, -32, 1, -30-bS), UDim2.new(0, bT, 0, bS), Overlay) -- RESTORED CROSSHAIR (32px) local Crosshair = Instance.new("Frame", Overlay) Crosshair.Size = UDim2.new(0, 32, 0, 32); Crosshair.Position = UDim2.new(0.5, -16, 0.5, -16); Crosshair.BackgroundTransparency = 1 local cS, cT = 8, 1 drawLine(UDim2.new(0,0,0,0), UDim2.new(0,cS,0,cT), Crosshair); drawLine(UDim2.new(0,0,0,0), UDim2.new(0,cT,0,cS), Crosshair) drawLine(UDim2.new(1,-cS,0,0), UDim2.new(0,cS,0,cT), Crosshair); drawLine(UDim2.new(1,-cT,0,0), UDim2.new(0,cT,0,cS), Crosshair) drawLine(UDim2.new(0,0,1,-cT), UDim2.new(0,cS,0,cT), Crosshair); drawLine(UDim2.new(0,0,1,-cS), UDim2.new(0,cT,0,cS), Crosshair) drawLine(UDim2.new(1,-cS,1,-cT), UDim2.new(0,cS,0,cT), Crosshair); drawLine(UDim2.new(1,-cT,1,-cS), UDim2.new(0,cT,0,cS), Crosshair) local function vhsLabel(txt, pos, align, size) local l = Instance.new("TextLabel", Overlay); l.Size = UDim2.new(0, 250, 0, 50); l.Position = pos; l.BackgroundTransparency = 1; l.TextColor3 = Color3.new(1, 1, 1); l.Text = txt; l.Font = Enum.Font.Code; l.TextSize = size or 25; l.TextXAlignment = align; l.ZIndex = 6; return l end vhsLabel("PLAY ▶", UDim2.new(0, 60, 0, 50), "Left", 28) local timeStatus = vhsLabel("-- : --", UDim2.new(1, -310, 0, 50), "Right") local dateStamp = vhsLabel("", UDim2.new(0, 60, 1, -110), "Left", 22) local fCounter = vhsLabel("00:00:00:00", UDim2.new(1, -310, 1, -110), "Right") -- Vignette Logic local vigGradients = {} local function makeVig(size, pos, rot) local f = Instance.new("Frame", Overlay); f.Size = size; f.Position = pos; f.BorderSizePixel = 0; f.BackgroundColor3 = Color3.new(0,0,0) local g = Instance.new("UIGradient", f); g.Rotation = rot; table.insert(vigGradients, g) end makeVig(UDim2.new(1,0,0,180), UDim2.new(0,0,0,0), 90); makeVig(UDim2.new(1,0,0,180), UDim2.new(0,0,1,-180), -90) makeVig(UDim2.new(0,180,1,0), UDim2.new(0,0,0,0), 0); makeVig(UDim2.new(0,180,1,0), UDim2.new(1,-180,0,0), 180) local function updateVig(p) vigIntensity = p for _, g in pairs(vigGradients) do g.Transparency = NumberSequence.new({NumberSequenceKeypoint.new(0, 1 - vigIntensity), NumberSequenceKeypoint.new(1, 1)}) end end -- --- 2. MENU & SLIDERS --- local Controls = Instance.new("Frame", Gui); Controls.Size = UDim2.new(1, 0, 1, 0); Controls.BackgroundTransparency = 1; Controls.Visible = false local Menu = Instance.new("Frame", Gui); Menu.Size = UDim2.new(0, 160, 0, 260); Menu.Position = UDim2.new(1, -190, 0, 80); Menu.BackgroundColor3 = Color3.new(0,0,0); Menu.BackgroundTransparency = 0.3; Menu.Visible = false; Menu.ZIndex = 90; Instance.new("UICorner", Menu) local function slider(y, label, start, cb) local l = Instance.new("TextLabel", Menu); l.Size = UDim2.new(1,0,0,15); l.Position = UDim2.new(0,0,0,y); l.Text = label; l.TextColor3 = Color3.new(1,1,1); l.BackgroundTransparency = 1; l.TextSize = 11; l.Font = Enum.Font.Code; l.ZIndex = 91 local bar = Instance.new("Frame", Menu); bar.Size = UDim2.new(0.8, 0, 0, 2); bar.Position = UDim2.new(0.1, 0, 0, y+20); bar.BackgroundColor3 = Color3.new(0.3,0.3,0.3); bar.ZIndex = 91 local k = Instance.new("TextButton", bar); k.Size = UDim2.new(0, 24, 0, 24); k.Position = UDim2.new(start, -12, 0.5, -12); k.Text = ""; k.ZIndex = 92; Instance.new("UICorner", k).CornerRadius = UDim.new(1,0) local drag = false k.InputBegan:Connect(function(i) if i.UserInputType == Enum.UserInputType.Touch or i.UserInputType == Enum.UserInputType.MouseButton1 then drag = true; isInteractingUI = true end end) UserInputService.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.Touch or i.UserInputType == Enum.UserInputType.MouseButton1 then drag = false; isInteractingUI = false end end) RunService.RenderStepped:Connect(function() if drag then local p = math.clamp((UserInputService:GetMouseLocation().X - bar.AbsolutePosition.X) / bar.AbsoluteSize.X, 0, 1) k.Position = UDim2.new(p, -12, 0.5, -12); cb(p) end end) end slider(15, "FLY SPEED", 0.3, function(p) speed = 1 + (200 * p) end) slider(65, "FOV ZOOM", 0.5, function(p) fov = 20 + (100 * p) end) slider(115, "VIGNETTE", 0.65, updateVig); updateVig(0.65) -- --- 3. FLASHLIGHT (Saturn Ring) --- local LightModel = Instance.new("Part"); LightModel.Transparency = 1; LightModel.Anchored = true; LightModel.CanCollide = false; LightModel.Parent = camera local Core = Instance.new("SpotLight", LightModel); Core.Brightness = 12; Core.Range = 95; Core.Angle = 20; Core.Enabled = false local Ring = Instance.new("SpotLight", LightModel); Ring.Brightness = 3; Ring.Range = 95; Ring.Angle = 55; Ring.Enabled = false local LightBtn = Instance.new("TextButton", Menu); LightBtn.Size = UDim2.new(0.8, 0, 0, 35); LightBtn.Position = UDim2.new(0.1, 0, 0, 170); LightBtn.Text = "LIGHT: OFF"; LightBtn.Font = Enum.Font.Code; LightBtn.ZIndex = 95; Instance.new("UICorner", LightBtn) LightBtn.Activated:Connect(function() flashlightActive = not flashlightActive Core.Enabled, Ring.Enabled = flashlightActive, flashlightActive LightBtn.Text = flashlightActive and "LIGHT: ON" or "LIGHT: OFF" end) local Trigger = Instance.new("ImageButton", Gui); Trigger.Size = UDim2.new(0, 45, 0, 45); Trigger.Position = UDim2.new(1, -65, 0, 25); Trigger.BackgroundColor3 = Color3.new(0,0,0); Trigger.Image = "rbxassetid://6034292100"; Trigger.ZIndex = 100; Instance.new("UICorner", Trigger).CornerRadius = UDim.new(1, 0) Trigger.Activated:Connect(function() active = not active Overlay.Visible, Controls.Visible, Menu.Visible = active, active, active if active then dronePos = camera.CFrame.Position; camera.CameraType = Enum.CameraType.Scriptable else camera.CameraType = Enum.CameraType.Custom; moveVec = Vector3.new(0,0,0); Blur.Size = 0 end end) -- --- 4. ENGINE & TIMESTAMPS --- local startTime = tick() RunService.RenderStepped:Connect(function(dt) if not active then return end local now = os.date("*t") timeStatus.Text = string.format("%02d : %02d", now.hour, now.min) dateStamp.Text = string.format("PM %02d:%02d\n%s %02d.%d", now.hour > 12 and now.hour-12 or now.hour, now.min, os.date("%b"), now.day, now.year) local elapsed = tick() - startTime local mins = math.floor(elapsed / 60) local secs = math.floor(elapsed % 60) local mills = math.floor((elapsed * 100) % 100) fCounter.Text = string.format("00:%02d:%02d:%02d", mins, secs, mills) local rot = CFrame.Angles(0, math.rad(camRot.X), 0) * CFrame.Angles(math.rad(camRot.Y), 0, 0) local targetDir = (rot.LookVector * -moveVec.Z) + (rot.RightVector * moveVec.X) local lerpFactor = (targetDir.Magnitude > 0) and 0.08 or 0.04 currentVelocity = currentVelocity:Lerp(targetDir * speed, lerpFactor) local rotDelta = (camRot - lastRot).Magnitude Blur.Size = math.clamp((currentVelocity.Magnitude/10) + (rotDelta*2), 0, 18) lastRot = camRot tiltAngle = math.lerp(tiltAngle, -moveVec.X * 15, 0.05) dronePos = dronePos + (currentVelocity * dt) camera.FieldOfView = fov camera.CFrame = CFrame.new(dronePos) * rot * CFrame.Angles(0, 0, math.rad(tiltAngle)) LightModel.CFrame = camera.CFrame end) local activeButtons = {} local function padBtn(pos, txt, vec) local b = Instance.new("TextButton", Controls); b.Size = UDim2.new(0, 70, 0, 70); b.Position = pos; b.BackgroundColor3 = Color3.new(0,0,0); b.BackgroundTransparency = 0.5; b.TextColor3 = Color3.new(1,1,1); b.Text = txt; b.Font = Enum.Font.GothamBold; b.TextScaled = true; Instance.new("UICorner", b).CornerRadius = UDim.new(1, 0) b.InputBegan:Connect(function(io) if io.UserInputType == Enum.UserInputType.Touch or io.UserInputType == Enum.UserInputType.MouseButton1 then if not activeButtons[txt] then activeButtons[txt] = true; moveVec = moveVec + vec end end end) b.InputEnded:Connect(function() if activeButtons[txt] then activeButtons[txt] = nil; moveVec = moveVec - vec end end) end padBtn(UDim2.new(0, 90, 1, -220), "↑", Vector3.new(0,0,-1)) padBtn(UDim2.new(0, 90, 1, -80), "↓", Vector3.new(0,0,1)) padBtn(UDim2.new(0, 20, 1, -150), "←", Vector3.new(-1,0,0)) padBtn(UDim2.new(0, 160, 1, -150), "→", Vector3.new(1,0,0)) UserInputService.InputChanged:Connect(function(i) if active and i.UserInputType == Enum.UserInputType.Touch and not isInteractingUI then camRot = camRot - Vector2.new(i.Delta.X * 0.4, i.Delta.Y * 0.4) end end)