-- [[ 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 ]] local Players = game:GetService("Players") local RunService = game:GetService("RunService") local UserInputService = game:GetService("UserInputService") local CoreGui = game:GetService("CoreGui") local player = Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") -- SETTINGS local autoHit = true local PREDICTIVE_OFFSET = 7.5 -- Default offset -- CACHED STATE local hasClicked = false local cachedLine = nil local cachedHitBtn = nil local cachedWhiteZone = nil local posConnection = nil -------------------------------------------------------------------------------- -- 1. SIGNAL-BASED BUTTON PRESS -------------------------------------------------------------------------------- local function fireButtonClick(button) if not button then return end if getconnections then local events = { button.MouseButton1Click, button.MouseButton1Down, button.MouseButton1Up, button.Activated } for _, event in ipairs(events) do for _, conn in ipairs(getconnections(event)) do if conn.Function then task.spawn(conn.Function) elseif conn.Fire then pcall(function() conn:Fire() end) end end end elseif firesignal then pcall(function() firesignal(button.MouseButton1Click) end) pcall(function() firesignal(button.Activated) end) end end -------------------------------------------------------------------------------- -- 2. REUSABLE DRAG FUNCTION -------------------------------------------------------------------------------- local function makeDraggable(guiObject) local dragging, dragInput, dragStart, startPos local function update(input) local delta = input.Position - dragStart guiObject.Position = UDim2.new( startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y ) end guiObject.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = guiObject.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) guiObject.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then dragInput = input end end) UserInputService.InputChanged:Connect(function(input) if input == dragInput and dragging then update(input) end end) end -------------------------------------------------------------------------------- -- 3. MOVABLE & MINIMIZABLE GUI -------------------------------------------------------------------------------- local screenGui = Instance.new("ScreenGui") screenGui.Name = "AutoHitGUI" screenGui.ResetOnSpawn = false local parentTarget = pcall(function() return CoreGui end) and CoreGui or playerGui:WaitForChild("PlayerGui") screenGui.Parent = parentTarget -- Main Frame (Resized to fit Offset Input) local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 200, 0, 130) mainFrame.Position = UDim2.new(0.5, -100, 0.45, 0) mainFrame.BackgroundColor3 = Color3.fromRGB(25, 25, 25) mainFrame.BorderSizePixel = 0 mainFrame.Active = true mainFrame.Parent = screenGui local mainCorner = Instance.new("UICorner") mainCorner.CornerRadius = UDim.new(0, 8) mainCorner.Parent = mainFrame makeDraggable(mainFrame) -- Title Bar local titleLabel = Instance.new("TextLabel") titleLabel.Size = UDim2.new(1, 0, 0, 30) titleLabel.BackgroundColor3 = Color3.fromRGB(35, 35, 35) titleLabel.Text = " Auto Hit Control" titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255) titleLabel.TextXAlignment = Enum.TextXAlignment.Left titleLabel.Font = Enum.Font.SourceSansBold titleLabel.TextSize = 14 titleLabel.Parent = mainFrame local titleCorner = Instance.new("UICorner") titleCorner.CornerRadius = UDim.new(0, 8) titleCorner.Parent = titleLabel -- Minimized Button (Positioned higher at middle left) local minimizedBtn = Instance.new("TextButton") minimizedBtn.Size = UDim2.new(0, 45, 0, 45) minimizedBtn.Position = UDim2.new(0, 10, 0.5, -75) minimizedBtn.BackgroundColor3 = Color3.fromRGB(35, 35, 35) minimizedBtn.Text = "Hit" minimizedBtn.TextColor3 = Color3.fromRGB(255, 255, 255) minimizedBtn.Font = Enum.Font.SourceSansBold minimizedBtn.TextSize = 13 minimizedBtn.Visible = false minimizedBtn.Active = true minimizedBtn.Parent = screenGui local minCorner = Instance.new("UICorner") minCorner.CornerRadius = UDim.new(0, 8) minCorner.Parent = minimizedBtn local minStroke = Instance.new("UIStroke") minStroke.Color = Color3.fromRGB(60, 60, 60) minStroke.Thickness = 1.5 minStroke.Parent = minimizedBtn makeDraggable(minimizedBtn) -- Minimize Button (Title Bar) local minimizeBtn = Instance.new("TextButton") minimizeBtn.Size = UDim2.new(0, 24, 0, 24) minimizeBtn.Position = UDim2.new(1, -27, 0, 3) minimizeBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50) minimizeBtn.Text = "-" minimizeBtn.TextColor3 = Color3.fromRGB(255, 255, 255) minimizeBtn.Font = Enum.Font.SourceSansBold minimizeBtn.TextSize = 18 minimizeBtn.Parent = mainFrame local minimizeBtnCorner = Instance.new("UICorner") minimizeBtnCorner.CornerRadius = UDim.new(0, 4) minimizeBtnCorner.Parent = minimizeBtn minimizeBtn.MouseButton1Click:Connect(function() mainFrame.Visible = false minimizedBtn.Visible = true end) minimizedBtn.MouseButton1Click:Connect(function() mainFrame.Visible = true minimizedBtn.Visible = false end) -- Toggle Auto Hit Button local toggleBtn = Instance.new("TextButton") toggleBtn.Size = UDim2.new(0.9, 0, 0, 35) toggleBtn.Position = UDim2.new(0.05, 0, 0, 40) toggleBtn.Font = Enum.Font.SourceSansSemibold toggleBtn.TextSize = 14 toggleBtn.Parent = mainFrame local toggleCorner = Instance.new("UICorner") toggleCorner.CornerRadius = UDim.new(0, 6) toggleCorner.Parent = toggleBtn local function updateToggleVisuals() if autoHit then toggleBtn.BackgroundColor3 = Color3.fromRGB(46, 139, 87) toggleBtn.Text = "Auto Hit: ON" toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255) else toggleBtn.BackgroundColor3 = Color3.fromRGB(139, 0, 0) toggleBtn.Text = "Auto Hit: OFF" toggleBtn.TextColor3 = Color3.fromRGB(200, 200, 200) end end toggleBtn.MouseButton1Click:Connect(function() autoHit = not autoHit updateToggleVisuals() end) updateToggleVisuals() -- Offset Input Box local offsetInput = Instance.new("TextBox") offsetInput.Size = UDim2.new(0.9, 0, 0, 35) offsetInput.Position = UDim2.new(0.05, 0, 0, 82) offsetInput.BackgroundColor3 = Color3.fromRGB(45, 45, 45) offsetInput.Text = "Offset: " .. PREDICTIVE_OFFSET offsetInput.TextColor3 = Color3.fromRGB(255, 255, 255) offsetInput.Font = Enum.Font.SourceSansSemibold offsetInput.TextSize = 14 offsetInput.ClearTextOnFocus = true offsetInput.Parent = mainFrame local offsetCorner = Instance.new("UICorner") offsetCorner.CornerRadius = UDim.new(0, 6) offsetCorner.Parent = offsetInput offsetInput.FocusLost:Connect(function() local num = tonumber(offsetInput.Text) if num then PREDICTIVE_OFFSET = num end offsetInput.Text = "Offset: " .. PREDICTIVE_OFFSET end) -------------------------------------------------------------------------------- -- 4. FAST LINE DETECTION ENGINE -------------------------------------------------------------------------------- local function checkZone() if not autoHit or not cachedLine or not cachedHitBtn then return end local lineY = cachedLine.AbsolutePosition.Y + (cachedLine.AbsoluteSize.Y / 2) local isInZone = false if cachedWhiteZone then local zoneTop = cachedWhiteZone.AbsolutePosition.Y - PREDICTIVE_OFFSET local zoneBottom = cachedWhiteZone.AbsolutePosition.Y + cachedWhiteZone.AbsoluteSize.Y + PREDICTIVE_OFFSET if lineY >= zoneTop and lineY <= zoneBottom then isInZone = true end else local bar = cachedLine.Parent local barTop = bar.AbsolutePosition.Y local relativeY = (lineY - barTop) / bar.AbsoluteSize.Y if relativeY >= 0 and relativeY <= 0.15 then isInZone = true end end if isInZone then if not hasClicked then hasClicked = true fireButtonClick(cachedHitBtn) end else hasClicked = false end end local function updateCache() local inGame = playerGui:FindFirstChild("Frames") and playerGui.Frames:FindFirstChild("InGame") if not inGame then cachedLine, cachedHitBtn, cachedWhiteZone = nil, nil, nil return false end local bar = inGame:FindFirstChild("Bar") local hit = inGame:FindFirstChild("Hit") if bar and hit and bar.Visible and hit.Visible then local line = bar:FindFirstChild("Line") if line and line.Visible then if cachedLine ~= line then cachedLine = line cachedHitBtn = hit cachedWhiteZone = nil for _, child in ipairs(bar:GetChildren()) do if child:IsA("GuiObject") and child.Name ~= "Line" then local name = child.Name:lower() if name:find("white") or name:find("target") or name:find("zone") or name:find("oneshot") or child.BackgroundColor3 == Color3.fromRGB(255, 255, 255) then cachedWhiteZone = child break end end end if posConnection then posConnection:Disconnect() end posConnection = cachedLine:GetPropertyChangedSignal("Position"):Connect(function() checkZone() end) end return true end end cachedLine, cachedHitBtn, cachedWhiteZone = nil, nil, nil return false end RunService.RenderStepped:Connect(function() if updateCache() then checkZone() else hasClicked = false end end)