Animation template
Key RequiredUniversal

Animation template

Universal ScriptJustahackertwinJustahackertwin 1.1K views 144 executesUpdated Dec 17, 2025
0.0/ 5(1 votes)
010% Positive
Lua Script•270 lines (6887 chars)
--==================== POPUP / NOTIFICATION ====================--

local Title = "Text"
local Text = "text"
local ButtonText = "text"
local Button2Text ="Text
local IconId = "id"

local HaveIcon = true
local HaveButton1 = true
local HaveButton2 = true
local Duration = 5

local function Button1Code()
  -- optional code
end

local function Button2Code()
  -- optional code
end

loadstring(game:HttpGet("https://pastebin.com/raw/FUPBRUuY"))()(
 Title,
 Text,
 ButtonText,
 Button2Text,
 IconId,
 HaveIcon,
 HaveButton1,
 HaveButton2,
 Duration,
 Button1Code,
 Button2Code
)

--==================== SETTINGS ====================--

local KEY_MOVESET1 = Enum.KeyCode.Z
local KEY_MOVESET2 = Enum.KeyCode.X
local KEY_MOVESET3 = Enum.KeyCode.C
local KEY_DASH     = Enum.KeyCode.V

local BUTTON1_IMAGE = "rbxassetid://id"
local BUTTON2_IMAGE = "rbxassetid://id"
local BUTTON3_IMAGE = "rbxassetid://id"
local DASH_BUTTON_IMAGE = "rbxassetid://id"

-- Animations
local SpawnAnimId = "rbxassetid://id"
local IdleAnimId  = "rbxassetid://id"
local WalkAnimId  = "rbxassetid://id"

local Move1AnimId = "rbxassetid://id"
local Move2AnimId = "rbxassetid://id"
local Move3AnimId = "rbxassetid://id"
local DashAnimId  = "rbxassetid://id"

-- Dash you can change the speed if you want or delete it
local DASH_SPEED = 200
local DASH_UP = 40
local DASH_TIME = 0.25

--==================================================--

local Players = game:GetService("Players")
local UIS = game:GetService("UserInputService")
local Debris = game:GetService("Debris")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer

local PlayMove1, PlayMove2, PlayMove3, PlayDash

----------------------------------------------------
-- GUI (Persistent)
----------------------------------------------------

local gui = player.PlayerGui:FindFirstChild("MovesetGui")
if not gui then
  gui = Instance.new("ScreenGui")
  gui.Name = "MovesetGui"
  gui.ResetOnSpawn = false
  gui.Parent = player.PlayerGui
end

local function MakeButton(name, image, pos)
  local btn = gui:FindFirstChild(name)
  if btn then return btn end
  btn = Instance.new("ImageButton")
  btn.Name = name
  btn.Size = UDim2.new(0,90,0,90)
  btn.Position = pos
  btn.Image = image
  btn.BackgroundTransparency = 1
  btn.Parent = gui
  return btn
end

local btn1 = MakeButton("Move1", BUTTON1_IMAGE, UDim2.new(0.05,0,0.75,0))
local btn2 = MakeButton("Move2", BUTTON2_IMAGE, UDim2.new(0.17,0,0.75,0))
local btn3 = MakeButton("Move3", BUTTON3_IMAGE, UDim2.new(0.29,0,0.75,0))
local btnD = MakeButton("Dash",  DASH_BUTTON_IMAGE, UDim2.new(0.41,0,0.75,0))

--==================== BUTTON CONNECTION ====================--

local function ConnectButtons()
    btn1.MouseButton1Click:Connect(function() if PlayMove1 then PlayMove1() end end)
    btn2.MouseButton1Click:Connect(function() if PlayMove2 then PlayMove2() end end)
    btn3.MouseButton1Click:Connect(function() if PlayMove3 then PlayMove3() end end)
    btnD.MouseButton1Click:Connect(function() if PlayDash then PlayDash() end end)
end

ConnectButtons() -- initial connection

----------------------------------------------------
-- CHARACTER SETUP
----------------------------------------------------

local function SetupCharacter(char)
  local humanoid = char:WaitForChild("Humanoid")
  local hrp = char:WaitForChild("HumanoidRootPart")

  local animate = char:FindFirstChild("Animate")
  if animate then animate.Disabled = true end

  local function loadAnim(id, looped)
    local a = Instance.new("Animation")
    a.AnimationId = id
    local t = humanoid:LoadAnimation(a)
    t.Looped = looped
    return t
  end

  local idle  = loadAnim(IdleAnimId,true)
  local walk  = loadAnim(WalkAnimId,true)
  local spawn = loadAnim(SpawnAnimId,false)

  local m2 = loadAnim(Move2AnimId,false)
  local m3 = loadAnim(Move3AnimId,false)
  local dashTrack = loadAnim(DashAnimId,false)

  spawn:Play()
  spawn.Stopped:Wait()
  idle:Play()

  local using = false
  local ready = {true,true,true,true}

  -- WALK / IDLE
  humanoid.Running:Connect(function(speed)
    if using then return end
    if speed > 0.1 then
      if not walk.IsPlaying then
        idle:Stop()
        walk:Play()
      end
    else
      if not idle.IsPlaying then
        walk:Stop()
        idle:Play()
      end
    end
  end)

  local function finish()
    using = false
    if humanoid.MoveDirection.Magnitude > 0 then
      walk:Play()
    else
      idle:Play()
    end
  end

  -- MOVE 1
  PlayMove1 = function()
    if using or not ready[1] then return end
    using = true
    ready[1] = false
    idle:Stop(); walk:Stop()
    local a = Instance.new("Animation")
    a.AnimationId = Move1AnimId
    local track = humanoid:LoadAnimation(a)
    track.Looped = true
    track:Play()
    local SPEED_MULT = 10
    local conn
    conn = RunService.RenderStepped:Connect(function(dt)
      if track.IsPlaying then
        track.TimePosition = track.TimePosition + dt * (SPEED_MULT - 1)
      end
    end)
    task.delay(2, function()
      conn:Disconnect()
      track:Stop()
      ready[1] = true
      using = false
      finish()
    end)
  end

  -- MOVE 2
  PlayMove2 = function()
    if using or not ready[2] then return end
    using = true
    ready[2] = false
    idle:Stop(); walk:Stop()
    m2:Play()
    m2.Stopped:Wait()
    ready[2] = true
    finish()
  end

  -- MOVE 3
  PlayMove3 = function()
    if using or not ready[3] then return end
    using = true
    ready[3] = false
    idle:Stop(); walk:Stop()
    m3:Play()
    m3.Stopped:Wait()
    ready[3] = true
    finish()
  end

  -- DASH you can delete this thing if you want
  PlayDash = function()
    if using or not ready[4] then return end
    using = true
    ready[4] = false
    idle:Stop(); walk:Stop()
    dashTrack:Play()

    local dir = hrp.CFrame.LookVector
    local bv = Instance.new("BodyVelocity")
    bv.Velocity = Vector3.new(dir.X * DASH_SPEED, DASH_UP, dir.Z * DASH_SPEED)
    bv.MaxForce = Vector3.new(1e5,1e5,1e5)
    bv.Parent = hrp

    Debris:AddItem(bv, DASH_TIME)

    task.delay(0.4,function()
      ready[4] = true
      using = false
    end)
  end

  -- reconnect buttons to the new functions
  ConnectButtons()
end

----------------------------------------------------
-- KEYS
----------------------------------------------------

UIS.InputBegan:Connect(function(input,gp)
  if gp then return end
  if input.KeyCode == KEY_MOVESET1 and PlayMove1 then PlayMove1()
  elseif input.KeyCode == KEY_MOVESET2 and PlayMove2 then PlayMove2()
  elseif input.KeyCode == KEY_MOVESET3 and PlayMove3 then PlayMove3()
  elseif input.KeyCode == KEY_DASH and PlayDash then PlayDash()
  end
end)

----------------------------------------------------
-- RUN
----------------------------------------------------

player.CharacterAdded:Connect(SetupCharacter)
if player.Character then
  SetupCharacter(player.Character)
end

Features & Information

There's only four moves so you can delete one image and the animation to make it 3 or 2 or 1 i did not use id for this one😔 I just copy a handmaster script and after 2 hour i know how to make it to have more button and copies another guy script gum gum slingshot i think and put the script in roblox name=sniper06386 YT=Noli-i6l

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts