Animation Logger
Key RequiredUniversal

Animation Logger

Universal ScriptWaveStoragWaveStorag 30.4K views 599 executesUpdated May 19, 2024
5.0/ 5(6 votes)
60100% Positive
Lua Script•249 lines (8617 chars)
-- Made by WaveStorag and ChatGPT
-- Upload: 19/5/2024 | Update: 21/5/2024

game:GetService("StarterGui"):SetCore("SendNotification", {
    Title = "Thx for using🤑",
    Text = "Made by WaveStorag",
    Duration = 15,
    Icon = "rbxassetid://17395172104"
})

local gui = Instance.new("ScreenGui")
gui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui")

local frame = Instance.new("Frame")
frame.Size = UDim2.new(0.315, 0, 0.4, 0)
frame.Position = UDim2.new(0.350, 0, 0.3, 0)
frame.BackgroundColor3 = Color3.new(0, 0, 0)
frame.BorderSizePixel = 0
frame.Parent = gui
frame.Draggable = true
frame.Active = true

local topBar = Instance.new("Frame")
topBar.Size = UDim2.new(1.0017, 0, 0, 30)
topBar.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
topBar.BorderSizePixel = 0
topBar.Parent = frame

local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -365, 1, 0)
titleLabel.Position = UDim2.new(0, 0, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "Animation Logger"
titleLabel.Font = Enum.Font.SourceSans
titleLabel.TextColor3 = Color3.new(1, 1, 1)
titleLabel.TextSize = 20
titleLabel.Parent = topBar

local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Size = UDim2.new(1, 0, 1, -30)
scrollFrame.Position = UDim2.new(0, 0, 0, 30)
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFrame.ScrollBarThickness = 10
scrollFrame.Parent = frame
scrollFrame.BackgroundColor3 = Color3.new(0.1, 0.1, 0.1)

local logLayout = Instance.new("UIListLayout")
logLayout.Parent = scrollFrame
logLayout.SortOrder = Enum.SortOrder.LayoutOrder

local loggedAnimations = {}
local isCopyingAsLinkEnabled = false
local originalColor = Color3.new(0.2, 0.2, 0.2)
local toggleColor = Color3.new(0, 1, 0)

local function logAnimation(animationName, animationId)
    if loggedAnimations[animationId] then
        return
    end
    
    loggedAnimations[animationId] = true
    
    local numericId = tonumber(animationId:match("%d+"))

    local logEntry = Instance.new("TextButton")
    logEntry.Size = UDim2.new(1, -10, 0, 60)
    logEntry.BackgroundColor3 = originalColor
    local linkStatus = isCopyingAsLinkEnabled and "Enabled" or "Disabled"
    logEntry.Text = string.format("%s\nAnimation ID: %d\nCopy as link: %s", animationName, numericId, linkStatus)
    logEntry.TextWrapped = true
    logEntry.Font = Enum.Font.SourceSans
    logEntry.TextColor3 = Color3.new(1, 1, 1)
    logEntry.TextSize = 22
    logEntry.Parent = scrollFrame

    logEntry.MouseButton1Click:Connect(function()
        if isCopyingAsLinkEnabled then
            local link = "https://www.roblox.com/library/" .. numericId
            setclipboard(link)
        else
            setclipboard(tostring(numericId))
        end
    end)

    scrollFrame.CanvasSize = UDim2.new(0, 0, 0, logLayout.AbsoluteContentSize.Y)
end

logLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    scrollFrame.CanvasSize = UDim2.new(0, 0, 0, logLayout.AbsoluteContentSize.Y)
end)

local function onAnimationPlayed(animationTrack)
    local animation = animationTrack.Animation
    if animation then
        local animationId = animation.AnimationId
        local animationName = animation.Name or "Unknown Animation"
        logAnimation(animationName, animationId, isCopyingAsLinkEnabled)
    end
end

local function trackPlayerAnimations()
    local player = game.Players.LocalPlayer
    local character = player.Character or player.CharacterAdded:Wait()
    local humanoid = character:WaitForChild("Humanoid")
    
    humanoid.AnimationPlayed:Connect(onAnimationPlayed)
end

trackPlayerAnimations()

local xButton = Instance.new("TextButton")
xButton.Size = UDim2.new(0, 30, 0, 30)
xButton.Position = UDim2.new(1, -30, 0, 0)
xButton.BackgroundColor3 = Color3.new(1, 0, 0)
xButton.Text = "X"
xButton.TextColor3 = Color3.new(1, 1, 1)
xButton.TextSize = 24
xButton.Font = Enum.Font.SourceSans
xButton.BackgroundTransparency = 1
xButton.Parent = topBar

xButton.MouseButton1Click:Connect(function()
    gui:Destroy()
end)

local minimizeButton = Instance.new("TextButton")
minimizeButton.Size = UDim2.new(0, 30, 0, 30)
minimizeButton.Position = UDim2.new(1, -60, 0, 0)
minimizeButton.BackgroundColor3 = Color3.new(0, 0, 1)
minimizeButton.Text = "–"
minimizeButton.TextColor3 = Color3.new(1, 1, 1)
minimizeButton.TextSize = 24
minimizeButton.Font = Enum.Font.SourceSans
minimizeButton.BackgroundTransparency = 1
minimizeButton.Parent = topBar

local additionalGUI = Instance.new("Frame")
additionalGUI.Size = UDim2.new(0.5, 0, 1, 0)
additionalGUI.Position = UDim2.new(-0.53, 0, 0, 0)
additionalGUI.BackgroundColor3 = Color3.fromRGB(25, 25, 25)
additionalGUI.BorderSizePixel = 0
additionalGUI.Visible = false
additionalGUI.Parent = frame

