Mobile Autoclicker Script
Key RequiredUniversal

Mobile Autoclicker Script

Universal ScriptNinja63_ByMyBuyByeNinja63_ByMyBuyBye 383 views 18.7K executesUpdated Sep 16, 2026
Unrated
00
Lua Script•930 lines (36672 chars)
-- Delta Auto Clicker & Gun Macro V8.2 (Auto-Independent Mode & Isolated Core Loops)
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local VirtualInputManager = game:GetService("VirtualInputManager")
local CoreGui = game:GetService("CoreGui")
local HttpService = game:GetService("HttpService")

local player = Players.LocalPlayer
local CONFIG_FILE = "DeltaGunMacro_Config.json"

-- Disconnect existing event connections on re-execution
if getgenv().DeltaAutoClickerConnections then
    for _, conn in ipairs(getgenv().DeltaAutoClickerConnections) do
        if conn and conn.Connected then
            conn:Disconnect()
        end
    end
end
getgenv().DeltaAutoClickerConnections = {}

local function trackConn(conn)
    table.insert(getgenv().DeltaAutoClickerConnections, conn)
    return conn
end

local targetGui = (gethui and gethui()) or CoreGui
if not pcall(function() local _ = targetGui.Name end) then
    targetGui = player:WaitForChild("PlayerGui")
end

if targetGui:FindFirstChild("CustomAutoClicker") then
    targetGui.CustomAutoClicker:Destroy()
end

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "CustomAutoClicker"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.IgnoreGuiInset = true
screenGui.Parent = targetGui

-- Settings & Variables
local clicking = false
local redirectTaps = false
local extraTarget2Enabled = false
local extraTarget3Enabled = false
local clickDelay = 0.001
local activeCores = 1
local currentMode = "Center"
local isLocked = false
local isUILocked = false
local hideCircle = false
local hideCrosshair = false

-- Independent Speed Settings
local independentSpeeds = false
local selectedSpeedCore = 1
local coreDelays = {0.001, 0.001, 0.001}

-- Independent Target Offsets
local offsetX1, offsetY1 = 0, 0
local offsetX2, offsetY2 = 0, 0
local offsetX3, offsetY3 = 0, 0
local selectedMoverTarget = 1

local crosshairSize = 16
local adjustmentsSet = false
local isRedirecting = false

-- Helper function to create crosshairs
local function createCrosshair(color)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.fromOffset(crosshairSize, crosshairSize)
    frame.AnchorPoint = Vector2.new(0.5, 0.5)
    frame.BackgroundTransparency = 1
    frame.Active = false
    frame.Visible = false
    frame.ZIndex = 99999
    frame.Parent = screenGui

    local h = Instance.new("Frame")
    h.Size = UDim2.new(1, 0, 0, 2)
    h.Position = UDim2.new(0, 0, 0.5, -1)
    h.BackgroundColor3 = color
    h.BorderSizePixel = 0
    h.Active = false
    h.Parent = frame

    local v = Instance.new("Frame")
    v.Size = UDim2.new(0, 2, 1, 0)
    v.Position = UDim2.new(0.5, -1, 0, 0)
    v.BackgroundColor3 = color
    v.BorderSizePixel = 0
    v.Active = false
    v.Parent = frame

    return frame, h, v
end

-- Crosshairs
local crosshairFrame1, hLine1, vLine1 = createCrosshair(Color3.fromRGB(255, 50, 50))
local crosshairFrame2, hLine2, vLine2 = createCrosshair(Color3.fromRGB(50, 180, 255))
local crosshairFrame3, hLine3, vLine3 = createCrosshair(Color3.fromRGB(220, 50, 255))

-- Main Draggable Header Frame
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 400, 0, 45)
mainFrame.Position = UDim2.new(0.5, -200, 0, 30)
mainFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 32)
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Parent = screenGui

local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 12)
corner.Parent = mainFrame

local stroke = Instance.new("UIStroke")
stroke.Color = Color3.fromRGB(80, 80, 95)
stroke.Thickness = 1.5
stroke.Parent = mainFrame

-- Main Frame Dragging Logic
local draggingMain = false
local mainDragStart, mainStartPos

mainFrame.InputBegan:Connect(function(input)
    if not isUILocked and (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) then
        draggingMain = true
        mainDragStart = input.Position
        mainStartPos = mainFrame.Position
    end
end)

trackConn(UserInputService.InputChanged:Connect(function(input)
    if draggingMain and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        local delta = input.Position - mainDragStart
        mainFrame.Position = UDim2.new(
            mainStartPos.X.Scale, 
            mainStartPos.X.Offset + delta.X, 
            mainStartPos.Y.Scale, 
            mainStartPos.Y.Offset + delta.Y
        )
    end
end))

trackConn(UserInputService.InputEnded:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        draggingMain = false
    end
end))

-- Header Controls
local toggleBtn = Instance.new("TextButton")
toggleBtn.Size = UDim2.new(0, 70, 0, 31)
toggleBtn.Position = UDim2.new(0, 7, 0, 7)
toggleBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
toggleBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleBtn.TextSize = 12
toggleBtn.Font = Enum.Font.GothamBold
toggleBtn.Text = "OFF"
toggleBtn.BorderSizePixel = 0
toggleBtn.Parent = mainFrame

