Timebomb Duels Script – VEX auto assest (Keyless) - Verified script for Timebomb Duels
Key Required

Timebomb Duels Script – VEX auto assest (Keyless)

Timebomb DuelsVEX_HUBVEX_HUB 1K views 2.9K executesUpdated Oct 22, 2026
Unrated
00
Lua Script•356 lines (11683 chars)
-- ═══════════════════════════════════════════════════════════════
-- 💣 TimeBomb - Holding & Auto Assist (VEX TOP ONE)
-- ═══════════════════════════════════════════════════════════════

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")

local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")
local Camera = workspace.CurrentCamera

-- ═══════════════════════════════════════════════════════════════
-- الحالة
-- ═══════════════════════════════════════════════════════════════
local State = {
    AutoAssistEnabled = false,
    HoldingEnabled = false,
    AssistConn = nil,
    HoldingConn = nil
}

-- ═══════════════════════════════════════════════════════════════
-- أدوات مساعدة
-- ═══════════════════════════════════════════════════════════════
local function new(class, props, parent)
    local inst = Instance.new(class)
    if props then
        for k, v in pairs(props) do
            pcall(function() inst[k] = v end)
        end
    end
    if parent then inst.Parent = parent end
    return inst
end

local function corner(p, r)
    return new("UICorner", { CornerRadius = r or UDim.new(0, 10) }, p)
end

local function getHRP(player)
    local c = player.Character
    if not c then return nil end
    return c:FindFirstChild("HumanoidRootPart")
end

local function getHum(player)
    local c = player.Character
    if not c then return nil end
    return c:FindFirstChildOfClass("Humanoid")
end

local function getPlayerInFront()
    local myHRP = getHRP(LocalPlayer)
    if not myHRP then return nil end
    local closest, closestDist = nil, 25 
    for _, p in ipairs(Players:GetPlayers()) do
        if p ~= LocalPlayer and p.Character then
            local pHRP = getHRP(p)
            local pHum = getHum(p)
            if pHRP and pHum and pHum.Health > 0 then
                local dist = (pHRP.Position - myHRP.Position).Magnitude
                if dist < closestDist then
                    local directionToPlayer = (pHRP.Position - Camera.CFrame.Position).Unit
                    local cameraLook = Camera.CFrame.LookVector
                    if directionToPlayer:Dot(cameraLook) > 0 then
                        closestDist = dist
                        closest = p
                    end
                end
            end
        end
    end
    return closest
end

local function getClosestPlayer()
    local myHRP = getHRP(LocalPlayer)
    if not myHRP then return nil, math.huge end
    local closest, closestDist = nil, math.huge
    for _, p in ipairs(Players:GetPlayers()) do
        if p ~= LocalPlayer and p.Character then
            local pHRP = getHRP(p)
            local pHum = getHum(p)
            if pHRP and pHum and pHum.Health > 0 then
                local dist = (pHRP.Position - myHRP.Position).Magnitude
                if dist < closestDist then
                    closestDist = dist
                    closest = p
                end
            end
        end
    end
    return closest, closestDist
end

-- ═══════════════════════════════════════════════════════════════
-- 1. HOLDING
-- ═══════════════════════════════════════════════════════════════
local function startHolding()
    if State.HoldingConn then return end
    local myHum = getHum(LocalPlayer)
    if myHum then myHum.AutoRotate = false end
    
    State.HoldingConn = RunService.RenderStepped:Connect(function()
        if not State.HoldingEnabled then return end
        local target = getPlayerInFront()
        if not target then return end

        local myHRP = getHRP(LocalPlayer)
        local tHRP = getHRP(target)

        if myHRP and tHRP then
            pcall(function()
                local lookDirection = (tHRP.Position - myHRP.Position).Unit
                local reversedDirection = -lookDirection
                myHRP.CFrame = CFrame.new(myHRP.Position, myHRP.Position + reversedDirection)
            end)
        end
    end)
end

local function stopHolding()
    local myHum = getHum(LocalPlayer)
    if myHum then myHum.AutoRotate = true end
    if State.HoldingConn then
        State.HoldingConn:Disconnect()
        State.HoldingConn = nil
    end
end

-- ═══════════════════════════════════════════════════════════════
-- 2. AUTO ASSIST
-- ═══════════════════════════════════════════════════════════════
local function hasTool()
    local char = LocalPlayer.Character
    if not char then return false end
    return char:FindFirstChildOfClass("Tool") ~= nil
end

