
KeylessUniversal

-- 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.")



Credit me before you upload this script with an animation i uploaded.
Actually ykw * that I didn't even give you permission to upload this.