local toggleCorner = Instance.new("UICorner")
toggleCorner.CornerRadius = UDim.new(0, 8)
toggleCorner.Parent = toggleBtn

local speedBox = Instance.new("TextBox")
speedBox.Size = UDim2.new(0, 55, 0, 31)
speedBox.Position = UDim2.new(0, 82, 0, 7)
speedBox.BackgroundColor3 = Color3.fromRGB(18, 18, 22)
speedBox.TextColor3 = Color3.fromRGB(255, 255, 255)
speedBox.PlaceholderColor3 = Color3.fromRGB(120, 120, 130)
speedBox.Font = Enum.Font.GothamMedium
speedBox.TextSize = 10
speedBox.PlaceholderText = "Speed"
speedBox.Text = "0.001"
speedBox.ClearTextOnFocus = false
speedBox.BorderSizePixel = 0
speedBox.Parent = mainFrame

local speedCorner = Instance.new("UICorner")
speedCorner.CornerRadius = UDim.new(0, 8)
speedCorner.Parent = speedBox

local coresBtn = Instance.new("TextButton")
coresBtn.Size = UDim2.new(0, 185, 0, 31)
coresBtn.Position = UDim2.new(0, 142, 0, 7)
coresBtn.BackgroundColor3 = Color3.fromRGB(90, 50, 130)
coresBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
coresBtn.TextSize = 11
coresBtn.Font = Enum.Font.GothamBold
coresBtn.Text = "Mode: 1 Core (Fast)"
coresBtn.BorderSizePixel = 0
coresBtn.Parent = mainFrame

local coresCorner = Instance.new("UICorner")
coresCorner.CornerRadius = UDim.new(0, 8)
coresCorner.Parent = coresBtn

local settingsBtn = Instance.new("TextButton")
settingsBtn.Size = UDim2.new(0, 35, 0, 31)
settingsBtn.Position = UDim2.new(0, 332, 0, 7)
settingsBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
settingsBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
settingsBtn.TextSize = 14
settingsBtn.Font = Enum.Font.GothamBold
settingsBtn.Text = "⚙"
settingsBtn.BorderSizePixel = 0
settingsBtn.Parent = mainFrame

local settingsCorner = Instance.new("UICorner")
settingsCorner.CornerRadius = UDim.new(0, 8)
settingsCorner.Parent = settingsBtn

-- Scrollable Settings Outer Panel
local settingsPanel = Instance.new("Frame")
settingsPanel.Size = UDim2.new(0, 400, 0, 230)
settingsPanel.Position = UDim2.new(0, 0, 0, 50)
settingsPanel.BackgroundColor3 = Color3.fromRGB(22, 22, 26)
settingsPanel.BorderSizePixel = 0
settingsPanel.Visible = false
settingsPanel.Parent = mainFrame

local panelCorner = Instance.new("UICorner")
panelCorner.CornerRadius = UDim.new(0, 10)
panelCorner.Parent = settingsPanel

local panelStroke = Instance.new("UIStroke")
panelStroke.Color = Color3.fromRGB(65, 65, 75)
panelStroke.Thickness = 1.2
panelStroke.Parent = settingsPanel

local settingsScroll = Instance.new("ScrollingFrame")
settingsScroll.Size = UDim2.new(1, -12, 1, -12)
settingsScroll.Position = UDim2.new(0, 6, 0, 6)
settingsScroll.BackgroundTransparency = 1
settingsScroll.BorderSizePixel = 0
settingsScroll.ScrollBarThickness = 6
settingsScroll.ScrollBarImageColor3 = Color3.fromRGB(90, 90, 110)
settingsScroll.CanvasSize = UDim2.new(0, 0, 0, 0)
settingsScroll.Parent = settingsPanel

local scrollList = Instance.new("UIListLayout")
scrollList.SortOrder = Enum.SortOrder.LayoutOrder
scrollList.Padding = UDim.new(0, 5)
scrollList.Parent = settingsScroll

scrollList:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    settingsScroll.CanvasSize = UDim2.new(0, 0, 0, scrollList.AbsoluteContentSize.Y + 10)
end)

-- Helper function to create target markers
local function createTargetMarker(color, defaultPos)
    local marker = Instance.new("Frame")
    marker.Size = UDim2.fromOffset(40, 40)
    marker.AnchorPoint = Vector2.new(0.5, 0.5)
    marker.Position = defaultPos
    marker.BackgroundColor3 = color
    marker.BackgroundTransparency = 0.6
    marker.Visible = false
    marker.Active = false
    marker.Parent = screenGui

    local c = Instance.new("UICorner")
    c.CornerRadius = UDim.new(1, 0)
    c.Parent = marker

    return marker
end

local customTargetMarker1 = createTargetMarker(Color3.fromRGB(255, 50, 50), UDim2.new(0.5, 0, 0.5, 0))
local customTargetMarker2 = createTargetMarker(Color3.fromRGB(50, 180, 255), UDim2.new(0.5, 80, 0.5, 0))
local customTargetMarker3 = createTargetMarker(Color3.fromRGB(220, 50, 255), UDim2.new(0.5, -80, 0.5, 0))

-- Position Resolver per Core
local function getTouchCoordinates(coreIndex)
    local screenSize = screenGui.AbsoluteSize
    local baseX, baseY
    local offX, offY = 0, 0

    if coreIndex == 2 and extraTarget2Enabled and activeCores >= 2 then
        offX, offY = offsetX2, offsetY2
        if currentMode == "Custom" then
            baseX = customTargetMarker2.AbsolutePosition.X + (customTargetMarker2.AbsoluteSize.X / 2)
            baseY = customTargetMarker2.AbsolutePosition.Y + (customTargetMarker2.AbsoluteSize.Y / 2)
        else
            baseX = (screenSize.X / 2) + 80
            baseY = screenSize.Y / 2
        end
    elseif coreIndex == 3 and extraTarget3Enabled and activeCores >= 3 then
        offX, offY = offsetX3, offsetY3
        if currentMode == "Custom" then
            baseX = customTargetMarker3.AbsolutePosition.X + (customTargetMarker3.AbsoluteSize.X / 2)
            baseY = customTargetMarker3.AbsolutePosition.Y + (customTargetMarker3.AbsoluteSize.Y / 2)
        else
            baseX = (screenSize.X / 2) - 80
            baseY = screenSize.Y / 2
        end
    else
        offX, offY = offsetX1, offsetY1
        if currentMode == "Custom" then
            baseX = customTargetMarker1.AbsolutePosition.X + (customTargetMarker1.AbsoluteSize.X / 2)
            baseY = customTargetMarker1.AbsolutePosition.Y + (customTargetMarker1.AbsoluteSize.Y / 2)
        else
            baseX = screenSize.X / 2
            baseY = screenSize.Y / 2
        end
    end

    return baseX + offX, baseY + offY
end

-- Fast Single Touch Execution
local function executeSingleFire(coreIndex)
    local touchX, touchY = getTouchCoordinates(coreIndex)
    local touchId = 70000 + coreIndex
    VirtualInputManager:SendTouchEvent(touchId, 0, touchX, touchY)
    VirtualInputManager:SendTouchEvent(touchId, 2, touchX, touchY)
end

-- Unified Fire Execution
local function executeAllFireEvents()
    for i = 1, activeCores do
        executeSingleFire(i)
    end
end

local function updateCrosshairIndicator()
    -- Primary Indicator
    local touchX1, touchY1 = getTouchCoordinates(1)
    crosshairFrame1.Position = UDim2.fromOffset(touchX1, touchY1)
    crosshairFrame1.Size = UDim2.fromOffset(crosshairSize, crosshairSize)
    crosshairFrame1.Visible = not hideCrosshair
    customTargetMarker1.Visible = (currentMode == "Custom") and (not hideCircle)

    local crossColor1 = adjustmentsSet and Color3.fromRGB(50, 255, 100) or Color3.fromRGB(255, 50, 50)
    hLine1.BackgroundColor3 = crossColor1
    vLine1.BackgroundColor3 = crossColor1

    -- Secondary Indicator
    if extraTarget2Enabled and activeCores >= 2 then
        local touchX2, touchY2 = getTouchCoordinates(2)
        crosshairFrame2.Position = UDim2.fromOffset(touchX2, touchY2)
        crosshairFrame2.Size = UDim2.fromOffset(crosshairSize, crosshairSize)
        crosshairFrame2.Visible = not hideCrosshair
        customTargetMarker2.Visible = (currentMode == "Custom") and (not hideCircle)

        local crossColor2 = adjustmentsSet and Color3.fromRGB(50, 255, 100) or Color3.fromRGB(50, 180, 255)
        hLine2.BackgroundColor3 = crossColor2
        vLine2.BackgroundColor3 = crossColor2
    else
        crosshairFrame2.Visible = false
        customTargetMarker2.Visible = false
    end

    -- Tertiary Indicator
    if extraTarget3Enabled and activeCores >= 3 then
        local touchX3, touchY3 = getTouchCoordinates(3)
        crosshairFrame3.Position = UDim2.fromOffset(touchX3, touchY3)
        crosshairFrame3.Size = UDim2.fromOffset(crosshairSize, crosshairSize)
        crosshairFrame3.Visible = not hideCrosshair
        customTargetMarker3.Visible = (currentMode == "Custom") and (not hideCircle)

        local crossColor3 = adjustmentsSet and Color3.fromRGB(50, 255, 100) or Color3.fromRGB(220, 50, 255)
        hLine3.BackgroundColor3 = crossColor3
        vLine3.BackgroundColor3 = crossColor3
    else
        crosshairFrame3.Visible = false
        customTargetMarker3.Visible = false
    end
end

-- Marker Drag Handler Creator
local function setupMarkerDrag(marker)
    local dragging = false
    local dragStart, startPos

    marker.InputBegan:Connect(function(input)
        if not isLocked and (input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch) then
            dragging = true
            dragStart = input.Position
            startPos = marker.Position
        end
    end)

    trackConn(UserInputService.InputChanged:Connect(function(input)
        if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            local delta = input.Position - dragStart
            marker.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
            updateCrosshairIndicator()
        end
    end))

    trackConn(UserInputService.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = false
        end
    end))
end

setupMarkerDrag(customTargetMarker1)
setupMarkerDrag(customTargetMarker2)
setupMarkerDrag(customTargetMarker3)

-- Scrollable Menu Buttons Creator
local function createMenuBtn(text, order, bg)
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(1, -6, 0, 24)
    btn.BackgroundColor3 = bg
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.TextSize = 11
    btn.Font = Enum.Font.GothamBold
    btn.Text = text
    btn.BorderSizePixel = 0
    btn.LayoutOrder = order
    btn.Parent = settingsScroll

    local c = Instance.new("UICorner")
    c.CornerRadius = UDim.new(0, 6)
    c.Parent = btn
    return btn
end

local redirectBtn = createMenuBtn("Redirect Manual Taps: OFF", 1, Color3.fromRGB(45, 45, 50))
local extraTarget2Btn = createMenuBtn("Secondary Target Point (Core 2): OFF", 2, Color3.fromRGB(45, 45, 50))
local extraTarget3Btn = createMenuBtn("Tertiary Target Point (Core 3): OFF", 3, Color3.fromRGB(45, 45, 50))
local centerOptBtn = createMenuBtn("Target Mode: Center Screen [ACTIVE]", 4, Color3.fromRGB(40, 100, 140))
local customOptBtn = createMenuBtn("Target Mode: Custom / Draggable", 5, Color3.fromRGB(45, 45, 50))
local lockOptBtn = createMenuBtn("Lock Custom Target Location: OFF", 6, Color3.fromRGB(45, 45, 50))
local lockUIBtn = createMenuBtn("Lock Header UI Position: OFF", 7, Color3.fromRGB(45, 45, 50))
local hideCircleBtn = createMenuBtn("Hide Target Circle: OFF", 8, Color3.fromRGB(45, 45, 50))
local hideCrosshairBtn = createMenuBtn("Hide Crosshair Indicator: OFF", 9, Color3.fromRGB(45, 45, 50))

-- Dynamic Core Visibility Update
local function updateTargetTogglesVisibility()
    extraTarget2Btn.Visible = (activeCores >= 2)
    extraTarget3Btn.Visible = (activeCores >= 3)
end
updateTargetTogglesVisibility()

-- Size Controls Container
local sizeFrame = Instance.new("Frame")
sizeFrame.Size = UDim2.new(1, -6, 0, 24)
sizeFrame.BackgroundTransparency = 1
sizeFrame.LayoutOrder = 10
sizeFrame.Parent = settingsScroll

local sizeLabel = Instance.new("TextLabel")
sizeLabel.Size = UDim2.new(0, 120, 1, 0)
sizeLabel.BackgroundTransparency = 1
sizeLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
sizeLabel.TextSize = 11
sizeLabel.Font = Enum.Font.GothamBold
sizeLabel.Text = "Crosshair Size: 16px"
sizeLabel.Parent = sizeFrame

local function createMiniBtn(text, posX, parent)
    local b = Instance.new("TextButton")
    b.Size = UDim2.new(0, 55, 1, 0)
    b.Position = UDim2.new(0, posX, 0, 0)
    b.BackgroundColor3 = Color3.fromRGB(55, 55, 60)
    b.TextColor3 = Color3.fromRGB(255, 255, 255)
    b.Text = text
    b.Font = Enum.Font.GothamBold
    b.TextSize = 10
    b.Parent = parent
    local c = Instance.new("UICorner")
    c.CornerRadius = UDim.new(0, 4)
    c.Parent = b
    return b
end

createMiniBtn("-5", 130, sizeFrame).MouseButton1Click:Connect(function() crosshairSize = math.max(6, crosshairSize - 5) sizeLabel.Text = "Crosshair Size: "..crosshairSize.."px" updateCrosshairIndicator() end)
createMiniBtn("-1", 190, sizeFrame).MouseButton1Click:Connect(function() crosshairSize = math.max(6, crosshairSize - 1) sizeLabel.Text = "Crosshair Size: "..crosshairSize.."px" updateCrosshairIndicator() end)
createMiniBtn("+1", 250, sizeFrame).MouseButton1Click:Connect(function() crosshairSize = math.min(60, crosshairSize + 1) sizeLabel.Text = "Crosshair Size: "..crosshairSize.."px" updateCrosshairIndicator() end)
createMiniBtn("+5", 310, sizeFrame).MouseButton1Click:Connect(function() crosshairSize = math.min(60, crosshairSize + 5) sizeLabel.Text = "Crosshair Size: "..crosshairSize.."px" updateCrosshairIndicator() end)

-- Dedicated Target Mover Section
local moverTargetBtn = createMenuBtn("🎯 Mover Adjusting: Target 1 (Red)", 11, Color3.fromRGB(60, 60, 80))

local function getSelectedOffset()
    if selectedMoverTarget == 2 then return offsetX2, offsetY2
    elseif selectedMoverTarget == 3 then return offsetX3, offsetY3
    else return offsetX1, offsetY1 end
end

local function setSelectedOffset(x, y)
    if selectedMoverTarget == 2 then offsetX2, offsetY2 = x, y
    elseif selectedMoverTarget == 3 then offsetX3, offsetY3 = x, y
    else offsetX1, offsetY1 = x, y end
end

local function createOffsetRow(labelText, order)
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, -6, 0, 24)
    frame.BackgroundTransparency = 1
    frame.LayoutOrder = order
    frame.Parent = settingsScroll

    local label = Instance.new("TextLabel")
    label.Size = UDim2.new(0, 120, 1, 0)
    label.BackgroundTransparency = 1
    label.TextColor3 = Color3.fromRGB(255, 255, 255)
    label.TextSize = 11
    label.Font = Enum.Font.GothamBold
    label.Text = labelText
    label.Parent = frame

    local isX = labelText:find("X") ~= nil

    local function updateVal(delta)
        local curX, curY = getSelectedOffset()
        if isX then curX = curX + delta else curY = curY + delta end
        setSelectedOffset(curX, curY)
        label.Text = (isX and "Offset X: " or "Offset Y: ") .. (isX and curX or curY)
        adjustmentsSet = false
        updateCrosshairIndicator()
    end

    createMiniBtn("-10", 130, frame).MouseButton1Click:Connect(function() updateVal(-10) end)
    createMiniBtn("-1", 190, frame).MouseButton1Click:Connect(function() updateVal(-1) end)
    createMiniBtn("+1", 250, frame).MouseButton1Click:Connect(function() updateVal(1) end)
    createMiniBtn("+10", 310, frame).MouseButton1Click:Connect(function() updateVal(10) end)

    return label
end

local xLabel = createOffsetRow("Offset X: 0", 12)
local yLabel = createOffsetRow("Offset Y: 0", 13)

local function refreshMoverLabels()
    local names = {"Target 1 (Red)", "Target 2 (Cyan)", "Target 3 (Purple)"}
    moverTargetBtn.Text = "🎯 Mover Adjusting: " .. names[selectedMoverTarget]
    local curX, curY = getSelectedOffset()
    xLabel.Text = "Offset X: " .. curX
    yLabel.Text = "Offset Y: " .. curY
end

moverTargetBtn.MouseButton1Click:Connect(function()
    selectedMoverTarget = selectedMoverTarget + 1
    if selectedMoverTarget > activeCores then selectedMoverTarget = 1 end
    refreshMoverLabels()
end)

-- Dedicated Per-Core Speed Control Section
local indSpeedToggleBtn = createMenuBtn("Independent Core Speeds: OFF (Equal Speeds)", 14, Color3.fromRGB(45, 45, 50))
local speedCoreSelectBtn = createMenuBtn("⏱ Speed Adjusting: Core 1 (Red)", 15, Color3.fromRGB(70, 50, 90))

local coreSpeedFrame = Instance.new("Frame")
coreSpeedFrame.Size = UDim2.new(1, -6, 0, 24)
coreSpeedFrame.BackgroundTransparency = 1
coreSpeedFrame.LayoutOrder = 16
coreSpeedFrame.Parent = settingsScroll

local coreSpeedLabel = Instance.new("TextLabel")
coreSpeedLabel.Size = UDim2.new(0, 180, 1, 0)
coreSpeedLabel.BackgroundTransparency = 1
coreSpeedLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
coreSpeedLabel.TextSize = 11
coreSpeedLabel.Font = Enum.Font.GothamBold
coreSpeedLabel.Text = "Core 1 Speed: 0.001s"
coreSpeedLabel.TextXAlignment = Enum.TextXAlignment.Left
coreSpeedLabel.Parent = coreSpeedFrame

local confirmSpeedBtn = Instance.new("TextButton")
confirmSpeedBtn.Size = UDim2.new(0, 180, 1, 0)
confirmSpeedBtn.Position = UDim2.new(0, 185, 0, 0)
confirmSpeedBtn.BackgroundColor3 = Color3.fromRGB(40, 120, 70)
confirmSpeedBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
confirmSpeedBtn.TextSize = 10
confirmSpeedBtn.Font = Enum.Font.GothamBold
confirmSpeedBtn.Text = "🔒 LOCK SPEED TO CORE"
confirmSpeedBtn.Parent = coreSpeedFrame

local confirmCorner = Instance.new("UICorner")
confirmCorner.CornerRadius = UDim.new(0, 6)
confirmCorner.Parent = confirmSpeedBtn

local function refreshSpeedControls()
    local names = {"Core 1 (Red)", "Core 2 (Cyan)", "Core 3 (Purple)"}
    speedCoreSelectBtn.Text = "⏱ Speed Adjusting: " .. names[selectedSpeedCore]
    coreSpeedLabel.Text = "Core " .. selectedSpeedCore .. " Speed: " .. string.format("%.4f", coreDelays[selectedSpeedCore] or 0.001) .. "s"
end

confirmSpeedBtn.MouseButton1Click:Connect(function()
    local val = tonumber(speedBox.Text)
    if val then
        clickDelay = math.max(0, val)
    end

    -- Lock selected core delay
    coreDelays[selectedSpeedCore] = clickDelay
    coreSpeedLabel.Text = "Core " .. selectedSpeedCore .. " Speed: " .. string.format("%.4f", clickDelay) .. "s"

    -- Auto-Enable Independent Speeds mode so individual speeds take effect immediately
    independentSpeeds = true
    indSpeedToggleBtn.Text = "Independent Core Speeds: ON (Custom Per Core)"
    indSpeedToggleBtn.BackgroundColor3 = Color3.fromRGB(40, 140, 80)

    confirmSpeedBtn.Text = "✔ LOCKED (" .. clickDelay .. "s)"
    confirmSpeedBtn.BackgroundColor3 = Color3.fromRGB(50, 180, 90)

    task.delay(1, function()
        confirmSpeedBtn.Text = "🔒 LOCK SPEED TO CORE"
        confirmSpeedBtn.BackgroundColor3 = Color3.fromRGB(40, 120, 70)
    end)
end)

indSpeedToggleBtn.MouseButton1Click:Connect(function()
    independentSpeeds = not independentSpeeds
    indSpeedToggleBtn.Text = "Independent Core Speeds: " .. (independentSpeeds and "ON (Custom Per Core)" or "OFF (Equal Speeds)")
    indSpeedToggleBtn.BackgroundColor3 = independentSpeeds and Color3.fromRGB(40, 140, 80) or Color3.fromRGB(45, 45, 50)
end)

speedCoreSelectBtn.MouseButton1Click:Connect(function()
    selectedSpeedCore = selectedSpeedCore + 1
    if selectedSpeedCore > activeCores then selectedSpeedCore = 1 end
    refreshSpeedControls()
end)

-- Lock & Save Buttons
local setAdjBtn = createMenuBtn("✔ LOCK CROSSHAIR ALIGNMENT", 17, Color3.fromRGB(40, 140, 60))
local saveBtn = createMenuBtn("💾 SAVE CONFIGURATION", 18, Color3.fromRGB(180, 100, 30))

setAdjBtn.MouseButton1Click:Connect(function()
    adjustmentsSet = not adjustmentsSet
    setAdjBtn.BackgroundColor3 = adjustmentsSet and Color3.fromRGB(40, 180, 80) or Color3.fromRGB(40, 140, 60)
    setAdjBtn.Text = adjustmentsSet and "✔ CROSSHAIR LOCKED (GREEN)" or "✔ LOCK CROSSHAIR ALIGNMENT"
    updateCrosshairIndicator()
end)

-- Mode Toggles Connections
redirectBtn.MouseButton1Click:Connect(function()
    redirectTaps = not redirectTaps
    redirectBtn.Text = "Redirect Manual Taps: " .. (redirectTaps and "ON" or "OFF")
    redirectBtn.BackgroundColor3 = redirectTaps and Color3.fromRGB(40, 140, 80) or Color3.fromRGB(45, 45, 50)
end)

extraTarget2Btn.MouseButton1Click:Connect(function()
    extraTarget2Enabled = not extraTarget2Enabled
    extraTarget2Btn.Text = "Secondary Target Point (Core 2): " .. (extraTarget2Enabled and "ON" or "OFF")
    extraTarget2Btn.BackgroundColor3 = extraTarget2Enabled and Color3.fromRGB(40, 140, 80) or Color3.fromRGB(45, 45, 50)
    updateCrosshairIndicator()
end)

extraTarget3Btn.MouseButton1Click:Connect(function()
    extraTarget3Enabled = not extraTarget3Enabled
    extraTarget3Btn.Text = "Tertiary Target Point (Core 3): " .. (extraTarget3Enabled and "ON" or "OFF")
    extraTarget3Btn.BackgroundColor3 = extraTarget3Enabled and Color3.fromRGB(40, 140, 80) or Color3.fromRGB(45, 45, 50)
    updateCrosshairIndicator()
end)

centerOptBtn.MouseButton1Click:Connect(function()
    currentMode = "Center"
    centerOptBtn.BackgroundColor3 = Color3.fromRGB(40, 100, 140)
    centerOptBtn.Text = "Target Mode: Center Screen [ACTIVE]"
    customOptBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
    customOptBtn.Text = "Target Mode: Custom / Draggable"
    updateCrosshairIndicator()
end)

customOptBtn.MouseButton1Click:Connect(function()
    currentMode = "Custom"
    customOptBtn.BackgroundColor3 = Color3.fromRGB(40, 100, 140)
    customOptBtn.Text = "Target Mode: Custom / Draggable [ACTIVE]"
    centerOptBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
    centerOptBtn.Text = "Target Mode: Center Screen"
    updateCrosshairIndicator()
end)

lockOptBtn.MouseButton1Click:Connect(function()
    isLocked = not isLocked
    lockOptBtn.Text = "Lock Custom Target Location: " .. (isLocked and "ON" or "OFF")
    lockOptBtn.BackgroundColor3 = isLocked and Color3.fromRGB(140, 60, 60) or Color3.fromRGB(45, 45, 50)
    customTargetMarker1.Active = not isLocked
    customTargetMarker2.Active = not isLocked
    customTargetMarker3.Active = not isLocked
end)

lockUIBtn.MouseButton1Click:Connect(function()
    isUILocked = not isUILocked
    lockUIBtn.Text = "Lock Header UI Position: " .. (isUILocked and "ON" or "OFF")
    lockUIBtn.BackgroundColor3 = isUILocked and Color3.fromRGB(140, 60, 60) or Color3.fromRGB(45, 45, 50)
end)

hideCircleBtn.MouseButton1Click:Connect(function()
    hideCircle = not hideCircle
    hideCircleBtn.Text = "Hide Target Circle: " .. (hideCircle and "ON" or "OFF")
    hideCircleBtn.BackgroundColor3 = hideCircle and Color3.fromRGB(140, 60, 60) or Color3.fromRGB(45, 45, 50)
    updateCrosshairIndicator()
end)

hideCrosshairBtn.MouseButton1Click:Connect(function()
    hideCrosshair = not hideCrosshair
    hideCrosshairBtn.Text = "Hide Crosshair Indicator: " .. (hideCrosshair and "ON" or "OFF")
    hideCrosshairBtn.BackgroundColor3 = hideCrosshair and Color3.fromRGB(140, 60, 60) or Color3.fromRGB(45, 45, 50)
    updateCrosshairIndicator()
end)

-- Core Toggle Button
coresBtn.MouseButton1Click:Connect(function()
    activeCores = activeCores + 1
    if activeCores > 3 then activeCores = 1 end
    coresBtn.Text = "Mode: " .. activeCores .. " Core" .. (activeCores > 1 and "s (Insane)" or " (Fast)")
    if selectedMoverTarget > activeCores then selectedMoverTarget = 1 end
    if selectedSpeedCore > activeCores then selectedSpeedCore = 1 end
    updateTargetTogglesVisibility()
    refreshMoverLabels()
    refreshSpeedControls()
    updateCrosshairIndicator()
end)

-- Visual Cursors
local cursors = {}
for i = 1, 3 do
    local c = Instance.new("ImageLabel")
    c.Name = "Cursor_"..i
    c.Size = UDim2.fromOffset(24, 24)
    c.AnchorPoint = Vector2.new(0.5, 0.5)
    c.Image = "rbxassetid://103393660678915"
    c.BackgroundTransparency = 1
    c.Visible = false
    c.Active = false
    c.ZIndex = 9999 + i
    c.Parent = screenGui
    cursors[i] = c
end

-- Manual Tap Interceptor
trackConn(UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if not redirectTaps or isRedirecting then return end
    if gameProcessed then return end

    if input.UserInputType == Enum.UserInputType.Touch then
        local touches = UserInputService:GetTouches()
        if #touches > 1 then return end

        isRedirecting = true
        local touchX, touchY = getTouchCoordinates(1)

        pcall(function()
            VirtualInputManager:SendTouchEvent(88888, 0, touchX, touchY)
            VirtualInputManager:SendTouchEvent(88888, 2, touchX, touchY)
        end)

        task.delay(0.04, function()
            isRedirecting = false
        end)
    end
end))

-- High-Speed Loop Firing Engine
local function startClickLoop()
    if independentSpeeds then
        -- Multi-threaded Independent Loops per Core with explicitly isolated arguments
        for i = 1, activeCores do
            task.spawn(function(coreIndex)
                while clicking do
                    local touchX, touchY = getTouchCoordinates(coreIndex)
                    cursors[coreIndex].Position = UDim2.fromOffset(touchX, touchY)
                    cursors[coreIndex].Visible = true

                    executeSingleFire(coreIndex)

                    local delayVal = coreDelays[coreIndex] or 0.001
                    if delayVal > 0 then
                        task.wait(delayVal)
                    else
                        task.wait()
                    end
                end
                cursors[coreIndex].Visible = false
            end, i)
        end
    else
        -- Unified Speed Firing Loop
        task.spawn(function()
            while clicking do
                for i = 1, activeCores do
                    local touchX, touchY = getTouchCoordinates(i)
                    cursors[i].Position = UDim2.fromOffset(touchX, touchY)
                    cursors[i].Visible = true
                end

                executeAllFireEvents()

                if clickDelay > 0 then
                    task.wait(clickDelay)
                else
                    task.wait()
                end
            end

            for i = 1, 3 do cursors[i].Visible = false end
        end)
    end
end

