
KeylessUniversal

-- Services
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local LocalPlayer = Players.LocalPlayer
local Mouse = LocalPlayer:GetMouse()
local Character = LocalPlayer.Character or LocalPlayer.CharacterAdded:Wait()
local MyHumanoid = Character:WaitForChild("Humanoid")
-- GUI Setup
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "AnimationSpyGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = LocalPlayer:WaitForChild("PlayerGui")
-- Main Frame
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 350, 0, 400)
mainFrame.Position = UDim2.new(0.5, -175, 0.5, -200)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui
local title = Instance.new("TextLabel")
title.Size = UDim2.new(1, 0, 0, 40)
title.BackgroundTransparency = 1
title.Text = "AnimationSpy"
title.Font = Enum.Font.GothamBold
title.TextColor3 = Color3.fromRGB(255, 255, 255)
title.TextScaled = true
title.Parent = mainFrame
local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, -20, 1, -80)
scrollFrame.Position = UDim2.new(0, 10, 0, 50)
scrollFrame.BackgroundTransparency = 1
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFrame.ScrollBarThickness = 4
scrollFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y
scrollFrame.Parent = mainFrame
local layout = Instance.new("UIListLayout")
layout.Padding = UDim.new(0, 5)
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Parent = scrollFrame
local helpButton = Instance.new("TextButton")
helpButton.Size = UDim2.new(0, 30, 0, 30)
helpButton.Position = UDim2.new(0, 10, 1, -40)
helpButton.Text = "?"
helpButton.Font = Enum.Font.GothamBold
helpButton.TextColor3 = Color3.new(1, 1, 1)
helpButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
helpButton.TextScaled = true
helpButton.Parent = mainFrame
local helpPanel = Instance.new("Frame")
helpPanel.Size = UDim2.new(0, 300, 0, 200)
helpPanel.Position = UDim2.new(0.5, -150, 0.5, -100)
helpPanel.Visible = false
helpPanel.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
helpPanel.ZIndex = 10
helpPanel.Parent = screenGui
local helpLabel = Instance.new("TextLabel")
helpLabel.Size = UDim2.new(1, -20, 1, -40)
helpLabel.Position = UDim2.new(0, 10, 0, 10)
helpLabel.BackgroundTransparency = 1
helpLabel.Text = [[
š® Keybinds:
š± Left Click = Play/Stop animation
š± Right Click = Rename animation
ā« Delete = Remove hovered animation
⨠Left Ctrl = Toggle GUI visibility
š Click Player = Spy their animations
ā Click '?' = Show/Hide this help menu
]]
helpLabel.TextWrapped = true
helpLabel.TextScaled = false
helpLabel.Font = Enum.Font.Gotham
helpLabel.TextColor3 = Color3.new(1, 1, 1)
helpLabel.TextSize = 14
helpLabel.TextYAlignment = Enum.TextYAlignment.Top
helpLabel.ZIndex = 11
helpLabel.Parent = helpPanel
local closeHelp = Instance.new("TextButton")
closeHelp.Size = UDim2.new(0, 30, 0, 30)
closeHelp.Position = UDim2.new(1, -35, 0, 5)
closeHelp.Text = "X"
closeHelp.BackgroundColor3 = Color3.fromRGB(80, 30, 30)
closeHelp.TextColor3 = Color3.new(1, 1, 1)
closeHelp.Font = Enum.Font.GothamBold
closeHelp.TextScaled = true
closeHelp.ZIndex = 11
closeHelp.Parent = helpPanel
closeHelp.MouseButton1Click:Connect(function()
helpPanel.Visible = false
end)
helpButton.MouseButton1Click:Connect(function()
helpPanel.Visible = not helpPanel.Visible
end)
-- Animation Handling
local animations = {}
local hoveredButton = nil
local function createTrack(animId)
local anim = Instance.new("Animation")
anim.AnimationId = animId
local track = MyHumanoid:LoadAnimation(anim)
track.Looped = true
return track
end
local function addAnimationButton(animId, humanoid)
if animations[animId] then return end
local button = Instance.new("TextButton")
button.Size = UDim2.new(1, 0, 0, 30)
button.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
button.TextColor3 = Color3.new(1, 1, 1)
button.Text = animId
button.Font = Enum.Font.Gotham
button.TextScaled = true
button.ClipsDescendants = true
button.Parent = scrollFrame
animations[animId] = {
track = nil,
playing = false,
humanoid = MyHumanoid, -- Use LocalPlayer's humanoid
button = button
}
button.MouseEnter:Connect(function()
hoveredButton = animId
end)
button.MouseLeave:Connect(function()
hoveredButton = nil
end)
button.MouseButton1Click:Connect(function()
local anim = animations[animId]
if anim.playing then
anim.track:Stop()
anim.track:Destroy()
anim.track = nil
anim.playing = false
button.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
else
anim.track = createTrack(animId)
anim.track:Play()
anim.playing = true
button.BackgroundColor3 = Color3.fromRGB(0, 170, 100)
end
end)
button.MouseButton2Click:Connect(function()
local renameBox = Instance.new("TextBox")
renameBox.Size = button.Size
renameBox.Position = button.Position
renameBox.Text = ""
renameBox.PlaceholderText = "Enter name"
renameBox.TextScaled = true
renameBox.ClearTextOnFocus = true
renameBox.Parent = button.Parent
button.Visible = false
renameBox.FocusLost:Connect(function(enter)
if enter and renameBox.Text ~= "" then
button.Text = renameBox.Text
end
button.Visible = true
renameBox:Destroy()
end)
renameBox:CaptureFocus()
end)
end
UserInputService.InputBegan:Connect(function(input, gp)
if gp then return end
if input.KeyCode == Enum.KeyCode.Delete and hoveredButton then
local anim = animations[hoveredButton]
if anim then
if anim.track then
anim.track:Stop()
anim.track:Destroy()
end
anim.button:Destroy()
animations[hoveredButton] = nil
hoveredButton = nil
end
elseif input.KeyCode == Enum.KeyCode.LeftControl then
screenGui.Enabled = not screenGui.Enabled
end
end)
-- Spy on humanoid animations
Mouse.Button1Down:Connect(function()
local target = Mouse.Target
if not target then return end
local model = target:FindFirstAncestorOfClass("Model")
if not model then return end
local humanoid = model:FindFirstChildWhichIsA("Humanoid")
if not humanoid then return end
local animator = humanoid:FindFirstChildWhichIsA("Animator")
if not animator then return end
for _, track in ipairs(animator:GetPlayingAnimationTracks()) do
if track.Animation and track.Animation.AnimationId then
addAnimationButton(track.Animation.AnimationId, humanoid)
end
end
end)
-- Handle character respawn
LocalPlayer.CharacterAdded:Connect(function(newChar)
Character = newChar
MyHumanoid = newChar:WaitForChild("Humanoid")
end)



mobile aint supported