-- 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)