-- Auto-create Horizontal Dash Tool (no infinite cloning) local Players = game:GetService("Players") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local camera = workspace.CurrentCamera local DASH_TIME = 3 local COOLDOWN = 4 local ANIM_ID = "rbxassetid://235542946" local canUse = true local cooldownRemaining = 0 -- Create Tool once local tool = Instance.new("Tool") tool.Name = "Horizontal Dash" tool.RequiresHandle = false tool.CanBeDropped = false tool.Parent = player:WaitForChild("Backpack") -- Cooldown UI (center screen) local gui = Instance.new("ScreenGui") gui.Name = "DashCooldownGUI" gui.ResetOnSpawn = false gui.Parent = player:WaitForChild("PlayerGui") local cooldownLabel = Instance.new("TextLabel") cooldownLabel.Size = UDim2.new(0, 200, 0, 30) cooldownLabel.Position = UDim2.new(0.5, -100, 0.5, -15) cooldownLabel.BackgroundTransparency = 1 cooldownLabel.TextColor3 = Color3.fromRGB(255, 255, 255) cooldownLabel.TextScaled = true cooldownLabel.Visible = false cooldownLabel.Parent = gui local textConstraint = Instance.new("UITextSizeConstraint") textConstraint.MaxTextSize = 18 textConstraint.MinTextSize = 12 textConstraint.Parent = cooldownLabel -- Cooldown display local function startCooldownDisplay(duration) cooldownRemaining = duration cooldownLabel.Visible = true while cooldownRemaining > 0 do cooldownLabel.Text = string.format("%.1f", cooldownRemaining) task.wait(0.1) cooldownRemaining -= 0.1 end cooldownLabel.Visible = false end -- Main ability local function activate() if not canUse then return end canUse = false local char = player.Character if not char then return end local humanoid = char:FindFirstChildOfClass("Humanoid") local root = char:FindFirstChild("HumanoidRootPart") if not humanoid or not root then return end -- Play animation local animator = humanoid:FindFirstChildOfClass("Animator") if not animator then animator = Instance.new("Animator") animator.Parent = humanoid end local anim = Instance.new("Animation") anim.AnimationId = ANIM_ID local track = animator:LoadAnimation(anim) track:Play() -- Lock physics humanoid.PlatformStand = true -- Direction: camera look, horizontal only local look = camera.CFrame.LookVector local direction = Vector3.new(look.X, 0, look.Z) if direction.Magnitude > 0 then direction = direction.Unit end -- Speed = WalkSpeed + 3 local speed = humanoid.WalkSpeed + 3 local bv = Instance.new("BodyVelocity") bv.MaxForce = Vector3.new(1e9, 1e9, 1e9) bv.Velocity = direction * speed bv.Parent = root -- Keep velocity stable local connection connection = RunService.Heartbeat:Connect(function() if root and bv then bv.Velocity = direction * speed end end) -- Stop dash task.delay(DASH_TIME, function() if connection then connection:Disconnect() end if bv then bv:Destroy() end if track then track:Stop() end humanoid.PlatformStand = false -- Start cooldown AFTER dash task.spawn(function() startCooldownDisplay(COOLDOWN) canUse = true end) end) end tool.Activated:Connect(activate)