-- Save & Load Config System
local function loadConfig()
    if isfile and isfile(CONFIG_FILE) and readfile then
        local success, data = pcall(function()
            return HttpService:JSONDecode(readfile(CONFIG_FILE))
        end)
        if success and type(data) == "table" then
            clickDelay = tonumber(data.clickDelay) or clickDelay
            activeCores = tonumber(data.activeCores) or activeCores
            extraTarget2Enabled = data.extraTarget2Enabled == true
            extraTarget3Enabled = data.extraTarget3Enabled == true
            currentMode = tostring(data.currentMode) or currentMode

            independentSpeeds = data.independentSpeeds == true
            if data.coreDelays and type(data.coreDelays) == "table" then
                coreDelays[1] = tonumber(data.coreDelays[1]) or coreDelays[1]
                coreDelays[2] = tonumber(data.coreDelays[2]) or coreDelays[2]
                coreDelays[3] = tonumber(data.coreDelays[3]) or coreDelays[3]
            end

            offsetX1 = tonumber(data.offsetX1) or offsetX1
            offsetY1 = tonumber(data.offsetY1) or offsetY1
            offsetX2 = tonumber(data.offsetX2) or offsetX2
            offsetY2 = tonumber(data.offsetY2) or offsetY2
            offsetX3 = tonumber(data.offsetX3) or offsetX3
            offsetY3 = tonumber(data.offsetY3) or offsetY3

            crosshairSize = tonumber(data.crosshairSize) or crosshairSize
            hideCircle = data.hideCircle == true
            hideCrosshair = data.hideCrosshair == true
            isLocked = data.isLocked == true
            isUILocked = data.isUILocked == true
            redirectTaps = data.redirectTaps == true

            speedBox.Text = tostring(clickDelay)
            coresBtn.Text = "Mode: " .. activeCores .. " Core" .. (activeCores > 1 and "s (Insane)" or " (Fast)")
            updateTargetTogglesVisibility()

            indSpeedToggleBtn.Text = "Independent Core Speeds: " .. (independentSpeeds and "ON (Custom Per Core)" or "OFF (Equal Speeds)")
            indSpeedToggleBtn.BackgroundColor3 = independentSpeeds and Color3.fromRGB(40, 140, 80) or Color3.fromRGB(45, 45, 50)

            extraTarget2Btn.Text = "Secondary Target Point (Core 2): " .. (extraTarget2Enabled and "ON" or "OFF")
            extraTarget2Btn.BackgroundColor3 = extraTarget2Enabled and Color3.fromRGB(40, 140, 80) or Color3.fromRGB(45, 45, 50)
            extraTarget3Btn.Text = "Tertiary Target Point (Core 3): " .. (extraTarget3Enabled and "ON" or "OFF")
            extraTarget3Btn.BackgroundColor3 = extraTarget3Enabled and Color3.fromRGB(40, 140, 80) or Color3.fromRGB(45, 45, 50)

            redirectBtn.Text = "Redirect Manual Taps: " .. (redirectTaps and "ON" or "OFF")
            redirectBtn.BackgroundColor3 = redirectTaps and Color3.fromRGB(40, 140, 80) or Color3.fromRGB(45, 45, 50)
            lockOptBtn.Text = "Lock Custom Target Location: " .. (isLocked and "ON" or "OFF")
            lockOptBtn.BackgroundColor3 = isLocked and Color3.fromRGB(140, 60, 60) or Color3.fromRGB(45, 45, 50)
            lockUIBtn.Text = "Lock Header UI Position: " .. (isUILocked and "ON" or "OFF")
            lockUIBtn.BackgroundColor3 = isUILocked and Color3.fromRGB(140, 60, 60) or Color3.fromRGB(45, 45, 50)
            hideCircleBtn.Text = "Hide Target Circle: " .. (hideCircle and "ON" or "OFF")
            hideCircleBtn.BackgroundColor3 = hideCircle and Color3.fromRGB(140, 60, 60) or Color3.fromRGB(45, 45, 50)
            hideCrosshairBtn.Text = "Hide Crosshair Indicator: " .. (hideCrosshair and "ON" or "OFF")
            hideCrosshairBtn.BackgroundColor3 = hideCrosshair and Color3.fromRGB(140, 60, 60) or Color3.fromRGB(45, 45, 50)

            if currentMode == "Custom" then
                customOptBtn.BackgroundColor3 = Color3.fromRGB(40, 100, 140)
                customOptBtn.Text = "Target Mode: Custom / Draggable [ACTIVE]"
                centerOptBtn.BackgroundColor3 = Color3.fromRGB(45, 45, 50)
                centerOptBtn.Text = "Target Mode: Center Screen"
            end

            sizeLabel.Text = "Crosshair Size: " .. crosshairSize .. "px"
            refreshMoverLabels()
            refreshSpeedControls()
        end
    end
end

saveBtn.MouseButton1Click:Connect(function()
    local data = {
        clickDelay = clickDelay,
        activeCores = activeCores,
        extraTarget2Enabled = extraTarget2Enabled,
        extraTarget3Enabled = extraTarget3Enabled,
        currentMode = currentMode,
        independentSpeeds = independentSpeeds,
        coreDelays = coreDelays,
        offsetX1 = offsetX1,
        offsetY1 = offsetY1,
        offsetX2 = offsetX2,
        offsetY2 = offsetY2,
        offsetX3 = offsetX3,
        offsetY3 = offsetY3,
        crosshairSize = crosshairSize,
        hideCircle = hideCircle,
        hideCrosshair = hideCrosshair,
        isLocked = isLocked,
        isUILocked = isUILocked,
        redirectTaps = redirectTaps
    }
    if writefile then
        writefile(CONFIG_FILE, HttpService:JSONDecode(data))
        saveBtn.Text = "💾 CONFIG SAVED!"
        task.delay(1.5, function() saveBtn.Text = "💾 SAVE CONFIGURATION" end)
    end
end)

speedBox.FocusLost:Connect(function()
    local val = tonumber(speedBox.Text)
    if val then
        clickDelay = math.max(0, val)
    else
        speedBox.Text = tostring(clickDelay)
    end
end)

toggleBtn.MouseButton1Click:Connect(function()
    clicking = not clicking
    if clicking then
        TweenService:Create(toggleBtn, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(180, 100, 40)}):Play()
        toggleBtn.Text = "ON"
        startClickLoop()
    else
        TweenService:Create(toggleBtn, TweenInfo.new(0.2), {BackgroundColor3 = Color3.fromRGB(45, 45, 50)}):Play()
        toggleBtn.Text = "OFF"
        for i = 1, 3 do cursors[i].Visible = false end
    end
end)

settingsBtn.MouseButton1Click:Connect(function()
    settingsPanel.Visible = not settingsPanel.Visible
    updateCrosshairIndicator()
end)

loadConfig()
updateCrosshairIndicator()

Features & Information

An autoclicker script with 2 modes and toggles in settings to achieve the highest possible CPS
#Mobile#Universal#Autoclicker

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts