Script
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
-- Animation IDs
local defaultMoveAnimId = "rbxassetid://108287960442206"
local altMoveAnimId = "rbxassetid://109671225388655"
local idleAnimId = "rbxassetid://135419935358802"
-- GUI Setup (one-time)
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "MoveAnimToggleGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")
local toggleButton = Instance.new("TextButton")
toggleButton.Name = "ToggleButton"
toggleButton.Size = UDim2.new(0, 140, 0, 40)
toggleButton.Position = UDim2.new(0, 10, 0, 10)
toggleButton.Text = "Using Default Move"
toggleButton.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
toggleButton.TextColor3 = Color3.new(1, 1, 1)
toggleButton.Parent = screenGui
-- Variables
local moveTrack, idleTrack, heartbeatConnection, toggleConnection
local useAltAnim = false
-- Helper to clean up old animation state
local function stopOldTracks()
if idleTrack then idleTrack:Stop() idleTrack:Destroy() end
if moveTrack then moveTrack:Stop() moveTrack:Destroy() end
if heartbeatConnection then heartbeatConnection:Disconnect() end
if toggleConnection then toggleConnection:Disconnect() end
end
-- Animation setup
local function setupAnimations(character)
stopOldTracks()
local humanoid = character:WaitForChild("Humanoid")
-- Disable default Animate script
local animate = character:FindFirstChild("Animate")
if animate then animate.Disabled = true end
-- Idle animation
local idleAnim = Instance.new("Animation")
idleAnim.AnimationId = idleAnimId
idleTrack = humanoid:LoadAnimation(idleAnim)
idleTrack.Priority = Enum.AnimationPriority.Action
idleTrack:Play()
-- Function to load move animation based on current toggle
local function loadMoveTrack()
if moveTrack then moveTrack:Stop() moveTrack:Destroy() end
local moveAnim = Instance.new("Animation")
moveAnim.AnimationId = useAltAnim and altMoveAnimId or defaultMoveAnimId
moveTrack = humanoid:LoadAnimation(moveAnim)
moveTrack.Priority = Enum.AnimationPriority.Movement
end
loadMoveTrack()
-- Movement logic loop
heartbeatConnection = RunService.Heartbeat:Connect(function()
local speed = humanoid.MoveDirection.Magnitude
-- Clean default idle animations
for _, track in pairs(humanoid:GetPlayingAnimationTracks()) do
if track.Animation.AnimationId ~= idleAnimId
and track.Animation.AnimationId ~= moveTrack.Animation.AnimationId then
if track.Priority == Enum.AnimationPriority.Core
or track.Name == "idle"
or track.Animation.AnimationId:lower():find("idle") then
track:Stop()
end
end
end
if speed > 0.01 then
if not moveTrack.IsPlaying then
idleTrack:Stop()
moveTrack:Play()
end
else
if not idleTrack.IsPlaying then
moveTrack:Stop()
idleTrack:Play()
end
end
end)
-- GUI toggle logic
toggleConnection = toggleButton.MouseButton1Click:Connect(function()
useAltAnim = not useAltAnim
toggleButton.Text = useAltAnim and "Using Alt Move" or "Using Default Move"
loadMoveTrack()
end)
end
-- Setup on current and future character loads
if player.Character then
setupAnimations(player.Character)
end
player.CharacterAdded:Connect(function(char)
setupAnimations(char)
end)