local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local player = Players.LocalPlayer local coreGui = game:GetService("CoreGui") -- Detect mobile local isMobile = UserInputService.TouchEnabled and not UserInputService.KeyboardEnabled -- SETTINGS local Settings = { DashKey = Enum.KeyCode.Q, DashForce = 150, DashCooldown = 0.8, DashDuration = 0.15, UseDoubleTapW = false, EnableSound = true, DashSoundId = "70557734865364", SoundVolume = 0.5, } -- ==================== GUI ==================== local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "UltimateDash" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = coreGui -- Changed to CoreGui -- Responsive sizes local menuWidth = isMobile and 300 or 340 local menuHeight = isMobile and 480 or 520 local fontSizeTitle = isMobile and 28 or 26 local fontSizeLabel = isMobile and 20 or 22 local fontSizeInput = isMobile and 18 or 20 local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, menuWidth, 0, menuHeight) MainFrame.Position = UDim2.new(0.5, -menuWidth/2, 0.5, -menuHeight/2) MainFrame.BackgroundColor3 = Color3.fromRGB(30, 30, 40) MainFrame.BorderSizePixel = 0 MainFrame.Active = true MainFrame.Draggable = true MainFrame.Parent = ScreenGui Instance.new("UICorner", MainFrame).CornerRadius = UDim.new(0, 14) Instance.new("UIStroke", MainFrame).Color = Color3.fromRGB(80, 140, 255) local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, 0, 0, 56) Title.BackgroundTransparency = 1 Title.Text = "DASH MENU" Title.TextColor3 = Color3.fromRGB(0, 200, 255) Title.Font = Enum.Font.GothamBold Title.TextSize = fontSizeTitle Title.Parent = MainFrame local MinimizeBtn = Instance.new("TextButton") MinimizeBtn.Size = UDim2.new(0, 46, 0, 46) MinimizeBtn.Position = UDim2.new(1, -54, 0, 4) MinimizeBtn.BackgroundTransparency = 1 MinimizeBtn.Text = "−" MinimizeBtn.TextColor3 = Color3.new(1,1,1) MinimizeBtn.Font = Enum.Font.GothamBold MinimizeBtn.TextSize = 40 MinimizeBtn.Parent = MainFrame local Content = Instance.new("Frame") Content.Size = UDim2.new(1, 0, 1, -56) Content.Position = UDim2.new(0, 0, 0, 56) Content.BackgroundTransparency = 1 Content.Parent = MainFrame -- Dragging (works on touch too) local dragging, dragInput, dragStart, startPos MainFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = MainFrame.Position end end) MainFrame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) RunService.Heartbeat:Connect(function() if dragging and dragInput then local delta = dragInput.Position - dragStart MainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) end end) MainFrame.InputEnded:Connect(function(i) if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then dragging = false end end) -- Minimize system local isMinimized = false local normalSize = MainFrame.Size local minimizedSize = UDim2.new(0, menuWidth, 0, 56) local function setMinimized(min) isMinimized = min local target = min and minimizedSize or normalSize TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quart), {Size = target}):Play() Content.Visible = not min MinimizeBtn.Text = min and "+" or "−" end MinimizeBtn.MouseButton1Click:Connect(function() setMinimized(not isMinimized) end) UserInputService.InputBegan:Connect(function(i, gp) if gp then return end if i.KeyCode == Enum.KeyCode.G and UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then setMinimized(not isMinimized) end end) -- Settings UI (inside Content) local y = 10 local function addRow(name, default, isNum, callback) local row = Instance.new("Frame") row.Size = UDim2.new(1, -20, 0, 50) row.Position = UDim2.new(0, 10, 0, y) row.BackgroundTransparency = 1 row.Parent = Content local label = Instance.new("TextLabel") label.Size = UDim2.new(0.52, 0, 1, 0) label.Text = name label.TextColor3 = Color3.fromRGB(230, 230, 230) label.Font = Enum.Font.Gotham label.TextSize = fontSizeLabel label.TextXAlignment = Enum.TextXAlignment.Left label.BackgroundTransparency = 1 label.Parent = row local box = Instance.new("TextBox") box.Size = UDim2.new(0.45, 0, 0, 36) box.Position = UDim2.new(0.55, 0, 0.15, 0) box.BackgroundColor3 = Color3.fromRGB(50, 50, 70) box.TextColor3 = Color3.new(1,1,1) box.Text = tostring(default) box.Font = Enum.Font.Gotham box.TextSize = fontSizeInput box.ClearTextOnFocus = false box.Parent = row Instance.new("UICorner", box).CornerRadius = UDim.new(0, 8) box.FocusLost:Connect(function(enter) if enter then local val = isNum and tonumber(box.Text) or box.Text if isNum then val = val or default end box.Text = tostring(val) callback(val) end end) y = y + 58 return box end local function addToggle(name, default, callback) local row = Instance.new("Frame") row.Size = UDim2.new(1, -20, 0, 46) row.Position = UDim2.new(0, 10, 0, y) row.BackgroundTransparency = 1 row.Parent = Content local label = Instance.new("TextLabel") label.Size = UDim2.new(0.7, 0, 1, 0) label.Text = name label.TextColor3 = Color3.fromRGB(230, 230, 230) label.Font = Enum.Font.Gotham label.TextSize = fontSizeLabel label.TextXAlignment = Enum.TextXAlignment.Left label.BackgroundTransparency = 1 label.Parent = row local btn = Instance.new("TextButton") btn.Size = UDim2.new(0, 76, 0, 36) btn.Position = UDim2.new(1, -84, 0, 4) btn.BackgroundColor3 = default and Color3.fromRGB(0, 180, 255) or Color3.fromRGB(80, 80, 80) btn.Text = default and "ON" or "OFF" btn.TextColor3 = Color3.new(1,1,1) btn.Font = Enum.Font.GothamBold btn.TextSize = 20 btn.Parent = row Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 10) btn.MouseButton1Click:Connect(function() default = not default btn.BackgroundColor3 = default and Color3.fromRGB(0, 180, 255) or Color3.fromRGB(80, 80, 80) btn.Text = default and "ON" or "OFF" callback(default) end) y = y + 54 end -- Build settings addRow("Force", Settings.DashForce, true, function(v) Settings.DashForce = math.clamp(v, 50, 600) end) addRow("Cooldown", Settings.DashCooldown, true, function(v) Settings.DashCooldown = math.clamp(v, 0.1, 5) end) addRow("Duration", Settings.DashDuration, true, function(v) Settings.DashDuration = math.clamp(v, 0.05, 0.6) end) addRow("Volume", Settings.SoundVolume, true, function(v) Settings.SoundVolume = math.clamp(v, 0, 10) end) local soundBox = addRow("Sound ID", Settings.DashSoundId, false, function(v) Settings.DashSoundId = tostring(v):match("%d+") or "70557734865364" soundBox.Text = Settings.DashSoundId end) addToggle("Sound", Settings.EnableSound, function(v) Settings.EnableSound = v end) addToggle("Double-Tap W", Settings.UseDoubleTapW, function(v) Settings.UseDoubleTapW = v end) -- Keybind button local keyRow = Instance.new("Frame") keyRow.Size = UDim2.new(1, -20, 0, 56) keyRow.Position = UDim2.new(0, 10, 0, y) keyRow.BackgroundTransparency = 1 keyRow.Parent = Content local keyBtn = Instance.new("TextButton") keyBtn.Size = UDim2.new(1, 0, 0, 44) keyBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 70) keyBtn.Text = "Dash Key: " .. Settings.DashKey.Name keyBtn.TextColor3 = Color3.fromRGB(0, 255, 100) keyBtn.Font = Enum.Font.GothamBold keyBtn.TextSize = fontSizeInput + 2 keyBtn.Parent = keyRow Instance.new("UICorner", keyBtn).CornerRadius = UDim.new(0, 10) local waiting = false keyBtn.MouseButton1Click:Connect(function() if waiting then return end waiting = true keyBtn.Text = "Press any key..." keyBtn.TextColor3 = Color3.fromRGB(255, 255, 0) end) UserInputService.InputBegan:Connect(function(i, gp) if waiting and not gp and i.KeyCode ~= Enum.KeyCode.Unknown then Settings.DashKey = i.KeyCode keyBtn.Text = "Dash Key: " .. i.KeyCode.Name keyBtn.TextColor3 = Color3.fromRGB(0, 255, 100) waiting = false end end) -- ==================== MOBILE DASH BUTTON ==================== if isMobile then local dashBtn = Instance.new("TextButton") dashBtn.Size = UDim2.new(0, 110, 0, 110) dashBtn.Position = UDim2.new(1, -135, 1, -260) -- Above jump button dashBtn.BackgroundColor3 = Color3.fromRGB(0, 170, 255) dashBtn.BackgroundTransparency = 0.3 dashBtn.Text = "DASH" dashBtn.TextColor3 = Color3.new(1,1,1) dashBtn.Font = Enum.Font.GothamBold dashBtn.TextSize = 32 dashBtn.Parent = ScreenGui Instance.new("UICorner", dashBtn).CornerRadius = UDim.new(0, 60) -- Hold-to-dash feedback dashBtn.MouseButton1Down:Connect(function() dashBtn.BackgroundTransparency = 0 doDash() end) dashBtn.MouseButton1Up:Connect(function() dashBtn.BackgroundTransparency = 0.3 end) dashBtn.TouchTap:Connect(doDash) -- Also tap works end -- ==================== DASH FUNCTION ==================== local lastDashTime = 0 local lastWTap = 0 local function playSound(root) if not Settings.EnableSound or not root then return end local s = Instance.new("Sound") s.SoundId = "rbxassetid://" .. Settings.DashSoundId s.Volume = Settings.SoundVolume s.Parent = root s:Play() s.Ended:Connect(function() s:Destroy() end) end function doDash() local now = tick() if now - lastDashTime < Settings.DashCooldown then return end local char = player.Character or player.CharacterAdded:Wait() local root = char:FindFirstChild("HumanoidRootPart") if not root then return end lastDashTime = now playSound(root) local bv = Instance.new("BodyVelocity") bv.MaxForce = Vector3.new(1e5, 0, 1e5) bv.Velocity = root.CFrame.LookVector * Settings.DashForce bv.Parent = root task.delay(Settings.DashDuration, function() if bv and bv.Parent then bv:Destroy() end end) end -- Input handling UserInputService.InputBegan:Connect(function(input, gp) if gp then return end if Settings.UseDoubleTapW and input.KeyCode == Enum.KeyCode.W then local now = tick() if now - lastWTap < 0.35 then doDash() end lastWTap = now elseif input.KeyCode == Settings.DashKey then doDash() end end) player.CharacterAdded:Connect(function() lastDashTime = 0 lastWTap = 0 end) print("Ultimate Dash loaded! (CoreGui version) Mobile = DASH button | PC = Key or double-tap W")