-- Script Speed GUI với menu vuông nhỏ và nhập tốc độ tùy chỉnh -- Đặt script này vào LocalScript trong StarterGui local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local TweenService = game:GetService("TweenService") local TextService = game:GetService("TextService") local player = Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") -- Lưu tốc độ gốc local originalWalkSpeed = humanoid.WalkSpeed local originalJumpPower = humanoid.JumpPower -- Tạo GUI chính local screenGui = Instance.new("ScreenGui") screenGui.Name = "SpeedControlGUI" screenGui.Parent = player.PlayerGui -- Nút mở menu speed (hình vuông nhỏ) local menuToggle = Instance.new("TextButton") menuToggle.Name = "SpeedMenuToggle" menuToggle.Size = UDim2.new(0, 50, 0, 50) menuToggle.Position = UDim2.new(0.02, 0, 0.85, 0) menuToggle.Text = "⚡" menuToggle.TextSize = 24 menuToggle.TextColor3 = Color3.fromRGB(255, 255, 255) menuToggle.BackgroundColor3 = Color3.fromRGB(40, 120, 200) menuToggle.BorderSizePixel = 0 menuToggle.Parent = screenGui -- Menu tốc độ (hình vuông nhỏ) local speedMenu = Instance.new("Frame") speedMenu.Name = "SpeedMenu" speedMenu.Size = UDim2.new(0, 200, 0, 250) speedMenu.Position = UDim2.new(0.02, 0, 0.85, -260) speedMenu.BackgroundColor3 = Color3.fromRGB(30, 30, 40) speedMenu.BackgroundTransparency = 0.1 speedMenu.BorderSizePixel = 0 speedMenu.Visible = false speedMenu.Parent = screenGui -- Tiêu đề menu local titleFrame = Instance.new("Frame") titleFrame.Name = "Title" titleFrame.Size = UDim2.new(1, 0, 0, 40) titleFrame.Position = UDim2.new(0, 0, 0, 0) titleFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 70) titleFrame.BorderSizePixel = 0 titleFrame.Parent = speedMenu local titleText = Instance.new("TextLabel") titleText.Name = "TitleText" titleText.Size = UDim2.new(1, 0, 1, 0) titleText.Text = "⚡ SPEED CONTROL" titleText.TextColor3 = Color3.fromRGB(255, 255, 255) titleText.TextSize = 16 titleText.Font = Enum.Font.GothamBold titleText.BackgroundTransparency = 1 titleText.Parent = titleFrame -- Ô hiển thị tốc độ hiện tại local currentSpeedDisplay = Instance.new("Frame") currentSpeedDisplay.Name = "CurrentSpeed" currentSpeedDisplay.Size = UDim2.new(1, -20, 0, 50) currentSpeedDisplay.Position = UDim2.new(0, 10, 0, 50) currentSpeedDisplay.BackgroundColor3 = Color3.fromRGB(40, 40, 50) currentSpeedDisplay.BorderSizePixel = 0 currentSpeedDisplay.Parent = speedMenu local currentSpeedLabel = Instance.new("TextLabel") currentSpeedLabel.Name = "CurrentLabel" currentSpeedLabel.Size = UDim2.new(0.4, 0, 1, 0) currentSpeedLabel.Position = UDim2.new(0, 10, 0, 0) currentSpeedLabel.Text = "Hiện tại:" currentSpeedLabel.TextColor3 = Color3.fromRGB(200, 200, 200) currentSpeedLabel.TextSize = 14 currentSpeedLabel.Font = Enum.Font.Gotham currentSpeedLabel.BackgroundTransparency = 1 currentSpeedLabel.TextXAlignment = Enum.TextXAlignment.Left currentSpeedLabel.Parent = currentSpeedDisplay local currentSpeedValue = Instance.new("TextLabel") currentSpeedValue.Name = "CurrentValue" currentSpeedValue.Size = UDim2.new(0.6, -10, 1, 0) currentSpeedValue.Position = UDim2.new(0.4, 0, 0, 0) currentSpeedValue.Text = tostring(math.floor(humanoid.WalkSpeed)) currentSpeedValue.TextColor3 = Color3.fromRGB(255, 255, 0) currentSpeedValue.TextSize = 20 currentSpeedValue.Font = Enum.Font.GothamBold currentSpeedValue.BackgroundTransparency = 1 currentSpeedValue.TextXAlignment = Enum.TextXAlignment.Right currentSpeedValue.Parent = currentSpeedDisplay -- Ô nhập tốc độ mới local inputFrame = Instance.new("Frame") inputFrame.Name = "SpeedInput" inputFrame.Size = UDim2.new(1, -20, 0, 50) inputFrame.Position = UDim2.new(0, 10, 0, 110) inputFrame.BackgroundColor3 = Color3.fromRGB(40, 40, 50) inputFrame.BorderSizePixel = 0 inputFrame.Parent = speedMenu local inputLabel = Instance.new("TextLabel") inputLabel.Name = "InputLabel" inputLabel.Size = UDim2.new(0.4, 0, 1, 0) inputLabel.Position = UDim2.new(0, 10, 0, 0) inputLabel.Text = "Tốc độ mới:" inputLabel.TextColor3 = Color3.fromRGB(200, 200, 200) inputLabel.TextSize = 14 inputLabel.Font = Enum.Font.Gotham inputLabel.BackgroundTransparency = 1 inputLabel.TextXAlignment = Enum.TextXAlignment.Left inputLabel.Parent = inputFrame local speedInputBox = Instance.new("TextBox") speedInputBox.Name = "SpeedInputBox" speedInputBox.Size = UDim2.new(0.6, -20, 0.7, 0) speedInputBox.Position = UDim2.new(0.4, 0, 0.15, 0) speedInputBox.Text = "50" speedInputBox.PlaceholderText = "Nhập số..." speedInputBox.TextColor3 = Color3.fromRGB(255, 255, 255) speedInputBox.BackgroundColor3 = Color3.fromRGB(60, 60, 80) speedInputBox.BorderSizePixel = 0 speedInputBox.TextSize = 16 speedInputBox.Font = Enum.Font.Gotham speedInputBox.Parent = inputFrame -- Nút SET SPEED (chính) local setSpeedButton = Instance.new("TextButton") setSpeedButton.Name = "SetSpeedButton" setSpeedButton.Size = UDim2.new(1, -20, 0, 45) setSpeedButton.Position = UDim2.new(0, 10, 0, 170) setSpeedButton.Text = "SET SPEED" setSpeedButton.TextColor3 = Color3.fromRGB(255, 255, 255) setSpeedButton.TextSize = 16 setSpeedButton.Font = Enum.Font.GothamBold setSpeedButton.BackgroundColor3 = Color3.fromRGB(0, 150, 255) setSpeedButton.BorderSizePixel = 0 setSpeedButton.Parent = speedMenu -- Nút preset tốc độ nhanh local presetButtonsFrame = Instance.new("Frame") presetButtonsFrame.Name = "PresetButtons" presetButtonsFrame.Size = UDim2.new(1, -20, 0, 35) presetButtonsFrame.Position = UDim2.new(0, 10, 0, 225) presetButtonsFrame.BackgroundTransparency = 1 presetButtonsFrame.Parent = speedMenu -- Các nút preset local presets = { {Name = "Slow", Value = 16, Color = Color3.fromRGB(100, 150, 255)}, {Name = "Normal", Value = 50, Color = Color3.fromRGB(0, 200, 100)}, {Name = "Fast", Value = 100, Color = Color3.fromRGB(255, 150, 0)}, {Name = "Extreme", Value = 200, Color = Color3.fromRGB(255, 50, 50)} } for i, preset in ipairs(presets) do local presetBtn = Instance.new("TextButton") presetBtn.Name = preset.Name .. "Preset" presetBtn.Size = UDim2.new(0.23, -2, 1, 0) presetBtn.Position = UDim2.new(0.23 * (i-1), 0, 0, 0) presetBtn.Text = preset.Name presetBtn.TextSize = 12 presetBtn.TextColor3 = Color3.fromRGB(255, 255, 255) presetBtn.BackgroundColor3 = preset.Color presetBtn.Font = Enum.Font.Gotham presetBtn.Parent = presetButtonsFrame presetBtn.MouseButton1Click:Connect(function() speedInputBox.Text = tostring(preset.Value) applySpeed(preset.Value) end) end -- Nút reset về tốc độ gốc local resetButton = Instance.new("TextButton") resetButton.Name = "ResetButton" resetButton.Size = UDim2.new(1, -20, 0, 30) resetButton.Position = UDim2.new(0, 10, 0, 190) resetButton.Text = "RESET TO DEFAULT" resetButton.TextColor3 = Color3.fromRGB(255, 200, 200) resetButton.TextSize = 12 resetButton.Font = Enum.Font.Gotham resetButton.BackgroundColor3 = Color3.fromRGB(80, 40, 40) resetButton.BorderSizePixel = 0 resetButton.Parent = speedMenu -- Thông báo popup local notificationFrame = Instance.new("Frame") notificationFrame.Name = "Notification" notificationFrame.Size = UDim2.new(0, 250, 0, 60) notificationFrame.Position = UDim2.new(0.5, -125, 0.8, 0) notificationFrame.BackgroundColor3 = Color3.fromRGB(30, 40, 30) notificationFrame.BackgroundTransparency = 1 notificationFrame.BorderSizePixel = 0 notificationFrame.Visible = false notificationFrame.Parent = screenGui local notificationText = Instance.new("TextLabel") notificationText.Name = "NotificationText" notificationText.Size = UDim2.new(1, -20, 1, -20) notificationText.Position = UDim2.new(0, 10, 0, 10) notificationText.Text = "" notificationText.TextColor3 = Color3.fromRGB(255, 255, 255) notificationText.TextSize = 14 notificationText.Font = Enum.Font.Gotham notificationText.BackgroundTransparency = 1 notificationText.TextWrapped = true notificationText.Parent = notificationFrame -- Biến điều khiển local isMenuOpen = false local currentSpeed = humanoid.WalkSpeed -- Hàm hiển thị thông báo local function showNotification(message, color) notificationText.Text = message notificationFrame.BackgroundColor3 = color or Color3.fromRGB(30, 40, 30) notificationFrame.Visible = true -- Animation hiện lên notificationFrame.BackgroundTransparency = 0.2 TweenService:Create(notificationFrame, TweenInfo.new(0.3), { BackgroundTransparency = 0 }):Play() -- Tự động ẩn sau 2 giây task.wait(2) -- Animation ẩn đi TweenService:Create(notificationFrame, TweenInfo.new(0.3), { BackgroundTransparency = 1 }):Play() task.wait(0.3) notificationFrame.Visible = false end -- Hàm áp dụng tốc độ local function applySpeed(speedValue) if not character or not humanoid then return end -- Kiểm tra giá trị hợp lệ speedValue = tonumber(speedValue) if not speedValue then showNotification("❌ Vui lòng nhập số hợp lệ!", Color3.fromRGB(80, 40, 40)) return end -- Giới hạn tốc độ speedValue = math.clamp(speedValue, 0, 500) -- Áp dụng tốc độ humanoid.WalkSpeed = speedValue currentSpeed = speedValue -- Cập nhật hiển thị currentSpeedValue.Text = tostring(math.floor(speedValue)) speedInputBox.Text = tostring(speedValue) -- Hiệu ứng visual currentSpeedValue.TextColor3 = Color3.fromRGB(0, 255, 150) task.wait(0.1) currentSpeedValue.TextColor3 = Color3.fromRGB(255, 255, 0) -- Thông báo showNotification("✅ Đã đặt tốc độ: " .. math.floor(speedValue), Color3.fromRGB(30, 60, 30)) end -- Hàm reset về tốc độ gốc local function resetToDefault() humanoid.WalkSpeed = originalWalkSpeed humanoid.JumpPower = originalJumpPower currentSpeed = originalWalkSpeed -- Cập nhật hiển thị currentSpeedValue.Text = tostring(math.floor(originalWalkSpeed)) speedInputBox.Text = tostring(originalWalkSpeed) showNotification("🔄 Đã reset về tốc độ mặc định: " .. originalWalkSpeed, Color3.fromRGB(40, 40, 60)) end -- Hàm mở/đóng menu local function toggleMenu() isMenuOpen = not isMenuOpen if isMenuOpen then -- Mở menu speedMenu.Visible = true menuToggle.Text = "✖" menuToggle.BackgroundColor3 = Color3.fromRGB(200, 60, 60) -- Animation mở menu speedMenu.Position = UDim2.new(0.02, 0, 0.85, -260) TweenService:Create(speedMenu, TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out), { Position = UDim2.new(0.02, 0, 0.85, -250) }):Play() -- Cập nhật giá trị hiện tại currentSpeedValue.Text = tostring(math.floor(humanoid.WalkSpeed)) else -- Đóng menu menuToggle.Text = "⚡" menuToggle.BackgroundColor3 = Color3.fromRGB(40, 120, 200) -- Animation đóng menu TweenService:Create(speedMenu, TweenInfo.new(0.2, Enum.EasingStyle.Back, Enum.EasingDirection.In), { Position = UDim2.new(0.02, 0, 0.85, -260) }):Play() task.wait(0.2) speedMenu.Visible = false end end -- Kết nối sự kiện menuToggle.MouseButton1Click:Connect(toggleMenu) setSpeedButton.MouseButton1Click:Connect(function() applySpeed(speedInputBox.Text) end) resetButton.MouseButton1Click:Connect(resetToDefault) -- Xử lý input box speedInputBox.FocusLost:Connect(function(enterPressed) if enterPressed then applySpeed(speedInputBox.Text) end end) -- Validator cho input box speedInputBox:GetPropertyChangedSignal("Text"):Connect(function() local text = speedInputBox.Text -- Chỉ cho phép số local filtered = "" for i = 1, #text do local char = text:sub(i, i) if tonumber(char) or char == "" or (i == 1 and char == "-") then filtered = filtered .. char end end if filtered ~= text then speedInputBox.Text = filtered end -- Giới hạn độ dài if #filtered > 4 then speedInputBox.Text = filtered:sub(1, 4) end end) -- Hỗ trợ keyboard shortcut UserInputService.InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end -- Ctrl + S để mở/đóng menu if input.KeyCode == Enum.KeyCode.S and UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then toggleMenu() -- Ctrl + R để reset elseif input.KeyCode == Enum.KeyCode.R and UserInputService:IsKeyDown(Enum.KeyCode.LeftControl) then resetToDefault() -- Enter để apply khi menu mở elseif input.KeyCode == Enum.KeyCode.Return and isMenuOpen then applySpeed(speedInputBox.Text) end end) -- Auto-update current speed display RunService.Heartbeat:Connect(function() if character and humanoid then local currentWalkSpeed = humanoid.WalkSpeed if math.abs(currentWalkSpeed - currentSpeed) > 0.1 then currentSpeed = currentWalkSpeed currentSpeedValue.Text = tostring(math.floor(currentWalkSpeed)) -- Hiệu ứng khi speed thay đổi từ bên ngoài currentSpeedValue.TextColor3 = Color3.fromRGB(255, 100, 100) task.wait(0.05) currentSpeedValue.TextColor3 = Color3.fromRGB(255, 255, 0) end end end) -- Xử lý khi character thay đổi player.CharacterAdded:Connect(function(newCharacter) character = newCharacter humanoid = character:WaitForChild("Humanoid") -- Lưu tốc độ gốc mới originalWalkSpeed = humanoid.WalkSpeed originalJumpPower = humanoid.JumpPower currentSpeed = originalWalkSpeed -- Cập nhật hiển thị if currentSpeedValue then currentSpeedValue.Text = tostring(math.floor(currentSpeed)) speedInputBox.Text = tostring(currentSpeed) end end) -- Thêm hiệu ứng visual local function addVisualEffects() local function addCorner(obj, radius) local corner = Instance.new("UICorner") corner.CornerRadius = UDim.new(0, radius) corner.Parent = obj end local function addShadow(obj) local shadow = Instance.new("UIStroke") shadow.Color = Color3.fromRGB(0, 0, 0) shadow.Thickness = 2 shadow.Transparency = 0.3 shadow.Parent = obj end -- Menu toggle button addCorner(menuToggle, 10) addShadow(menuToggle) -- Speed menu addCorner(speedMenu, 10) addShadow(speedMenu) -- Title frame addCorner(titleFrame, 10) -- Current speed display addCorner(currentSpeedDisplay, 8) addShadow(currentSpeedDisplay) -- Input frame addCorner(inputFrame, 8) addShadow(inputFrame) -- Input box addCorner(speedInputBox, 6) -- Buttons addCorner(setSpeedButton, 8) addShadow(setSpeedButton) addCorner(resetButton, 6) addShadow(resetButton) -- Preset buttons for _, child in ipairs(presetButtonsFrame:GetChildren()) do if child:IsA("TextButton") then addCorner(child, 6) addShadow(child) end end -- Notification addCorner(notificationFrame, 10) addShadow(notificationFrame) end addVisualEffects() -- Hiệu ứng hover cho nút menu menuToggle.MouseEnter:Connect(function() TweenService:Create(menuToggle, TweenInfo.new(0.2), { BackgroundColor3 = isMenuOpen and Color3.fromRGB(220, 80, 80) or Color3.fromRGB(60, 140, 220) }):Play() end) menuToggle.MouseLeave:Connect(function() TweenService:Create(menuToggle, TweenInfo.new(0.2), { BackgroundColor3 = isMenuOpen and Color3.fromRGB(200, 60, 60) or Color3.fromRGB(40, 120, 200) }):Play() end) -- Hiệu ứng hover cho nút set speed setSpeedButton.MouseEnter:Connect(function() TweenService:Create(setSpeedButton, TweenInfo.new(0.2), { BackgroundColor3 = Color3.fromRGB(0, 180, 255) }):Play() end) setSpeedButton.MouseLeave:Connect(function() TweenService:Create(setSpeedButton, TweenInfo.new(0.2), { BackgroundColor3 = Color3.fromRGB(0, 150, 255) }):Play() end) -- Hướng dẫn sử dụng nhanh task.wait(1) showNotification("⚡ Nhấn nút ⚡ để mở menu Speed Control", Color3.fromRGB(40, 40, 60)) print("✅ Speed Control GUI - Đã sẵn sàng!") print("📋 Shortcuts: Ctrl+S (Toggle Menu) | Ctrl+R (Reset) | Enter (Apply)")