
KeylessUniversal

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "AnimationCaptureGui"
screenGui.Parent = player:WaitForChild("PlayerGui")
-- Main Frame
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 400, 0, 250)
mainFrame.Position = UDim2.new(0.5, -200, 0.5, -125)
mainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui
-- UI Corner for rounded edges
local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, 10)
uiCorner.Parent = mainFrame
-- Title Label
local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, 0, 0, 30)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "Animation Asset ID Capture"
titleLabel.Font = Enum.Font.SourceSansBold
titleLabel.TextSize = 20
titleLabel.TextColor3 = Color3.new(1, 1, 1)
titleLabel.Parent = mainFrame
-- Minimize Button
local minimizeButton = Instance.new("TextButton")
minimizeButton.Size = UDim2.new(0, 30, 0, 30)
minimizeButton.Position = UDim2.new(1, -35, 0, 0)
minimizeButton.Text = "-"
minimizeButton.Font = Enum.Font.SourceSansBold
minimizeButton.TextSize = 24
minimizeButton.TextColor3 = Color3.new(1, 1, 1)
minimizeButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
minimizeButton.Parent = mainFrame
-- Container Frame for toggling visibility
local containerFrame = Instance.new("Frame")
containerFrame.Size = UDim2.new(1, 0, 1, -30)
containerFrame.Position = UDim2.new(0, 0, 0, 30)
containerFrame.BackgroundTransparency = 1
containerFrame.Parent = mainFrame
-- Toggle Capture Button
local toggleCaptureButton = Instance.new("TextButton")
toggleCaptureButton.Size = UDim2.new(0, 150, 0, 40)
toggleCaptureButton.Position = UDim2.new(0, 10, 0, 10)
toggleCaptureButton.Text = "Start Capture"
toggleCaptureButton.Font = Enum.Font.SourceSansBold
toggleCaptureButton.TextSize = 18
toggleCaptureButton.TextColor3 = Color3.new(1, 1, 1)
toggleCaptureButton.BackgroundColor3 = Color3.fromRGB(70, 130, 180)
toggleCaptureButton.Parent = containerFrame
-- Input TextBox for animation ID
local animationInput = Instance.new("TextBox")
animationInput.Size = UDim2.new(0, 180, 0, 40)
animationInput.Position = UDim2.new(0, 10, 0, 60)
animationInput.PlaceholderText = "Enter Animation Asset ID"
animationInput.ClearTextOnFocus = false
animationInput.Font = Enum.Font.SourceSans
animationInput.TextSize = 18
animationInput.TextColor3 = Color3.new(1, 1, 1)
animationInput.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
animationInput.Parent = containerFrame
-- Play Button
local playButton = Instance.new("TextButton")
playButton.Size = UDim2.new(0, 60, 0, 40)
playButton.Position = UDim2.new(0, 200, 0, 60)
playButton.Text = "Play"
playButton.Font = Enum.Font.SourceSansBold
playButton.TextSize = 18
playButton.TextColor3 = Color3.new(1, 1, 1)
playButton.BackgroundColor3 = Color3.fromRGB(70, 130, 180)
playButton.Parent = containerFrame
-- Frame for animation list
local listFrame = Instance.new("ScrollingFrame")
listFrame.Size = UDim2.new(0, 170, 1, -20)
listFrame.Position = UDim2.new(1, -180, 0, 10)
listFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
listFrame.BorderSizePixel = 0
listFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
listFrame.ScrollBarThickness = 6
listFrame.Parent = containerFrame
local listUIGrid = Instance.new("UIListLayout")
listUIGrid.Padding = UDim.new(0, 5)
listUIGrid.SortOrder = Enum.SortOrder.LayoutOrder
listUIGrid.Parent = listFrame
local listUICorner = Instance.new("UICorner")
listUICorner.CornerRadius = UDim.new(0, 8)
listUICorner.Parent = listFrame
-- Variables for capture state and animation list
local capturing = false
local capturedAnimations = {}
-- Function to add animation ID to list GUI
local function addAnimationToList(animId)
if capturedAnimations[animId] then return end
capturedAnimations[animId] = true
local itemFrame = Instance.new("Frame")
itemFrame.Size = UDim2.new(1, -10, 0, 40)
itemFrame.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
itemFrame.Parent = listFrame
local itemUICorner = Instance.new("UICorner")
itemUICorner.CornerRadius = UDim.new(0, 6)
itemUICorner.Parent = itemFrame
local animLabel = Instance.new("TextLabel")
animLabel.Size = UDim2.new(0.7, 0, 1, 0)
animLabel.Position = UDim2.new(0, 5, 0, 0)
animLabel.Text = animId
animLabel.Font = Enum.Font.SourceSans
animLabel.TextSize = 16
animLabel.TextColor3 = Color3.new(1, 1, 1)
animLabel.BackgroundTransparency = 1
animLabel.TextTruncate = Enum.TextTruncate.AtEnd
animLabel.Parent = itemFrame
local copyButton = Instance.new("TextButton")
copyButton.Size = UDim2.new(0.25, -10, 0.7, 0)
copyButton.Position = UDim2.new(0.75, 0, 0.15, 0)
copyButton.Text = "Copy"
copyButton.Font = Enum.Font.SourceSansBold
copyButton.TextSize = 14
copyButton.TextColor3 = Color3.new(1, 1, 1)
copyButton.BackgroundColor3 = Color3.fromRGB(70, 130, 180)
copyButton.Parent = itemFrame
copyButton.MouseButton1Click:Connect(function()
setclipboard(animId)
end)
-- Update CanvasSize to fit all items
listFrame.CanvasSize = UDim2.new(0, 0, 0, listUIGrid.AbsoluteContentSize.Y)
end
-- Function to play animation by asset ID
local function playAnimationById(animId)
if not animId or animId == "" then return end
local anim = Instance.new("Animation")
anim.AnimationId = "rbxassetid://"..animId
local animTrack = humanoid:LoadAnimation(anim)
animTrack:Play()
-- Optionally stop after some time or on next play, but keep simple here
end
-- Capture animation IDs when playing on character
local function onAnimationPlayed(track)
if not capturing then return end
local animId = track.Animation.AnimationId
-- AnimationId is a string like "rbxassetid://12345678"
local id = animId:match("%d+")
if id then
addAnimationToList(id)
end
end
-- Connect to humanoid.AnimationPlayed event
local animationConnection
-- Toggle capture button logic
toggleCaptureButton.MouseButton1Click:Connect(function()
capturing = not capturing
if capturing then
toggleCaptureButton.Text = "Stop Capture"
animationConnection = humanoid.AnimationPlayed:Connect(onAnimationPlayed)
else
toggleCaptureButton.Text = "Start Capture"
if animationConnection then
animationConnection:Disconnect()
animationConnection = nil
end
end
end)
-- Play button logic
playButton.MouseButton1Click:Connect(function()
local animId = animationInput.Text
playAnimationById(animId)
end)
-- Minimize/maximize logic
local minimized = false
minimizeButton.MouseButton1Click:Connect(function()
minimized = not minimized
if minimized then
containerFrame.Visible = false
mainFrame.Size = UDim2.new(0, 400, 0, 30)
minimizeButton.Text = "+"
else
containerFrame.Visible = true
mainFrame.Size = UDim2.new(0, 400, 0, 250)
minimizeButton.Text = "-"
end
end)
-- Update character and humanoid references if character respawns
player.CharacterAdded:Connect(function(char)
character = char
humanoid = character:WaitForChild("Humanoid")
if capturing and animationConnection then
animationConnection:Disconnect()
animationConnection = humanoid.AnimationPlayed:Connect(onAnimationPlayed)
end
end)



asaaa