Script OPEN SOURCE
Key Required

Script OPEN SOURCE

Swing Obby for Brainrots!phemonazLEXphemonazLEX 2.6K views 166 executesUpdated Mar 22, 2026
Unrated
00
Lua Script•615 lines (17902 chars)
local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))()
local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/SaveManager.lua"))()
local InterfaceManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/InterfaceManager.lua"))()
local Window = Fluent:CreateWindow({
    Title = "Swing Obby for Brainrots! Script",
    SubTitle = "by Phemonaz",
    TabWidth = 160,
    Size = UDim2.fromOffset(550, 430),
    Acrylic = false,
    Theme = "Darker",
    MinimizeKey = Enum.KeyCode.LeftControl
})
local Tabs = {
    Farm = Window:AddTab({ Title = "Farm", Icon = "bot" }),
    Upgrades = Window:AddTab({ Title = "Upgrades", Icon = "dollar-sign" }),
    Automation = Window:AddTab({ Title = "Automation", Icon = "folder-cog" }),
    Random = Window:AddTab({ Title = "Random", Icon = "box" }),
    Settings = Window:AddTab({ Title = "Settings", Icon = "cog" })
}
local Options = Fluent.Options
do
---------
---------
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local running = false
local suffixes = {
    k = 1e3, m = 1e6, b = 1e9, t = 1e12,
    qa = 1e15, qi = 1e18, sx = 1e21,
    sp = 1e24, oc = 1e27, no = 1e30, dc = 1e33
}
local function parseMoney(text)
    if not text then return 0 end
    text = text:lower():gsub("%$", ""):gsub(",", "")
    local num, suf = text:match("([%d%.]+)(%a*)")
    num = tonumber(num)
    if not num then return 0 end
    return num * (suffixes[suf] or 1)
end
local RarityDropdown = Tabs.Farm:AddDropdown("RarityFilter", {
    Title = "Exclude Rarities",
    Values = {"COMMON","UNCOMMON","RARE","EPIC","LEGENDARY","MYTHIC","SECRET","ANCIENT","DIVINE"},
    Multi = true,
    Default = {}
})
local excludedRarities = {}
RarityDropdown:OnChanged(function(Value)
    excludedRarities = Value
end)
local RankDropdown = Tabs.Farm:AddDropdown("RankFilter", {
    Title = "Exclude Ranks",
    Values = {"NORMAL","GOLDEN","DIAMOND","EMERALD","RUBY","RAINBOW","VOID","ETHEREAL","CELESTIAL"},
    Multi = true,
    Default = {}
})
local excludedRanks = {}
RankDropdown:OnChanged(function(Value)
    excludedRanks = Value
end)
local levelLimit = 0
local LevelInput1 = Tabs.Farm:AddInput("LevelInput1", {
    Title = "Minimum Brainrot Level",
    Default = "",
    Placeholder = "Enter number",
    Numeric = true,
    Finished = true,
    Callback = function(Value)
        levelLimit = tonumber(Value) or 0
    end
})
LevelInput1:OnChanged(function()
    levelLimit = tonumber(LevelInput1.Value) or 0
end)
local function getBest()
    local bestPart = nil
    local bestModel = nil
    local bestValue = 0
    for _, part in pairs(workspace.ActiveBrainrots:GetChildren()) do
        if part:IsA("BasePart") then
            local model = part:FindFirstChildOfClass("Model")
            if not model then continue end
            local success, data = pcall(function()
                local frame = model.LevelBoard.Frame
                return {
                    earnings = frame.CurrencyFrame.Earnings.Text,
                    rarity = frame.Rarity.Text,
                    rank = frame.Rank.Text,
                    level = frame.Level.Text
                }
            end)
            if success and data then
                if excludedRarities[data.rarity] then continue end
                if excludedRanks[data.rank] then continue end
                local levelNumber = tonumber(string.match(data.level, "%d+")) or 0
                if levelNumber <= levelLimit then continue end
                local value = parseMoney(data.earnings)
                if value > bestValue then
                    bestValue = value
                    bestPart = part
                    bestModel = model
                end
            end
        end
    end
    return bestPart, bestModel
end
local function teleport(cf)
    local char = player.Character or player.CharacterAdded:Wait()
    local root = char:WaitForChild("HumanoidRootPart")
    root.CFrame = cf
end
local function process()
    local part, model = getBest()
    if not part or not model then return end
    local hrp = model:FindFirstChild("HumanoidRootPart")
    if not hrp then return end
    teleport(hrp.CFrame + Vector3.new(0, 3, 0))
    task.wait(0.3)
    local attachment = part:FindFirstChild("Attachment")
    if attachment then
        local prompt = attachment:FindFirstChildOfClass("ProximityPrompt")
        if prompt then
            fireproximityprompt(prompt)
        end
    end
    task.wait(0.3)
    teleport(CFrame.new(-18, -10, -57))
