
KeylessUniversal

local players = game:GetService("Players")
local player = players.LocalPlayer
local camera = workspace.CurrentCamera
local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local SoundService = game:GetService("SoundService")
local StarterGui = game:GetService("StarterGui")
local startSound = Instance.new("Sound")
startSound.SoundId = "rbxassetid://6026984224"
startSound.Volume = 1
startSound.Parent = SoundService
startSound:Play()
StarterGui:SetCore("SendNotification", {
Title = "Ejecutado Correctamente",
Text = "Creado por Max_xd811",
Duration = 4
})
local spectating = false
local index = 1
local playerList = {}
local lastTarget = nil
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = player:WaitForChild("PlayerGui")
screenGui.ResetOnSpawn = false
local frame = Instance.new("Frame", screenGui)
frame.Size = UDim2.new(0, 150, 0, 55)
frame.Position = UDim2.new(0.5, -75, 0.9, 0)
frame.BackgroundTransparency = 1
local nameLabel = Instance.new("TextLabel", frame)
nameLabel.Size = UDim2.new(1, 0, 0, 16)
nameLabel.Position = UDim2.new(0, 0, 0, -24)
nameLabel.BackgroundTransparency = 1
nameLabel.Text = "Nadie"
nameLabel.TextScaled = true
nameLabel.TextColor3 = Color3.fromRGB(255,255,255)
nameLabel.TextStrokeTransparency = 0
local closeBtn = Instance.new("TextButton", frame)
closeBtn.Size = UDim2.new(0, 20, 0, 20)
closeBtn.Position = UDim2.new(1, -20, 0, -24)
closeBtn.Text = "X"
closeBtn.BackgroundColor3 = Color3.fromRGB(200,0,0)
closeBtn.TextColor3 = Color3.fromRGB(255,255,255)
closeBtn.TextScaled = true
local prevBtn = Instance.new("TextButton", frame)
local toggleBtn = Instance.new("TextButton", frame)
local nextBtn = Instance.new("TextButton", frame)
prevBtn.Size = UDim2.new(0, 40, 1, 0)
toggleBtn.Size = UDim2.new(0, 70, 1, 0)
nextBtn.Size = UDim2.new(0, 40, 1, 0)
prevBtn.Position = UDim2.new(0, 0, 0, 0)
toggleBtn.Position = UDim2.new(0, 40, 0, 0)
nextBtn.Position = UDim2.new(0, 110, 0, 0)
prevBtn.Text = "◀"
nextBtn.Text = "▶"
toggleBtn.Text = "OFF"
prevBtn.TextScaled = true
nextBtn.TextScaled = true
toggleBtn.TextScaled = true
prevBtn.Font = Enum.Font.GothamBold
nextBtn.Font = Enum.Font.GothamBold
toggleBtn.Font = Enum.Font.GothamBold
local function updatePlayers()
playerList = {}
for _, plr in pairs(players:GetPlayers()) do
if plr ~= player then
table.insert(playerList, plr)
end
end
end
updatePlayers()
players.PlayerAdded:Connect(updatePlayers)
players.PlayerRemoving:Connect(updatePlayers)
local function updateName()
if spectating and playerList[index] then
nameLabel.Text = playerList[index].Name
else
nameLabel.Text = "Nadie"
end
end
local function spectate()
if #playerList == 0 then
updateName()
return
end
local target = playerList[index]
if target and target.Character and target.Character:FindFirstChild("Humanoid") then
camera.CameraType = Enum.CameraType.Custom
camera.CameraSubject = target.Character.Humanoid
lastTarget = target
end
updateName()
end
RunService.RenderStepped:Connect(function()
if spectating then
local target = playerList[index]
if target and target.Character and target.Character:FindFirstChild("Humanoid") then
if camera.CameraSubject ~= target.Character.Humanoid then
camera.CameraSubject = target.Character.Humanoid
end
end
end
end)
toggleBtn.MouseButton1Click:Connect(function()
spectating = not spectating
if spectating then
toggleBtn.Text = "ON"
if lastTarget then
for i, plr in ipairs(playerList) do
if plr == lastTarget then
index = i
break
end
end
end
spectate()
else
toggleBtn.Text = "OFF"
if player.Character and player.Character:FindFirstChild("Humanoid") then
camera.CameraSubject = player.Character.Humanoid
end
updateName()
end
end)
nextBtn.MouseButton1Click:Connect(function()
if spectating then
index += 1
if index > #playerList then
index = 1
end
spectate()
end
end)
prevBtn.MouseButton1Click:Connect(function()
if spectating then
index -= 1
if index < 1 then
index = #playerList
end
spectate()
end
end)
local dragging = false
local dragStart
local startPos
toggleBtn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
dragging = true
dragStart = input.Position
startPos = frame.Position
input.Changed:Connect(function()
if input.UserInputState == Enum.UserInputState.End then
dragging = false
end
end)
end
end)
UIS.InputChanged:Connect(function(input)
if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement
or input.UserInputType == Enum.UserInputType.Touch) then
local delta = input.Position - dragStart
frame.Position = UDim2.new(
startPos.X.Scale,
startPos.X.Offset + delta.X,
startPos.Y.Scale,
startPos.Y.Offset + delta.Y
)
end
end)
closeBtn.MouseButton1Click:Connect(function()
spectating = false
if player.Character and player.Character:FindFirstChild("Humanoid") then
camera.CameraSubject = player.Character.Humanoid
end
local closeSound = Instance.new("Sound")
closeSound.SoundId = "rbxassetid://139009780109934"
closeSound.Volume = 1
closeSound.Parent = SoundService
closeSound:Play()
local tweenInfo = TweenInfo.new(0.5)
for _, obj in pairs(frame:GetDescendants()) do
if obj:IsA("TextLabel") or obj:IsA("TextButton") then
TweenService:Create(obj, tweenInfo, {
TextTransparency = 1,
BackgroundTransparency = 1
}):Play()
end
end
wait(0.5)
screenGui:Destroy()
end)No comments yet for this script.