local function startAutoAssist()
    if State.AssistConn then return end
    
    State.AssistConn = RunService.Heartbeat:Connect(function()
        if not State.AutoAssistEnabled then return end
        if not hasTool() then return end

        local target, dist = getClosestPlayer()
        local myHum = getHum(LocalPlayer)
        local tHRP = getHRP(target)

        if target and myHum and tHRP then
            if dist > 4 then
                myHum:MoveTo(tHRP.Position)
            end
        end
    end)
end

local function stopAutoAssist()
    if State.AssistConn then
        State.AssistConn:Disconnect()
        State.AssistConn = nil
    end
end

-- ═══════════════════════════════════════════════════════════════
-- واجهة المستخدم
-- ═══════════════════════════════════════════════════════════════
local old = PlayerGui:FindFirstChild("TimeBombButtons")
if old then old:Destroy() end

local gui = new("ScreenGui", {
    Name = "TimeBombButtons",
    ResetOnSpawn = false,
    IgnoreGuiInset = true,
}, PlayerGui)

-- ═══════════════════════════════════════════════════════════════
-- اسم السكربت (VEX TOP ONE)
-- ═══════════════════════════════════════════════════════════════
local titleLabel = new("TextLabel", {
    Size = UDim2.new(0, 400, 0, 60),
    Position = UDim2.new(0.5, -200, 0, 20),
    BackgroundTransparency = 1,
    Text = "VEX TOP ONE",
    Font = Enum.Font.GothamBlack,
    TextSize = 38,
    TextColor3 = Color3.fromRGB(255, 255, 255),
    TextStrokeTransparency = 0, 
    TextStrokeColor3 = Color3.fromRGB(0, 0, 0),
}, gui)

local gradient = new("UIGradient", {
    Color = ColorSequence.new({
        ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 105, 180)),
        ColorSequenceKeypoint.new(0.5, Color3.fromRGB(180, 90, 220)),
        ColorSequenceKeypoint.new(1, Color3.fromRGB(100, 150, 240))
    }),
    Rotation = 90,
}, titleLabel)

local shadow = titleLabel:Clone()
shadow.Parent = gui
shadow.Position = UDim2.new(0.5, -200, 0, 23)
shadow.TextColor3 = Color3.fromRGB(0, 0, 0)
shadow.TextTransparency = 0.5
shadow.ZIndex = titleLabel.ZIndex - 1
shadow.TextStrokeTransparency = 1
if shadow:FindFirstChildOfClass("UIGradient") then
    shadow:FindFirstChildOfClass("UIGradient"):Destroy()
end

task.spawn(function()
    while gui.Parent do
        task.wait(0.5)
        titleLabel:TweenSize(UDim2.new(0, 420, 0, 60), Enum.EasingDirection.Out, Enum.EasingStyle.Quad, 0.5, true)
        task.wait(0.5)
        titleLabel:TweenSize(UDim2.new(0, 400, 0, 60), Enum.EasingDirection.In, Enum.EasingStyle.Quad, 0.5, true)
    end
end)

-- ═══════════════════════════════════════════════════════════════
-- الأزرار
-- ═══════════════════════════════════════════════════════════════
local function createButton(text, pos, callback)
    local frame = new("Frame", {
        Size = UDim2.fromOffset(150, 50),
        Position = pos,
        BackgroundColor3 = Color3.fromRGB(255, 105, 180),
        BorderSizePixel = 0,
    }, gui)
    corner(frame, UDim.new(0, 10))
    new("UIStroke", { Color = Color3.fromRGB(255, 255, 255), Thickness = 2 }, frame)

    local btn = new("TextButton", {
        Size = UDim2.fromScale(1, 1),
        BackgroundTransparency = 1,
        Text = text,
        TextColor3 = Color3.fromRGB(255, 255, 255),
        Font = Enum.Font.GothamBold,
        TextSize = 16,
    }, frame)

    local lockBtn = new("TextButton", {
        Size = UDim2.fromOffset(25, 25),
        Position = UDim2.new(1, -30, 0, 5),
        BackgroundColor3 = Color3.fromRGB(30, 30, 40),
        Text = "🔒",
        TextColor3 = Color3.fromRGB(255, 255, 255),
        Font = Enum.Font.GothamBold,
        TextSize = 14,
        BorderSizePixel = 0,
        AutoButtonColor = false,
    }, frame)
    corner(lockBtn, UDim.new(1, 0))

    local dragging, dragStart, startPos
    local isUnlocked = false

    lockBtn.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            if isUnlocked then
                dragging = true
                dragStart = input.Position
                startPos = frame.Position
            end
        end
    end)

    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
            frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
        end
    end)

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

    lockBtn.MouseButton1Click:Connect(function()
        isUnlocked = not isUnlocked
        if isUnlocked then
            lockBtn.Text = "🔓"
        else
            lockBtn.Text = "🔒"
        end
    end)

    btn.MouseButton1Click:Connect(function()
        callback(btn, frame)
    end)

    return btn, frame
