local G2L = {}; -- StarterGui.CCTVGui G2L["1"] = Instance.new("ScreenGui", game:GetService("Players").LocalPlayer:WaitForChild("PlayerGui")); G2L["1"]["Name"] = [[CCTVGui]]; G2L["1"]["ZIndexBehavior"] = Enum.ZIndexBehavior.Sibling; -- StarterGui.CCTVGui.MainFrame G2L["2"] = Instance.new("Frame", G2L["1"]); G2L["2"]["BorderSizePixel"] = 5; G2L["2"]["BackgroundColor3"] = Color3.fromRGB(100, 100, 100); G2L["2"]["Size"] = UDim2.new(0, 782, 0, 456); G2L["2"]["Position"] = UDim2.new(0.18589, 0, 0.08829, 0); G2L["2"]["BorderColor3"] = Color3.fromRGB(141, 141, 141); G2L["2"]["Name"] = [[MainFrame]]; -- StarterGui.CCTVGui.MainFrame.title lmao G2L["3"] = Instance.new("TextLabel", G2L["2"]); G2L["3"]["TextWrapped"] = true; G2L["3"]["TextStrokeTransparency"] = 0; G2L["3"]["BorderSizePixel"] = 0; G2L["3"]["TextScaled"] = true; G2L["3"]["BackgroundColor3"] = Color3.fromRGB(255, 255, 255); G2L["3"]["TextSize"] = 14; G2L["3"]["FontFace"] = Font.new([[rbxasset://fonts/families/FredokaOne.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); G2L["3"]["TextColor3"] = Color3.fromRGB(255, 255, 255); G2L["3"]["BackgroundTransparency"] = 1; G2L["3"]["RichText"] = true; G2L["3"]["Size"] = UDim2.new(0, 413, 0, 104); G2L["3"]["BorderColor3"] = Color3.fromRGB(0, 0, 0); G2L["3"]["Text"] = [[spy on randos hub (Beta)]]; G2L["3"]["Name"] = [[title lmao]]; G2L["3"]["Position"] = UDim2.new(0.42711, 0, 0.66009, 0); -- StarterGui.CCTVGui.MainFrame.CreateCamera G2L["4"] = Instance.new("TextButton", G2L["2"]); G2L["4"]["TextWrapped"] = true; G2L["4"]["BorderSizePixel"] = 5; G2L["4"]["TextSize"] = 14; G2L["4"]["TextColor3"] = Color3.fromRGB(255, 255, 255); G2L["4"]["TextScaled"] = true; G2L["4"]["BackgroundColor3"] = Color3.fromRGB(57, 57, 57); G2L["4"]["FontFace"] = Font.new([[rbxasset://fonts/families/Jura.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); G2L["4"]["RichText"] = true; G2L["4"]["Size"] = UDim2.new(0, 273, 0, 77); G2L["4"]["Name"] = [[CreateCamera]]; G2L["4"]["BorderColor3"] = Color3.fromRGB(0, 0, 0); G2L["4"]["Text"] = [[Create Camera]]; G2L["4"]["Position"] = UDim2.new(0.03708, 0, 0.19956, 0); -- StarterGui.CCTVGui.MainFrame.RotateCamera G2L["5"] = Instance.new("TextButton", G2L["2"]); G2L["5"]["TextWrapped"] = true; G2L["5"]["BorderSizePixel"] = 5; G2L["5"]["TextSize"] = 14; G2L["5"]["TextColor3"] = Color3.fromRGB(255, 255, 255); G2L["5"]["TextScaled"] = true; G2L["5"]["BackgroundColor3"] = Color3.fromRGB(57, 57, 57); G2L["5"]["FontFace"] = Font.new([[rbxasset://fonts/families/Jura.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); G2L["5"]["RichText"] = true; G2L["5"]["Size"] = UDim2.new(0, 273, 0, 77); G2L["5"]["Name"] = [[RotateCamera]]; G2L["5"]["BorderColor3"] = Color3.fromRGB(0, 0, 0); G2L["5"]["Text"] = [[Rotate Camera]]; G2L["5"]["Position"] = UDim2.new(0.42711, 0, 0.19956, 0); -- StarterGui.CCTVGui.MainFrame.DeleteCamera G2L["6"] = Instance.new("TextButton", G2L["2"]); G2L["6"]["TextWrapped"] = true; G2L["6"]["BorderSizePixel"] = 5; G2L["6"]["TextSize"] = 14; G2L["6"]["TextColor3"] = Color3.fromRGB(255, 255, 255); G2L["6"]["TextScaled"] = true; G2L["6"]["BackgroundColor3"] = Color3.fromRGB(57, 57, 57); G2L["6"]["FontFace"] = Font.new([[rbxasset://fonts/families/Jura.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); G2L["6"]["RichText"] = true; G2L["6"]["Size"] = UDim2.new(0, 273, 0, 77); G2L["6"]["Name"] = [[DeleteCamera]]; G2L["6"]["BorderColor3"] = Color3.fromRGB(0, 0, 0); G2L["6"]["Text"] = [[Delete Camera]]; G2L["6"]["Position"] = UDim2.new(0.03708, 0, 0.44518, 0); -- StarterGui.CCTVGui.MainFrame.DeleteAllCameras G2L["7"] = Instance.new("TextButton", G2L["2"]); G2L["7"]["TextWrapped"] = true; G2L["7"]["BorderSizePixel"] = 5; G2L["7"]["TextSize"] = 14; G2L["7"]["TextColor3"] = Color3.fromRGB(255, 255, 255); G2L["7"]["TextScaled"] = true; G2L["7"]["BackgroundColor3"] = Color3.fromRGB(57, 57, 57); G2L["7"]["FontFace"] = Font.new([[rbxasset://fonts/families/Jura.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); G2L["7"]["RichText"] = true; G2L["7"]["Size"] = UDim2.new(0, 273, 0, 77); G2L["7"]["Name"] = [[DeleteAllCameras]]; G2L["7"]["BorderColor3"] = Color3.fromRGB(0, 0, 0); G2L["7"]["Text"] = [[Delete all cameras]]; G2L["7"]["Position"] = UDim2.new(0.42711, 0, 0.44518, 0); -- StarterGui.CCTVGui.MainFrame.ViewCameras G2L["8"] = Instance.new("TextButton", G2L["2"]); G2L["8"]["TextWrapped"] = true; G2L["8"]["BorderSizePixel"] = 5; G2L["8"]["TextSize"] = 14; G2L["8"]["TextColor3"] = Color3.fromRGB(255, 255, 255); G2L["8"]["TextScaled"] = true; G2L["8"]["BackgroundColor3"] = Color3.fromRGB(57, 57, 57); G2L["8"]["FontFace"] = Font.new([[rbxasset://fonts/families/Jura.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); G2L["8"]["RichText"] = true; G2L["8"]["Size"] = UDim2.new(0, 273, 0, 77); G2L["8"]["Name"] = [[ViewCameras]]; G2L["8"]["BorderColor3"] = Color3.fromRGB(0, 0, 0); G2L["8"]["Text"] = [[View Cameras]]; G2L["8"]["Position"] = UDim2.new(0.03708, 0, 0.7193, 0); -- StarterGui.CCTVGui.ViewingFrame G2L["9"] = Instance.new("Frame", G2L["1"]); G2L["9"]["BorderSizePixel"] = 5; G2L["9"]["BackgroundColor3"] = Color3.fromRGB(100, 100, 100); G2L["9"]["Size"] = UDim2.new(0, 1451, 0, 803); G2L["9"]["Position"] = UDim2.new(0, 0, -0, 0); G2L["9"]["BorderColor3"] = Color3.fromRGB(141, 141, 141); G2L["9"]["Name"] = [[ViewingFrame]]; G2L["9"]["BackgroundTransparency"] = 1; -- StarterGui.CCTVGui.ViewingFrame.PreviousCamera G2L["a"] = Instance.new("TextButton", G2L["9"]); G2L["a"]["TextWrapped"] = true; G2L["a"]["BorderSizePixel"] = 0; G2L["a"]["TextSize"] = 14; G2L["a"]["TextColor3"] = Color3.fromRGB(255, 255, 255); G2L["a"]["TextScaled"] = true; G2L["a"]["BackgroundColor3"] = Color3.fromRGB(90, 90, 90); G2L["a"]["FontFace"] = Font.new([[rbxasset://fonts/families/PermanentMarker.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); G2L["a"]["Size"] = UDim2.new(0, 167, 0, 88); G2L["a"]["BackgroundTransparency"] = 1; G2L["a"]["Name"] = [[PreviousCamera]]; G2L["a"]["BorderColor3"] = Color3.fromRGB(0, 0, 0); G2L["a"]["Text"] = [[<]]; G2L["a"]["Position"] = UDim2.new(0.24655, 0, 0.80803, 0); -- StarterGui.CCTVGui.ViewingFrame.NextCamera G2L["b"] = Instance.new("TextButton", G2L["9"]); G2L["b"]["TextWrapped"] = true; G2L["b"]["BorderSizePixel"] = 0; G2L["b"]["TextSize"] = 14; G2L["b"]["TextColor3"] = Color3.fromRGB(255, 255, 255); G2L["b"]["TextScaled"] = true; G2L["b"]["BackgroundColor3"] = Color3.fromRGB(90, 90, 90); G2L["b"]["FontFace"] = Font.new([[rbxasset://fonts/families/PermanentMarker.json]], Enum.FontWeight.Regular, Enum.FontStyle.Normal); G2L["b"]["Size"] = UDim2.new(0, 167, 0, 88); G2L["b"]["BackgroundTransparency"] = 1; G2L["b"]["Name"] = [[NextCamera]]; G2L["b"]["BorderColor3"] = Color3.fromRGB(0, 0, 0); G2L["b"]["Text"] = [[>]]; G2L["b"]["Position"] = UDim2.new(0.59434, 0, 0.80803, 0); -- StarterGui.CCTVGui.LocalScript G2L["c"] = Instance.new("LocalScript", G2L["1"]); -- StarterGui.CCTVGui.LocalScript local function C_c() local script = G2L["c"]; -- Get services and player local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local Workspace = game:GetService("Workspace") local player = Players.LocalPlayer local mouse = player:GetMouse() -- GUI References local gui = script.Parent local mainFrame = gui:WaitForChild("MainFrame") local viewButton = mainFrame:WaitForChild("ViewCameras") -- Variables local cameras = {} local currentCameraIndex = 1 local viewingMode = false local guiVisible = true -- Function to toggle GUI visibility local function toggleGUI() guiVisible = not guiVisible mainFrame.Visible = guiVisible end -- Detect Left Control key press to toggle GUI UserInputService.InputBegan:Connect(function(input, isProcessed) if not isProcessed and input.KeyCode == Enum.KeyCode.LeftControl then toggleGUI() end end) -- Create Camera mainFrame:WaitForChild("CreateCamera").MouseButton1Click:Connect(function() local tool = Instance.new("Tool") tool.Name = "CreateCamera" tool.RequiresHandle = false tool.Parent = player.Backpack tool.Activated:Connect(function() local camera = Instance.new("Part") camera.Anchored = true camera.Size = Vector3.new(2, 1, 2) camera.Position = mouse.Hit.p camera.Name = "Camera" camera.Parent = Workspace local decal = Instance.new("Decal") decal.Texture = "rbxassetid://8666406942" decal.Face = Enum.NormalId.Front decal.Parent = camera table.insert(cameras, camera) end) end) -- Rotate Camera mainFrame:WaitForChild("RotateCamera").MouseButton1Click:Connect(function() local tool = Instance.new("Tool") tool.Name = "RotateCamera" tool.RequiresHandle = false tool.Parent = player.Backpack local isDragging = false local selectedCamera = nil tool.Activated:Connect(function() if mouse.Target and mouse.Target.Name == "Camera" then selectedCamera = mouse.Target isDragging = true else isDragging = false selectedCamera = nil end end) UserInputService.InputChanged:Connect(function(input) if isDragging and selectedCamera and input.UserInputType == Enum.UserInputType.MouseMovement then local rotationAmount = CFrame.Angles(0, math.rad(input.Delta.X), 0) selectedCamera.CFrame = selectedCamera.CFrame * rotationAmount end end) tool.Unequipped:Connect(function() isDragging = false selectedCamera = nil end) end) -- Delete Camera mainFrame:WaitForChild("DeleteCamera").MouseButton1Click:Connect(function() local tool = Instance.new("Tool") tool.Name = "DeleteCamera" tool.RequiresHandle = false tool.Parent = player.Backpack tool.Activated:Connect(function() if mouse.Target and mouse.Target.Name == "Camera" then table.remove(cameras, table.find(cameras, mouse.Target)) mouse.Target:Destroy() end end) end) -- Delete All Cameras mainFrame:WaitForChild("DeleteAllCameras").MouseButton1Click:Connect(function() for _, cam in ipairs(cameras) do cam:Destroy() end cameras = {} end) -- View Cameras viewButton.MouseButton1Click:Connect(function() viewingMode = not viewingMode if viewingMode and #cameras > 0 then Workspace.CurrentCamera.CameraType = Enum.CameraType.Scriptable Workspace.CurrentCamera.CFrame = cameras[currentCameraIndex].CFrame else Workspace.CurrentCamera.CameraType = Enum.CameraType.Custom end end) -- Camera Navigation using Left and Right Arrow Keys UserInputService.InputBegan:Connect(function(input, isProcessed) if not isProcessed and viewingMode and #cameras > 0 then if input.KeyCode == Enum.KeyCode.Right then currentCameraIndex = (currentCameraIndex % #cameras) + 1 Workspace.CurrentCamera.CFrame = cameras[currentCameraIndex].CFrame elseif input.KeyCode == Enum.KeyCode.Left then currentCameraIndex = (currentCameraIndex - 2) % #cameras + 1 Workspace.CurrentCamera.CFrame = cameras[currentCameraIndex].CFrame end end end) end; task.spawn(C_c); return G2L["1"], require;