local settingsTopBar = Instance.new("Frame")
settingsTopBar.Size = UDim2.new(1, 0, 0, 30)
settingsTopBar.BackgroundColor3 = Color3.new(0.3, 0.3, 0.3)
settingsTopBar.BorderSizePixel = 0
settingsTopBar.Parent = additionalGUI

local settingsLabel = Instance.new("TextLabel")
settingsLabel.Size = UDim2.new(1, 0, 0, 30)
settingsLabel.Position = UDim2.new(0, 0, 0, 0)
settingsLabel.BackgroundTransparency = 1
settingsLabel.Text = "Settings"
settingsLabel.Font = Enum.Font.SourceSans
settingsLabel.TextColor3 = Color3.new(1, 1, 1)
settingsLabel.TextSize = 20
settingsLabel.Parent = additionalGUI

local clearButton = Instance.new("TextButton")
clearButton.Size = UDim2.new(0.95, 0, 0, 30)
clearButton.Position = UDim2.new(0.023, 0, 0, 40)
clearButton.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
clearButton.Text = "Clear All"
clearButton.TextColor3 = Color3.new(1, 1, 1)
clearButton.TextSize = 18
clearButton.Font = Enum.Font.SourceSans
clearButton.Parent = additionalGUI

local optionalSettingToggle = Instance.new("TextButton")
optionalSettingToggle.Size = UDim2.new(0.95, 0, 0, 30)
optionalSettingToggle.Position = UDim2.new(0.023, 0, 0, 80)
optionalSettingToggle.BackgroundColor3 = Color3.new(0.2, 0.2, 0.2)
optionalSettingToggle.Text = "Copy as link"
optionalSettingToggle.TextColor3 = Color3.new(1, 1, 1)
optionalSettingToggle.TextSize = 18
optionalSettingToggle.Font = Enum.Font.SourceSans
optionalSettingToggle.Parent = additionalGUI

local toggleButton = Instance.new("ImageButton")
toggleButton.Size = UDim2.new(0, 30, 0, 30)
toggleButton.Position = UDim2.new(0.002, 0, 0, 0)
toggleButton.BackgroundTransparency = 1
toggleButton.Image = "rbxassetid://11932591062"
toggleButton.Parent = topBar

toggleButton.MouseButton1Click:Connect(function()
    additionalGUI.Visible = not additionalGUI.Visible
end)

local isMinimized = false
local originalSize = frame.Size
local originalTitlePosition = titleLabel.Position

minimizeButton.MouseButton1Click:Connect(function()
    isMinimized = not isMinimized
    if isMinimized then
        minimizeButton.Text = "+"
        frame.Size = UDim2.new(originalSize.X.Scale, originalSize.X.Offset, 0, 30)
scrollFrame.Visible = false
        additionalGUI.Visible = false
        toggleButton.Visible = false
        titleLabel.Position = UDim2.new(originalTitlePosition.X.Scale, originalTitlePosition.X.Offset - 20, originalTitlePosition.Y.Scale, originalTitlePosition.Y.Offset)
    else
        minimizeButton.Text = "–"
        frame.Size = originalSize
        scrollFrame.Visible = true
        toggleButton.Visible = true
        titleLabel.Position = originalTitlePosition
    end
end)

clearButton.MouseButton1Click:Connect(function()
    for _, child in ipairs(scrollFrame:GetChildren()) do
        if child:IsA("TextButton") then
            child:Destroy()
        end
    end
    loggedAnimations = {}
    scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
end)

local function toggleOptionalSetting()
    isCopyingAsLinkEnabled = not isCopyingAsLinkEnabled
    optionalSettingToggle.BackgroundColor3 = isCopyingAsLinkEnabled and toggleColor or originalColor
    print("Copying as link " .. (isCopyingAsLinkEnabled and "enabled" or "disabled"))
end

optionalSettingToggle.MouseButton1Click:Connect(toggleOptionalSetting)

local function onAnimationPlayed(animationTrack)
    local animation = animationTrack.Animation
    if animation then
        local animationId = animation.AnimationId
        local animationName = animation.Name or "Unknown Animation"
        logAnimation(animationName, animationId)
    end
end

local function trackPlayerAnimations()
    local player = game.Players.LocalPlayer
    local character = player.Character or player.CharacterAdded:Wait()
    local humanoid = character:WaitForChild("Humanoid")
    
    humanoid.AnimationPlayed:Connect(onAnimationPlayed)
end

trackPlayerAnimations()

Features & Information

This script will log the animation from player, maybe work all game This script made by me and ChatGPT The date i upload: 19/05/2024 Update is release now🔥🔥 21/5/2024 SMALLEST CHANGELOG: add Settings add copy as a link button and some shet💀
#Log#Animation#WaveStorag#Logger#Spy

Community Comments (9)

playvoraplayvoraMay 20, 2024(edited)

thx daddy now i can steal doors anim

WaveStoragWaveStoragMay 20, 2024(edited)

@snapdragon lol

yooooooyooooooOct 16, 2024(edited)

make screengui to dissapear on res*ing like: gui.ResetOnS* = false

toofoolfortooltoofoolfortoolNov 5, 2024(edited)

How to use the pastebin?

coneh141coneh141Feb 17, 2025(edited)

yo it's actually good now i can steal the jerk off animations for my own scripts

DeathPortDeathPortMar 10, 2025(edited)

dawg why do you want to jerk off, also its just an guitar anim from like 2011 - 2015, not no jerking off.

Danielhightower527Danielhightower527Aug 25, 2025

I used your script and asked chat chat gpt to add a button that plays the animation.

Danielhightower527Danielhightower527Aug 25, 2025

pov when you start a script you saw on your expector and you see this "Thx for using🤑"

Danielhightower527Danielhightower527Aug 25, 2025

*executor*

More Scripts for Universal Scripts