spy on randos cctv lol
Key RequiredUniversal

spy on randos cctv lol

Universal Scriptgentgent 3.6K views 162 executesUpdated Jan 11, 2025
0.0/ 5(1 votes)
010% Positive
Lua Script•315 lines (11055 chars)
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;

Features & Information

spy on ppl rotate cameras idk camera cctv
#cctv#camera#spy

Community Comments (2)

danisrndanisrnJan 11, 2025(edited)

what game

gentgentJan 11, 2025(edited)

its universal dumbo

More Scripts for Universal Scripts