Fe master hand
Key RequiredUniversal

Fe master hand

Universal ScriptValueHatValueHat 3.6K views 546 executesUpdated Dec 9, 2025
5.0/ 5(6 votes)
60100% Positive
Lua Script•186 lines (5538 chars)
local KEY_MOVESET1 = Enum.KeyCode.Z
local KEY_MOVESET2 = Enum.KeyCode.X
 
local BUTTON1_IMAGE = "rbxassetid://72003920813541"
local BUTTON2_IMAGE = "rbxassetid://81473005801088"
 
local IdleAnimId = "rbxassetid://77423395801230"
local WalkAnimId = "rbxassetid://71439424797320"
 
local Move1AnimId = "rbxassetid://88992279344579"
local Move2AnimId = "rbxassetid://80401959620185"
 
local Move1Cooldown = 3
local Move2Cooldown = 5
 
------------------------------------------------------------
 
local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
 
local player = Players.LocalPlayer
 
------------------------------------------------------------
--        FUNCTION THAT RUNS YOUR ORIGINAL SCRIPT
------------------------------------------------------------
 
local function Setup(char)
 
    local humanoid = char:WaitForChild("Humanoid")
 
    ------------------------------------------------------------
    --      DISABLE DEFAULT ROBLOX ANIMATE SCRIPT
    ------------------------------------------------------------
    task.wait(0.2)
 
    local animate = char:FindFirstChild("Animate")
    if animate then
        animate.Disabled = true
    end
 
    ------------------------------------------------------------
    --             LOAD BASE ANIMATIONS (Idle / Walk)
    ------------------------------------------------------------
 
    local idle = Instance.new("Animation")
    idle.AnimationId = IdleAnimId
    local idleTrack = humanoid:LoadAnimation(idle)
    idleTrack.Looped = true
 
    local walk = Instance.new("Animation")
    walk.AnimationId = WalkAnimId
    local walkTrack = humanoid:LoadAnimation(walk)
    walkTrack.Looped = true
 
    idleTrack:Play()
 
    humanoid.Running:Connect(function(speed)
        if humanoid:GetAttribute("UsingMove") then return end
 
        if speed > 1 then
            if not walkTrack.IsPlaying then
                idleTrack:Stop()
                walkTrack:Play()
            end
        else
            if not idleTrack.IsPlaying then
                walkTrack:Stop()
                idleTrack:Play()
            end
        end
    end)
 
    ------------------------------------------------------------
    --              MOVESET (ABILITY) ANIMATIONS
    ------------------------------------------------------------
 
    local move1 = Instance.new("Animation")
    move1.AnimationId = Move1AnimId
    local move1Track = humanoid:LoadAnimation(move1)
    move1Track.Looped = false
 
    local move2 = Instance.new("Animation")
    move2.AnimationId = Move2AnimId
    local move2Track = humanoid:LoadAnimation(move2)
    move2Track.Looped = false
 
    local isUsingMove = false
    local move1Ready = true
    local move2Ready = true
 
    local function StartAbility(animationTrack, cooldown)
        if isUsingMove then return end
        if animationTrack == move1Track and not move1Ready then return end
        if animationTrack == move2Track and not move2Ready then return end
 
        isUsingMove = true
        humanoid:SetAttribute("UsingMove", true)
 
        idleTrack:Stop()
        walkTrack:Stop()
 
        animationTrack:Play()
 
        if animationTrack == move1Track then
            move1Ready = false
            task.delay(cooldown, function() move1Ready = true end)
        end
 
        if animationTrack == move2Track then
            move2Ready = false
            task.delay(cooldown, function() move2Ready = true end)
        end
 
        animationTrack.Stopped:Wait()
 
        isUsingMove = false
        humanoid:SetAttribute("UsingMove", false)
 
        if humanoid.MoveDirection.Magnitude > 0 then
            walkTrack:Play()
        else
            idleTrack:Play()
        end
    end
 
    PlayMove1 = function()
        StartAbility(move1Track, Move1Cooldown)
    end
 
    PlayMove2 = function()
        StartAbility(move2Track, Move2Cooldown)
    end
 
    ------------------------------------------------------------
    --                  PC KEYBOARD INPUT
    ------------------------------------------------------------
 
    UIS.InputBegan:Connect(function(input, gameProcessed)
        if gameProcessed then return end
 
        if input.KeyCode == KEY_MOVESET1 then
            PlayMove1()
        elseif input.KeyCode == KEY_MOVESET2 then
            PlayMove2()
        end
    end)
end
 
------------------------------------------------------------
--       MOBILE BUTTONS (YOUR ORIGINAL CODE)
------------------------------------------------------------
 
local function CreateButton(imageId, position, callback)
    local gui = player.PlayerGui:FindFirstChild("ScreenGui")
    if not gui then
        gui = Instance.new("ScreenGui", player.PlayerGui)
        gui.ResetOnSpawn = false
    end
 
    local button = Instance.new("ImageButton")
    button.Size = UDim2.new(0, 90, 0, 90)
    button.Position = position
    button.Image = imageId
    button.BackgroundTransparency = 1
    button.Parent = gui
    button.MouseButton1Click:Connect(callback)
    return button
end
 
CreateButton(BUTTON1_IMAGE, UDim2.new(0.05, 0, 0.75, 0), function()
    if PlayMove1 then PlayMove1() end
end)
 
CreateButton(BUTTON2_IMAGE, UDim2.new(0.17, 0, 0.75, 0), function()
    if PlayMove2 then PlayMove2() end
end)
 
------------------------------------------------------------
--    RUN SCRIPT ON CURRENT CHARACTER + FUTURE RESPAWNS
------------------------------------------------------------
 
player.CharacterAdded:Connect(Setup)
 
if player.Character then
    Setup(player.Character)
end

Features & Information

Master hand r15 animation Video -->https://vt.tiktok.com/ZSPLBfx12/

Community Comments (1)

mimsmimsDec 9, 2025

cool works but buttons dont actually do what they are meant to do

More Scripts for Universal Scripts