Back to Scripts
Auto Complete

Auto Complete

ScriptBlox
Free

Game: Obby Royale

203 Views
0 Likes
2 Dislikes
viku

viku

offline

Features

Auto Complete stages in Obby Royale - Removed death parts for easy completion of Death Penalty - Wait time of 10 seconds on start to avoid detections - Automatic tweening to stage completion

Script Code

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

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoidRootPart = character:WaitForChild("HumanoidRootPart")
local humanoid = character:WaitForChild("Humanoid")

local tops = {}
local spawns = workspace.Arena.Spawns
for i = 1, 8 do
    local spawnFolder = spawns:FindFirstChild(tostring(i))
    if spawnFolder then
        local top = spawnFolder:FindFirstChild("Top")
        if top and top:IsA("BasePart") then
            table.insert(tops, top)
        end
    end
end

local targetPart = workspace.Middle.CollideableTop.Collideable
if not targetPart or not targetPart:IsA("BasePart") then
    return
end

local function moveKillParts()
    for _, part in ipairs(workspace:GetDescendants()) do
        if part:IsA("BasePart") and (string.find(string.lower(part.Name), "kill") or string.find(string.lower(part.Name), "damage") or part.Material == Enum.Material.Neon) then
            part.CFrame = CFrame.new(0, -1000, 0)
        end
    end
end

moveKillParts()

workspace.DescendantAdded:Connect(function(descendant)
    if descendant:IsA("BasePart") and (string.find(string.lower(descendant.Name), "kill") or string.find(string.lower(descendant.Name), "damage") or descendant.Material == Enum.Material.Neon) then
        descendant.CFrame = CFrame.new(0, -1000, 0)
    end
end)

local isEnabled = true
local timer = 0
local checkInterval = 0.1
local lastCheckTime = 0
local aboveThreshold = 9.5
local tweenSpeed = 55
local heightOffset = 3
local topRadius = 10
local collideableRadius = 8

local originalColors = {}
local colorConnection

local function removeClothing(char)
    for _, item in ipairs(char:GetDescendants()) do
        if item:IsA("Shirt") or item:IsA("Pants") or item:IsA("ShirtGraphic") then
            item:Destroy()
        elseif item:IsA("Accessory") or item:IsA("Hat") then
            item:Destroy()
        end
    end
    
    
    local bodyColors = char:FindFirstChildOfClass("BodyColors")
    if bodyColors then
        bodyColors:Destroy()
    end
end

local function setupRainbowEffect(char)
    
    wait(2.5)
    
    
    removeClothing(char)
    
    
    originalColors = {}
    for _, part in ipairs(char:GetDescendants()) do
        if part:IsA("BasePart") then
            originalColors[part] = part.Color
        end
    end
    
    
    if colorConnection then
        colorConnection:Disconnect()
    end
    
    
    local hue = 0
    colorConnection = RunService.Heartbeat:Connect(function()
        hue = (hue + 0.005) % 1
        local rainbowColor = Color3.fromHSV(hue, 1, 1)
        
        for _, part in ipairs(char:GetDescendants()) do
            if part:IsA("BasePart") and part.Parent == char then
                part.Color = rainbowColor
            end
        end
    end)
end

setupRainbowEffect(character)

local function getTopPart()
    local playerPos = humanoidRootPart.Position
    for _, top in ipairs(tops) do
        if (top.Position - playerPos).Magnitude <= topRadius then
            return top
        end
    end
    return nil
end

local function fireTouchInterest()
    if targetPart and humanoidRootPart then
        firetouchinterest(humanoidRootPart, targetPart, 0)
        wait(0.1)
        firetouchinterest(humanoidRootPart, targetPart, 1)
    end
end

local function tweenToTarget()
    if not humanoidRootPart or humanoid.Health <= 0 then return end
    
    local targetPosition = targetPart.Position + Vector3.new(0, heightOffset, 0)
    if (humanoidRootPart.Position - targetPosition).Magnitude <= collideableRadius then
        fireTouchInterest()
        return
    end
    
    local distance = (targetPosition - humanoidRootPart.Position).Magnitude
    local tweenTime = distance / tweenSpeed
    local tweenInfo = TweenInfo.new(tweenTime, Enum.EasingStyle.Linear)
    local tween = TweenService:Create(humanoidRootPart, tweenInfo, {CFrame = CFrame.new(targetPosition)})
    tween:Play()
    
    tween.Completed:Wait()
    fireTouchInterest()
end

local connection
local lastTopPart = nil
local function startMonitoring()
    if connection then return end
    connection = RunService.Heartbeat:Connect(function()
        local currentTime = tick()
        if currentTime - lastCheckTime >= checkInterval then
            lastCheckTime = currentTime
            local currentTop = getTopPart()
            
            if currentTop then
                if currentTop == lastTopPart then
                    timer = timer + checkInterval
                    if timer >= aboveThreshold then
                        tweenToTarget()
                        timer = 0
                    end
                else
                    timer = 0
                    lastTopPart = currentTop
                end
            else
                timer = 0
                lastTopPart = nil
            end
        end
    end)
end

local function stopMonitoring()
    if connection then
        connection:Disconnect()
        connection = nil
    end
    timer = 0
    lastTopPart = nil
end


local screenGui = Instance.new("ScreenGui")
screenGui.Name = "AutoCompleteGui"
screenGui.Parent = player:WaitForChild("PlayerGui")
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 180, 0, 70)
mainFrame.Position = UDim2.new(0.5, -90, 0.05, 0)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 25)
mainFrame.BorderSizePixel = 0
mainFrame.Parent = screenGui

