pilby animation overhaul
Key Required

pilby animation overhaul

Regretevator [ ELEVATOR SIMULATOR ]imdisplayimdisplay 880 views 517 executesUpdated Jun 13, 2026
Unrated
00
Lua Script•188 lines (5087 chars)
local p = game.Players.LocalPlayer
local uis = game:GetService("UserInputService")
local ids = {
    idle1 = "rbxassetid://15500461676",
    idle2 = "rbxassetid://15500462591",
    walk = "rbxassetid://15532927612",
    jump = "rbxassetid://125750702",
    fall = "rbxassetid://180436148",
    sit = "rbxassetid://178130996",
    talk = "rbxassetid://15515461377",
    spray = "rbxassetid://15500463617",
    flash = "rbxassetid://15515552528"
}

local function go(c)
    local h = c:WaitForChild("Humanoid")
    local a = c:FindFirstChild("Animate")
    if a then
        a:Destroy()
    end
    local an = h:FindFirstChildOfClass("Animator")
    if an then
        an:Destroy()
    end
    an = Instance.new("Animator", h)
    local function load(id)
        local a = Instance.new("Animation")
        a.AnimationId = id
        return an:LoadAnimation(a)
    end
    local idle1 = load(ids.idle1)
    local idle2 = load(ids.idle2)
    local walk = load(ids.walk)
    local jump = load(ids.jump)
    local fall = load(ids.fall)
    local sit = load(ids.sit)
    local talk = load(ids.talk)
    local spray = load(ids.spray)
    local flash = load(ids.flash)
    local cur
    local doingAction = false
    local idleFlip = false
    local snd = Instance.new("Sound")
    snd.SoundId = "rbxassetid://80416058717151"
    snd.Volume = 2
    snd.Parent = c:WaitForChild("HumanoidRootPart")
    local function stopAll()
        if cur then
            cur:Stop()
        end
        snd:Stop()
        doingAction = false
    end
    local function play(track, looped)
        stopAll()
        cur = track
        cur.Looped = looped or false
        cur:Play()
    end
    local function playAction(track, withSound)
        stopAll()
        doingAction = true
        cur = track
        cur.Looped = false
        cur:Play()
        if withSound and cur == track then
            snd:Play()
        end
        cur.Stopped:Connect(
            function()
                if cur == track then
                    doingAction = false
                end
            end
        )
    end
    h.Running:Connect(
        function(speed)
            if doingAction and speed > 1 then
                stopAll()
            end

            if doingAction then
                return
            end

            if speed > 1 then
                play(walk, true)
            else
                idleFlip = not idleFlip
                play(idleFlip and idle1 or idle2, true)
            end
        end
    )
    h.Jumping:Connect(
        function()
            if doingAction then
                stopAll()
                return
            end
            play(jump, false)
        end
    )
    h.FreeFalling:Connect(
        function()
            if doingAction then
                return
            end
            play(fall, true)
        end
    )
    h.Seated:Connect(
        function()
            if doingAction then
                return
            end
            play(sit, true)
        end
    )
    local g = Instance.new("ScreenGui", p:WaitForChild("PlayerGui"))
    local function makeBtn(txt, x)
        local b = Instance.new("TextButton")
        b.Size = UDim2.new(0, 140, 0, 45)
        b.Position = UDim2.new(0, x, 0.75, 0)
        b.Text = txt
        b.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
        b.TextColor3 = Color3.new(1, 1, 1)
        b.Parent = g
        local d = false
        local di
        local ds
        local sp
        b.InputBegan:Connect(
            function(i)
                if i.UserInputType == Enum.UserInputType.MouseButton1 then
                    d = true
                    ds = i.Position
                    sp = b.Position
                    i.Changed:Connect(
                        function()
                            if i.UserInputState == Enum.UserInputState.End then
                                d = false
                            end
                        end
                    )
                end
            end
        )
        b.InputChanged:Connect(
            function(i)
                if i.UserInputType == Enum.UserInputType.MouseMovement then
                    di = i
                end
            end
        )
        uis.InputChanged:Connect(
            function(i)
                if i == di and d then
                    local delta = i.Position - ds
                    b.Position = UDim2.new(sp.X.Scale, sp.X.Offset + delta.X, sp.Y.Scale, sp.Y.Offset + delta.Y)
                end
            end
        )
        return b
    end
    local bTalk = makeBtn("Talk", 20)
    local bSpray = makeBtn("Spray", 180)
    local bFlash = makeBtn("Flash", 340)
    bTalk.MouseButton1Click:Connect(
        function()
            playAction(talk, true)
        end
    )
    bSpray.MouseButton1Click:Connect(
        function()
            playAction(spray, false)
        end
    )
    bFlash.MouseButton1Click:Connect(
        function()
            playAction(flash, false)
        end
    )
end
if p.Character then
    go(p.Character)
end
p.CharacterAdded:Connect(go)

Features & Information

changes your localplayer's animation to pilby (my beloved), includes their idle (+ old idle animation, thank god i had that id saved before the remake/rework), and walk animation also has a bonus that plays the talk animation (+ clientsided sound) and gui to play the npc's exclusive animations probably has more that i forgot but whatever.

Community Comments (1)

tuffyPuffa*tuffyPuffa*Jul 29, 2026

Pls update un*led gubby game pls if u do ur the goat

More Scripts for Regretevator [ ELEVATOR SIMULATOR ]