end
local fb = Tabs.Farm:AddToggle("fb", {
    Title = "Farm Brainrots",
    Default = false
})
fb:OnChanged(function(Value)
    running = Value
    if running then
        task.spawn(function()
            while running do
                pcall(process)
                task.wait(1.5)
            end
        end)
    end
end)
Options.fb:SetValue(false)
---------
---------
local runningUpgrade = false
local busy = false
local interval = 1
local UpgradeDropdown = Tabs.Upgrades:AddDropdown("UpgradeSelect", {
    Title = "Select Upgrades",
    Values = {"Power", "Reach", "Carry"},
    Multi = true,
    Default = {}
})
local selectedUpgrades = {}
UpgradeDropdown:OnChanged(function(Value)
    selectedUpgrades = Value
end)
local PowerAmountDropdown = Tabs.Upgrades:AddDropdown("PowerAmount", {
    Title = "Power Amount",
    Values = {"5", "25", "50"},
    Multi = false,
    Default = "5"
})
local powerAmount = 5
PowerAmountDropdown:OnChanged(function(Value)
    powerAmount = tonumber(Value) or 5
end)
local ReachAmountDropdown = Tabs.Upgrades:AddDropdown("ReachAmount", {
    Title = "Reach Amount",
    Values = {"5", "25", "50"},
    Multi = false,
    Default = "5"
})
local reachAmount = 5
ReachAmountDropdown:OnChanged(function(Value)
    reachAmount = tonumber(Value) or 5
end)
local upgradeslider = Tabs.Upgrades:AddSlider("UpgradeInterval", {
    Title = "Upgrade Interval",
    Default = 1,
    Min = 0,
    Max = 5,
    Rounding = 1,
    Callback = function(Value)
        interval = Value
    end
})
upgradeslider:OnChanged(function(Value)
    interval = Value
end)
upgradeslider:SetValue(1)
local upgradeRemote = game:GetService("ReplicatedStorage")
    :WaitForChild("Packages")
    :WaitForChild("Knit")
    :WaitForChild("Services")
    :WaitForChild("StatUpgradeService")
    :WaitForChild("RF")
    :WaitForChild("Upgrade")
local function doUpgrade()
    if busy then return end
    busy = true
    if selectedUpgrades["Power"] then
        pcall(function()
            upgradeRemote:InvokeServer("Power", powerAmount)
        end)
    end
    if selectedUpgrades["Reach"] then
        pcall(function()
            upgradeRemote:InvokeServer("Reach_Distance", reachAmount)
        end)
    end
    if selectedUpgrades["Carry"] then
        pcall(function()
            upgradeRemote:InvokeServer("GrabAmount", 1)
        end)
    end
    busy = false
end
local UpgradeToggle = Tabs.Upgrades:AddToggle("AutoUpgradeToggle", {
    Title = "Auto Upgrade Selected",
    Default = false
})
UpgradeToggle:OnChanged(function(Value)
    runningUpgrade = Value
    if runningUpgrade then
        task.spawn(function()
            while runningUpgrade do
                doUpgrade()
                task.wait(interval)
            end
        end)
    end
end)
Options.AutoUpgradeToggle:SetValue(false)
---------
---------
Tabs.Upgrades:AddSection("Brainrots")
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local running = false
local busy = false
local maxLevel = 100
local LevelInput = Tabs.Upgrades:AddInput("MaxLevelInput", {
    Title = "Max Brainrot Level",
    Default = "100",
    Placeholder = "Enter max level",
    Numeric = true,
    Finished = true,
    Callback = function(Value)
        maxLevel = tonumber(Value) or 100
    end
})
LevelInput:OnChanged(function()
    maxLevel = tonumber(LevelInput.Value) or 100
end)
local upgradeRemote = game:GetService("ReplicatedStorage")
    :WaitForChild("Packages")
    :WaitForChild("Knit")
    :WaitForChild("Services")
    :WaitForChild("PlotService")
    :WaitForChild("RF")
    :WaitForChild("Upgrade")
local function getMyPlot()
    local myName = string.upper(player.Name)
    for i = 1, 5 do
        local plot = workspace.Plots:FindFirstChild("Plot"..i)
        if plot then
            local success, ownerText = pcall(function()
                return plot.MainSign.ScreenFrame.SurfaceGui.Frame.Owner.PlayerName.Text
            end)
            if success and ownerText == myName then
                return plot
            end
        end
    end
end
local function getPodLevel(pod)
    local success, levelText = pcall(function()
        local model = pod:FindFirstChild("BrainrotModel")
        if not model then return nil end
        local visual = model:FindFirstChild("VisualAnchor")
        if not visual then return nil end
        local brainrot = visual:GetChildren()[1]
        if not brainrot then return nil end
        return brainrot.LevelBoard.Frame.Level.Text
    end)
    if success and levelText then
        return tonumber(string.match(levelText, "%d+")) or 0
    end
    return nil
end
local function process()
    if busy then return end
    busy = true
    local plot = getMyPlot()
    if not plot then
        busy = false
        return
    end
    local pods = plot:FindFirstChild("Pods")
    if not pods then
        busy = false
        return
    end
    for _, pod in pairs(pods:GetChildren()) do
        if not running then break end
        local level = getPodLevel(pod)
        if level and level < maxLevel then
            pcall(function()
                upgradeRemote:InvokeServer(pod)
            end)
            task.wait(0.1)
        end
    end
    busy = false
end
local AutoPodUpgrade = Tabs.Upgrades:AddToggle("AutoPodUpgrade", {
    Title = "Auto Upgrade Brainrots",
    Default = false
})
AutoPodUpgrade:OnChanged(function(Value)
    running = Value
    if running then
        task.spawn(function()
            while running do
                process()
                task.wait(0.1)
            end
        end)
    end
end)
Options.AutoPodUpgrade:SetValue(false)
---------
---------
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local player = Players.LocalPlayer
local TIERS = {
    "Normal",
    "Golden",
    "Diamond",
    "Emerald",
    "Ruby",
    "Rainbow",
    "Void",
    "Ethereal",
    "Celestial"
}
local running = false
local function getButtons()
    local buttons = {}
   
    local path = player:WaitForChild("PlayerGui")
        :WaitForChild("ScreenGui")
        :WaitForChild("FrameIndex")
        :WaitForChild("Main")
        :WaitForChild("ScrollingFrame")
    for _, v in ipairs(path:GetChildren()) do
        if v:IsA("ImageButton") then
            table.insert(buttons, v)
        end
    end
    return buttons
end
local function run()
    while running do
        local buttons = getButtons()
        for _, button in ipairs(buttons) do
            if not running then break end
            local brainrotName = button.Name
            for _, tier in ipairs(TIERS) do
                if not running then break end
                local args = {
                    brainrotName,
                    tier
                }
                ReplicatedStorage
                    :WaitForChild("Remotes")
                    :WaitForChild("NewBrainrotIndex")
                    :WaitForChild("ClaimBrainrotIndex")
                    :FireServer(unpack(args))
                task.wait(0.1)
            end
        end
        task.wait(1)
    end
end
local changethisnametowhatever = Tabs.Automation:AddToggle("changethisnametowhatever", {
    Title = "Auto Claim Index Rewards",
    Default = false
})
changethisnametowhatever:OnChanged(function(value)
    running = value
    if running then
        task.spawn(run)
    end
end)
Options.changethisnametowhatever:SetValue(false)
---------
---------
local RS = game:GetService("ReplicatedStorage")
local enabled = false
local function autoRebirthLoop()
    while enabled do
        pcall(function()
            RS
                :WaitForChild("Packages")
                :WaitForChild("Knit")
                :WaitForChild("Services")
                :WaitForChild("StatUpgradeService")
                :WaitForChild("RF")
                :WaitForChild("Rebirth")
                :InvokeServer()
        end)
        task.wait(1)
    end
end
local rebirthToggle = Tabs.Automation:AddToggle("rebirthToggle", {
    Title = "Auto Rebirth",
    Default = false
})
rebirthToggle:OnChanged(function(state)
    enabled = state
    if enabled then
        task.spawn(autoRebirthLoop)
    end
end)
Options.rebirthToggle:SetValue(false)
---------
---------
Tabs.Automation:AddSection("Collecting")
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local root = character:WaitForChild("HumanoidRootPart")
local active = false
local mode = "Teleport"
local Dropdown = Tabs.Automation:AddDropdown("MoveMode", {
    Title = "Collection Method",
    Values = {"Teleport", "Tween"},
    Multi = false,
    Default = 1,
})
Dropdown:SetValue("Teleport")
Dropdown:OnChanged(function(Value)
    mode = Value
end)
local function getMyPlot()
    for i = 1, 5 do
        local plot = workspace:WaitForChild("Plots"):FindFirstChild("Plot"..i)
        if plot then
            local label = plot.MainSign.ScreenFrame.SurfaceGui.Frame.Owner.PlayerName
            if label and label.Text == string.upper(player.Name) then
                return plot
            end
        end
    end