local mainCorner = Instance.new("UICorner")
mainCorner.CornerRadius = UDim.new(0, 10)
mainCorner.Parent = mainFrame

local mainStroke = Instance.new("UIStroke")
mainStroke.Thickness = 2
mainStroke.Color = Color3.fromRGB(0, 180, 180)
mainStroke.Transparency = 0
mainStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
mainStroke.Parent = mainFrame


local strokeHue = 0
RunService.Heartbeat:Connect(function()
    strokeHue = (strokeHue + 0.005) % 1
    mainStroke.Color = Color3.fromHSV(strokeHue, 0.8, 1)
end)


local titleBar = Instance.new("Frame")
titleBar.Size = UDim2.new(1, 0, 0, 28)
titleBar.Position = UDim2.new(0, 0, 0, 0)
titleBar.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 10)
titleCorner.Parent = titleBar

local titleFix = Instance.new("Frame")
titleFix.Size = UDim2.new(1, 0, 0, 10)
titleFix.Position = UDim2.new(0, 0, 1, -10)
titleFix.BackgroundColor3 = Color3.fromRGB(30, 30, 35)
titleFix.BorderSizePixel = 0
titleFix.Parent = titleBar

local titleLabel = Instance.new("TextLabel")
titleLabel.Size = UDim2.new(1, -20, 1, 0)
titleLabel.Position = UDim2.new(0, 8, 0, 0)
titleLabel.BackgroundTransparency = 1
titleLabel.Text = "AUTO COMPLETE"
titleLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
titleLabel.TextSize = 13
titleLabel.Font = Enum.Font.GothamBold
titleLabel.TextXAlignment = Enum.TextXAlignment.Left
titleLabel.Parent = titleBar


local statusIndicator = Instance.new("Frame")
statusIndicator.Size = UDim2.new(0, 8, 0, 8)
statusIndicator.Position = UDim2.new(1, -15, 0.5, -4)
statusIndicator.BackgroundColor3 = Color3.fromRGB(100, 255, 100)
statusIndicator.BorderSizePixel = 0
statusIndicator.Parent = titleBar

local indicatorCorner = Instance.new("UICorner")
indicatorCorner.CornerRadius = UDim.new(1, 0)
indicatorCorner.Parent = statusIndicator


local toggleButton = Instance.new("TextButton")
toggleButton.Size = UDim2.new(0, 160, 0, 32)
toggleButton.Position = UDim2.new(0.5, -80, 0, 34)
toggleButton.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
toggleButton.BorderSizePixel = 0
toggleButton.Text = "ENABLED"
toggleButton.TextColor3 = Color3.fromRGB(255, 255, 255)
toggleButton.TextSize = 14
toggleButton.Font = Enum.Font.GothamBold
toggleButton.AutoButtonColor = false
toggleButton.Parent = mainFrame

local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(0, 7)
buttonCorner.Parent = toggleButton

local buttonStroke = Instance.new("UIStroke")
buttonStroke.Thickness = 1.5
buttonStroke.Color = Color3.fromRGB(120, 220, 120)
buttonStroke.Transparency = 0.5
buttonStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
buttonStroke.Parent = toggleButton


toggleButton.MouseEnter:Connect(function()
    TweenService:Create(toggleButton, TweenInfo.new(0.2), {BackgroundColor3 = isEnabled and Color3.fromRGB(120, 220, 120) or Color3.fromRGB(220, 80, 80)}):Play()
end)

toggleButton.MouseLeave:Connect(function()
    TweenService:Create(toggleButton, TweenInfo.new(0.2), {BackgroundColor3 = isEnabled and Color3.fromRGB(100, 200, 100) or Color3.fromRGB(200, 60, 60)}):Play()
end)


local dragging = false
local dragInput
local dragStart
local 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
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragging = false
            end
        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
        mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
    end
end)


toggleButton.MouseButton1Click:Connect(function()
    isEnabled = not isEnabled
    if isEnabled then
        toggleButton.Text = "ENABLED"
        toggleButton.BackgroundColor3 = Color3.fromRGB(100, 200, 100)
        buttonStroke.Color = Color3.fromRGB(120, 220, 120)
        statusIndicator.BackgroundColor3 = Color3.fromRGB(100, 255, 100)
        startMonitoring()
        
        
        local original = toggleButton.Size
        TweenService:Create(toggleButton, TweenInfo.new(0.1), {Size = UDim2.new(0, 155, 0, 30)}):Play()
        wait(0.1)
        TweenService:Create(toggleButton, TweenInfo.new(0.1), {Size = original}):Play()
    else
        toggleButton.Text = "DISABLED"
        toggleButton.BackgroundColor3 = Color3.fromRGB(200, 60, 60)
        buttonStroke.Color = Color3.fromRGB(220, 80, 80)
        statusIndicator.BackgroundColor3 = Color3.fromRGB(255, 80, 80)
        stopMonitoring()
        
        
        local original = toggleButton.Size
        TweenService:Create(toggleButton, TweenInfo.new(0.1), {Size = UDim2.new(0, 155, 0, 30)}):Play()
        wait(0.1)
        TweenService:Create(toggleButton, TweenInfo.new(0.1), {Size = original}):Play()
    end
end)

player.CharacterAdded:Connect(function(newChar)
    character = newChar
    humanoidRootPart = newChar:WaitForChild("HumanoidRootPart")
    humanoid = newChar:WaitForChild("Humanoid")
    timer = 0
    lastTopPart = nil
    setupRainbowEffect(newChar)
    moveKillParts()
end)

startMonitoring()

Ratings & Reviews

No reviews yet. Be the first to review this script!

Comments (0)

Please login to comment

Login with Discord

Loading comments...