end

local holdBtn, holdFrame = createButton("HOLDING", UDim2.new(0, 20, 0.5, -60), function(btn, frame)
    State.HoldingEnabled = not State.HoldingEnabled
    if State.HoldingEnabled then
        btn.Text = "HOLDING: ON"
        frame.BackgroundColor3 = Color3.fromRGB(50, 205, 50)
        startHolding()
    else
        btn.Text = "HOLDING"
        frame.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
        stopHolding()
    end
end)

local assistBtn, assistFrame = createButton("AUTO ASSIST", UDim2.new(0, 20, 0.5, 0), function(btn, frame)
    State.AutoAssistEnabled = not State.AutoAssistEnabled
    if State.AutoAssistEnabled then
        btn.Text = "AUTO: ON"
        frame.BackgroundColor3 = Color3.fromRGB(50, 205, 50)
        startAutoAssist()
    else
        btn.Text = "AUTO ASSIST"
        frame.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
        stopAutoAssist()
    end
end)

UserInputService.InputBegan:Connect(function(input, processed)
    if processed then return end
    
    if input.KeyCode == Enum.KeyCode.F then
        State.HoldingEnabled = not State.HoldingEnabled
        if State.HoldingEnabled then
            holdBtn.Text = "HOLDING: ON"
            holdFrame.BackgroundColor3 = Color3.fromRGB(50, 205, 50)
            startHolding()
        else
            holdBtn.Text = "HOLDING"
            holdFrame.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
            stopHolding()
        end
    end
    
    if input.KeyCode == Enum.KeyCode.T then
        State.AutoAssistEnabled = not State.AutoAssistEnabled
        if State.AutoAssistEnabled then
            assistBtn.Text = "AUTO: ON"
            assistFrame.BackgroundColor3 = Color3.fromRGB(50, 205, 50)
            startAutoAssist()
        else
            assistBtn.Text = "AUTO ASSIST"
            assistFrame.BackgroundColor3 = Color3.fromRGB(255, 105, 180)
            stopAutoAssist()
        end
    end
end)

print("[VEX TOP ONE] تم التحميل بنجاح")

How to Execute Timebomb Duels Script – VEX auto assest (Keyless)

Step 1: Copy Code: Click the Copy Code button in the viewer above to grab the clean Lua loadstring.

Step 2: Launch Executor: Open a compatible, unpatched executor. If you need one, check our Roblox Executors Directory.

Step 3: Join Experience: Launch Roblox and join Timebomb Duels.

Step 4: Attach & Run: Attach/inject your executor into the Roblox process, paste the code into the script tab, and press Execute.

Created By

VEX_HUB
VEX_HUB
Script Creator
View Author Profile

Roblox Experience

Timebomb Duels [Alpha]
Timebomb Duels
By Customs Community
Active Players:12.2K
Play on Roblox

Features & Information

Execute Timebomb Duels Script – VEX auto assest (Keyless). Key system required, created by VEX_HUB, updated Oct 22, 2026. Tested and working on supported executors.

Script Changelog (1)

@VEX_HUBOct 22, 2026

Vex top one scripts

Community Comments (0)

No comments yet for this script.

Frequently Asked Questions

How do I execute Timebomb Duels Script – VEX auto assest (Keyless) in Roblox?

To run Timebomb Duels Script – VEX auto assest (Keyless), copy the Lua loadstring from the code viewer above, launch Roblox and join Timebomb Duels, attach a working executor (such as Potassium, Solara, or Delta from our Executors directory), paste the code into your executor console, and click Execute.

Is Timebomb Duels Script – VEX auto assest (Keyless) keyless or does it require an access key?

Timebomb Duels Script – VEX auto assest (Keyless) requires an access key. You can retrieve the official key directly using the Get Script Key link provided above.

Is Timebomb Duels Script – VEX auto assest (Keyless) currently safe and working?

This script is active and operational. Always test scripts using a secondary (alt) Roblox account to safeguard your main profile against anti-cheat bans.