
Key RequiredUniversal

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;



what game
its universal dumbo