-- John Doe Anims (versão estável) - Solara -- Idle funciona | Walk/Sprint tenta carregar local Players = game:GetService("Players") local UIS = game:GetService("UserInputService") local RS = game:GetService("RunService") local player = Players.LocalPlayer local char = player.Character or player.CharacterAdded:Wait() local hum = char:WaitForChild("Humanoid") local root = char:WaitForChild("HumanoidRootPart") if hum.RigType ~= Enum.HumanoidRigType.R15 then warn("Só R15") return end -- Remove Animate local function cleanAnimate(c) local a = c:FindFirstChild("Animate") if a then a.Disabled = true pcall(function() a:Destroy() end) end end cleanAnimate(char) local animator = hum:FindFirstChildOfClass("Animator") or Instance.new("Animator") animator.Parent = hum -- Para tudo for _, t in pairs(animator:GetPlayingAnimationTracks()) do t:Stop(0) end -- IDs (seu idle + tentativas de walk/sprint) local IDS = { Idle = "rbxassetid://111792319821341", -- seu (funciona) Walk = "rbxassetid://84823630062362", Sprint = "rbxassetid://135419935358802", } local tracks = {} local current = nil local sprinting = false local function makeTrack(id) local anim = Instance.new("Animation") anim.AnimationId = id local track = animator:LoadAnimation(anim) track.Priority = Enum.AnimationPriority.Action4 track.Looped = true return track end tracks.Idle = makeTrack(IDS.Idle) tracks.Walk = makeTrack(IDS.Walk) tracks.Sprint = makeTrack(IDS.Sprint) local function play(name) local track = tracks[name] if not track then return end if current == track then return end if current then current:Stop(0.15) end current = track track:Play(0.15) end -- Velocidades local WALK_SPEED = 11 local SPRINT_SPEED = 25 hum.WalkSpeed = WALK_SPEED -- Shift UIS.InputBegan:Connect(function(input, gpe) if gpe then return end if input.KeyCode == Enum.KeyCode.LeftShift or input.KeyCode == Enum.KeyCode.RightShift then sprinting = true hum.WalkSpeed = SPRINT_SPEED end end) UIS.InputEnded:Connect(function(input) if input.KeyCode == Enum.KeyCode.LeftShift or input.KeyCode == Enum.KeyCode.RightShift then sprinting = false hum.WalkSpeed = WALK_SPEED end end) -- Atualização mais limpa (menos bug) local lastState = "" RS.RenderStepped:Connect(function() if not hum or hum.Health <= 0 then return end local moving = root.AssemblyLinearVelocity.Magnitude > 1.2 local state = "" if not moving then state = "Idle" elseif sprinting then state = "Sprint" else state = "Walk" end if state ~= lastState then lastState = state play(state) end end) -- Começa no idle play("Idle") -- Respawn player.CharacterAdded:Connect(function(newChar) char = newChar hum = char:WaitForChild("Humanoid") root = char:WaitForChild("HumanoidRootPart") cleanAnimate(char) animator = hum:FindFirstChildOfClass("Animator") or Instance.new("Animator") animator.Parent = hum for _, t in pairs(animator:GetPlayingAnimationTracks()) do t:Stop(0) end tracks.Idle = makeTrack(IDS.Idle) tracks.Walk = makeTrack(IDS.Walk) tracks.Sprint = makeTrack(IDS.Sprint) current = nil lastState = "" sprinting = false hum.WalkSpeed = WALK_SPEED play("Idle") end) print("Script estável carregado. Idle deve funcionar. Walk/Sprint dependem se os IDs carregarem.")