end
local function teleportTo(cf)
    root.CFrame = cf
end
local function tweenTo(cf)
    local tween = TweenService:Create(
        root,
        TweenInfo.new(0.15, Enum.EasingStyle.Linear),
        {CFrame = cf}
    )
    tween:Play()
    tween.Completed:Wait()
end
local function moveTo(cf)
    if mode == "Tween" then
        tweenTo(cf)
    else
        teleportTo(cf)
    end
end
local function run()
    while active do
        local plot = getMyPlot()
        if not plot then
            task.wait(1)
            continue
        end
        local startPart = plot.MainSign.ScreenFrame
        moveTo(startPart.CFrame + Vector3.new(0, 3, 0))
        task.wait(0.5)
        local pods = plot:WaitForChild("Pods")
        for i = 1, 40 do
            if not active then break end
            local pod = pods:FindFirstChild(tostring(i))
            if pod and pod:FindFirstChild("TouchPart") then
                local touch = pod.TouchPart
                moveTo(touch.CFrame + Vector3.new(0, 3, 0))
                task.wait(0.2)
            end
        end
        task.wait(1)
    end
end
local autoMove = Tabs.Automation:AddToggle("AutoPods", {
    Title = "Auto Collect Money",
    Default = false
})
autoMove:OnChanged(function(v)
    active = v
    if active then
        task.spawn(run)
    end
end)
Options.AutoPods:SetValue(false)
---------
---------
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local stat = player:WaitForChild("updateStatsFolder"):WaitForChild("Reach_Distance")
local enabled = false
local originalValue = stat.Value
local MAX_VALUE = 1e9
local function enforce()
    while enabled do
        if stat.Value ~= MAX_VALUE then
            stat.Value = MAX_VALUE
        end
        task.wait(0.1)
    end
end
local reachToggle = Tabs.Random:AddToggle("ReachToggle", {
    Title = "Inf Rope Reach",
    Default = false
})
reachToggle:OnChanged(function(state)
    enabled = state
    if enabled then
        originalValue = stat.Value
        stat.Value = MAX_VALUE
        task.spawn(enforce)
    else
        stat.Value = originalValue
    end
end)
Options.ReachToggle:SetValue(false)
---------
---------
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local stat = player:WaitForChild("updateStatsFolder"):WaitForChild("Power")
local enabled = false
local originalValue = stat.Value
local sliderValue = 10
local Slider = Tabs.Random:AddSlider("PowerSlider", {
    Title = "Custom Power",
    Default = 10,
    Min = 5,
    Max = 15000,
    Rounding = 1,
    Callback = function(Value)
        sliderValue = Value
    end
})
Slider:OnChanged(function(Value)
    sliderValue = Value
end)
Slider:SetValue(10)
local function enforce()
    while enabled do
        if stat.Value ~= sliderValue then
            stat.Value = sliderValue
        end
        task.wait(0.1)
    end
end
local powerToggle = Tabs.Random:AddToggle("PowerToggle", {
    Title = "Enable Custom Power",
    Default = false
})
powerToggle:OnChanged(function(state)
    enabled = state
    if enabled then
        originalValue = stat.Value
        stat.Value = sliderValue
        task.spawn(enforce)
    else
        stat.Value = originalValue
    end
end)
Options.PowerToggle:SetValue(false)
---------
---------
local Players = game:GetService("Players")
local player = Players.LocalPlayer
Tabs.Random:AddButton({
    Title = "Tp to End",
    Callback = function()
        local char = player.Character or player.CharacterAdded:Wait()
        local root = char:WaitForChild("HumanoidRootPart")
        root.CFrame = CFrame.new(21, -10, -34044)
    end
})
---------
---------
SaveManager:SetLibrary(Fluent)
InterfaceManager:SetLibrary(Fluent)
SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({})
InterfaceManager:SetFolder("FluentScriptHub")
SaveManager:SetFolder("FluentScriptHub/specific-game")
InterfaceManager:BuildInterfaceSection(Tabs.Settings)
SaveManager:BuildConfigSection(Tabs.Settings)
Window:SelectTab(1)
SaveManager:LoadAutoloadConfig()
end

Features & Information

Credits: Phemonaz features: -- Farm Brainrots -- Auto Upgrade Stats -- Auto Upgrade Brainrots -- Auto Claim Index Rewards -- Auto Rebirth -- Auto Collect Money -- Inf Rope Reach -- Custom Power -- Tp to End

Community Comments (3)

INRIINRIMar 22, 2026

Good script!

INRIINRIMar 23, 2026

Do grow beanstalk next

luxplayzluxplayzMay 27, 2026

Doesnt work anymore

More Scripts for Swing Obby for Brainrots!