-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] -- LocalScript: put in StarterPlayerScripts -- Builds the frontdash + sidedash UIs and handles their cooldown indicators local Players = game:GetService("Players") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") local WHITE = Color3.fromRGB(255, 255, 255) local BLACK = Color3.fromRGB(0, 0, 0) -- cooldown color (change if it's hard to see) ---------------------------------------------------------------- -- UI CREATION ---------------------------------------------------------------- local function createDashUI(guiName, text, framePosition) local gui = Instance.new("ScreenGui") gui.Name = guiName gui.ResetOnSpawn = false -- keeps the UI alive when you die gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling gui.Parent = playerGui local frame = Instance.new("Frame") frame.Parent = gui frame.BackgroundColor3 = Color3.fromRGB(0, 0, 0) frame.BackgroundTransparency = 0.7 frame.BorderColor3 = Color3.fromRGB(0, 0, 0) frame.BorderSizePixel = 0 frame.Position = framePosition frame.Size = UDim2.new(0, 35, 0, 37) local label = Instance.new("TextLabel") label.Parent = frame label.BackgroundColor3 = Color3.fromRGB(255, 255, 255) label.BackgroundTransparency = 1 label.BorderColor3 = Color3.fromRGB(0, 0, 0) label.BorderSizePixel = 0 label.Size = UDim2.new(0, 35, 0, 37) label.Font = Enum.Font.ArimoBold label.Text = text label.TextColor3 = WHITE label.TextSize = 14 return label end local labels = { frontdash = createDashUI("frontdash", "FD", UDim2.new(0.357477844, 0, 0.803122282, 0)), sidedash = createDashUI("sidedash", "SD", UDim2.new(0.378843158, 0, 0.803122282, 0)), } ---------------------------------------------------------------- -- DASH SETTINGS ---------------------------------------------------------------- local dashes = { frontdash = { cooldown = 6, ids = { "110978068388232", -- front dash "99451940496871", -- front dash special "130135202362252", -- front dash 1 "113722638806911", -- front dash 2 "81708642912019", -- front dash 3 }, }, sidedash = { cooldown = 2, ids = { "75203303352791", -- right side dash "117223862448096", -- left side dash }, }, } -- Lookup: animation id -> dash name local animToDash = {} for dashName, data in pairs(dashes) do for _, animId in ipairs(data.ids) do animToDash[animId] = dashName end end -- Token per dash so old timers can't overwrite a newer cooldown or a reset local tokens = { frontdash = 0, sidedash = 0 } ---------------------------------------------------------------- -- COOLDOWN LOGIC ---------------------------------------------------------------- local function startCooldown(dashName) tokens[dashName] += 1 local myToken = tokens[dashName] labels[dashName].TextColor3 = BLACK task.delay(dashes[dashName].cooldown, function() if tokens[dashName] == myToken then labels[dashName].TextColor3 = WHITE end end) end local function resetAll() for dashName, label in pairs(labels) do tokens[dashName] += 1 -- cancels any running timers label.TextColor3 = WHITE end end ---------------------------------------------------------------- -- CHARACTER HOOKUP ---------------------------------------------------------------- local function onCharacter(character) resetAll() local humanoid = character:WaitForChild("Humanoid") local animator = humanoid:WaitForChild("Animator") animator.AnimationPlayed:Connect(function(track) local animId = string.match(track.Animation.AnimationId, "%d+") local dashName = animToDash[animId] if dashName then startCooldown(dashName) end end) humanoid.Died:Connect(resetAll) end player.CharacterAdded:Connect(onCharacter) if player.Character then task.spawn(onCharacter, player.Character) end