
KeylessUniversal

local player = game.Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local toolData = {
{ Name = "Normal Punch", AnimationId = "rbxassetid://204062532", Speed = 1 },
{ Name = "Consecutive Punches", AnimationId = "rbxassetid://126753849", Speed = 2.4 },
{ Name = "Shove", AnimationId = "rbxassetid://218504594", Speed = 1 },
{ Name = "Uppercut", AnimationId = "rbxassetid://184574340", Speed = 1 }
}
local currentTrack = nil
local isPlaying = false
for _, data in pairs(toolData) do
local tool = Instance.new("Tool")
tool.Name = data.Name
tool.RequiresHandle = false
tool.CanBeDropped = false
tool.Parent = player.Backpack
tool.Equipped:Connect(function()
if isPlaying then return end
isPlaying = true
-- ⚡ Super fast unequip
task.defer(function()
tool.Parent = player.Backpack
end)
-- Stop previous anim
if currentTrack and currentTrack.IsPlaying then
currentTrack:Stop()
currentTrack:Destroy()
end
local anim = Instance.new("Animation")
anim.AnimationId = data.AnimationId
local track = humanoid:LoadAnimation(anim)
track.Looped = false
track:Play()
track:AdjustSpeed(data.Speed)
currentTrack = track
-- Reset block when done
local duration = track.Length / data.Speed
task.delay(duration, function()
isPlaying = false
end)
end)
endNo comments yet for this script.



