local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Window = Rayfield:CreateWindow({ Name = "Eat Jelly For Brainrots", LoadingTitle = "Loading...", LoadingSubtitle = "by HeliosDev", ConfigurationSaving = { Enabled = true, FolderName = "EatJellyHub", FileName = "Config" }, Theme = "Ocean" }) -- SERVICES local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local RS = game:GetService("ReplicatedStorage") local WS = game:GetService("Workspace") -- SAFE EVENT LOADING local function getRemote(parent, name) if not parent then return nil end return parent:FindFirstChild(name) end local SellEvent = RS:FindFirstChild("SellEvent") local TeleportHome = RS:FindFirstChild("TeleportHome") local PerPlayerPrompts = RS:FindFirstChild("PerPlayerPrompts") local PerPlayerTrigger = RS:FindFirstChild("PerPlayerTrigger") local BuyChest = RS:FindFirstChild("BuyChest") local UpgradesShopRemote = RS:FindFirstChild("UpgradesShopRemote") local UpgradeEvents = RS:FindFirstChild("UpgradeEvents") local BuyUpgrade = getRemote(UpgradeEvents, "BuyUpgrade") -- ZONES (ordered best to worst by X position) local Zones = { {name = "Ancient", pos = Vector3.new(1989, -58, 0)}, {name = "Omnipotent", pos = Vector3.new(1830, -58, 0)}, {name = "Immortal", pos = Vector3.new(1674, -58, 0)}, {name = "Infinite", pos = Vector3.new(1511, -58, 0)}, {name = "Celestial", pos = Vector3.new(1350, -58, 0)}, {name = "Divine", pos = Vector3.new(1192, -58, 0)}, {name = "Elite", pos = Vector3.new(1037, -58, 0)}, {name = "Supreme", pos = Vector3.new(919, -58, 0)}, {name = "Omega", pos = Vector3.new(799, -58, 0)}, {name = "Ultra", pos = Vector3.new(678, -58, 0)}, {name = "Secret", pos = Vector3.new(557, -58, 0)}, {name = "Exotic", pos = Vector3.new(441, -58, 0)}, {name = "Mythic", pos = Vector3.new(327, -58, 0)}, {name = "Legendary", pos = Vector3.new(243, -58, 0)}, {name = "Epic", pos = Vector3.new(169, -58, 0)}, {name = "Rare", pos = Vector3.new(110, -58, 0)}, {name = "Uncommon", pos = Vector3.new(49, -58, 0)}, {name = "Common", pos = Vector3.new(-13, -58, 0)}, } local ZoneNames = {} for _, z in ipairs(Zones) do table.insert(ZoneNames, z.name) end local HomePos = Vector3.new(-115, -33, 0) local SellPos = Vector3.new(-159, -52, -34) -- MUTATION PRIORITY local MutationPriority = { ["rainbow"] = 6, ["hacker"] = 5, ["lava"] = 4, ["galaxy"] = 3, ["diamond"] = 2, ["gold"] = 1, } -- SCRIPT STATE local State = { AutoFarmZone = false, AutoFarmAll = false, AutoCollectCash = false, AutoUpgradeCarry = false, AutoUpgradeSpeed = false, AutoUpgradeDamage = false, FarmZoneRunning = false, FarmAllRunning = false, CollectCashRunning = false, UpgradeCarryRunning = false, UpgradeSpeedRunning = false, UpgradeDamageRunning = false, SelectedFarmZone = "Ancient", PrioritizeMutations = true, CarryLimit = 4, Collected = 0, ScanRadius = 150, } -- SAFE FIRE local function safeFire(event, ...) if not event then return end local args = {...} pcall(function() event:FireServer(unpack(args)) end) end -- TELEPORT local function teleport(pos) local char = LocalPlayer.Character if not char then return end local hrp = char:FindFirstChild("HumanoidRootPart") if not hrp then return end hrp.CFrame = CFrame.new(pos + Vector3.new(0, 3, 0)) end -- GET MUTATION SCORE local function getMutationScore(instance) if not instance then return 0 end local score = 0 pcall(function() local name = instance.Name:lower() for mutation, s in pairs(MutationPriority) do if string.find(name, mutation) and s > score then score = s end end end) pcall(function() for _, desc in pairs(instance:GetDescendants()) do pcall(function() local text = "" if desc:IsA("TextLabel") then text = (desc.Text or ""):lower() elseif desc:IsA("StringValue") then text = (desc.Value or ""):lower() end if text ~= "" then for mutation, s in pairs(MutationPriority) do if string.find(text, mutation) and s > score then score = s end end end end) end end) return score end -- FIND BRAINROTS NEAR A SPECIFIC ZONE ONLY local function findBrainrots(zonePos) local found = {} local myPos = nil pcall(function() local hrp = LocalPlayer.Character:FindFirstChild("HumanoidRootPart") if hrp then myPos = hrp.Position end end) for _, v in pairs(WS:GetDescendants()) do pcall(function() if not v:IsA("ProximityPrompt") then return end if not v.Enabled then return end if v.Name == "ShopPrompt" then return end local part = v.Parent if not part or not part:IsA("BasePart") then return end local pos = part.Position -- STRICT zone check: only accept brainrots within scan radius of THIS zone -- AND make sure they're not closer to a DIFFERENT zone local distToTarget = (pos - zonePos).Magnitude if distToTarget > State.ScanRadius then return end -- Check this brainrot isn't actually closer to another zone local closestZoneDist = distToTarget local closestZoneName = State.SelectedFarmZone for _, z in ipairs(Zones) do local d = (pos - z.pos).Magnitude if d < closestZoneDist then closestZoneDist = d closestZoneName = z.name end end -- Skip if this brainrot belongs to a different zone local targetZoneName = nil for _, z in ipairs(Zones) do if (z.pos - zonePos).Magnitude < 5 then targetZoneName = z.name break end end if targetZoneName and closestZoneName ~= targetZoneName then return end local model = part.Parent local mutScore = getMutationScore(model) table.insert(found, { name = model and model.Name or part.Name, prompt = v, position = pos, mutationScore = mutScore, distance = distToTarget, }) end) end if State.PrioritizeMutations then table.sort(found, function(a, b) if a.mutationScore ~= b.mutationScore then return a.mutationScore > b.mutationScore end if myPos then return (a.position - myPos).Magnitude < (b.position - myPos).Magnitude end return false end) elseif myPos then table.sort(found, function(a, b) return (a.position - myPos).Magnitude < (b.position - myPos).Magnitude end) end return found end -- TABS local FarmTab = Window:CreateTab("Farm", 4483362458) local UpgradeTab = Window:CreateTab("Upgrades", 4483362458) local TeleportTab = Window:CreateTab("Teleport", 4483362458) -- ═══════════════════════════════════ -- FARM TAB -- ═══════════════════════════════════ FarmTab:CreateSection("Configuration") FarmTab:CreateDropdown({ Name = "Farm Zone", Options = ZoneNames, CurrentOption = {"Ancient"}, Callback = function(Option) State.SelectedFarmZone = Option[1] end, }) FarmTab:CreateSlider({ Name = "Carry Limit", Range = {1, 4}, Increment = 1, Suffix = " brainrots", CurrentValue = 4, Callback = function(Value) State.CarryLimit = Value end, }) FarmTab:CreateSlider({ Name = "Zone Scan Radius", Range = {50, 500}, Increment = 25, Suffix = " studs", CurrentValue = 150, Callback = function(Value) State.ScanRadius = Value end, }) FarmTab:CreateToggle({ Name = "Prioritize Mutations (Rainbow > Hacker > Lava > Galaxy > Diamond > Gold)", CurrentValue = true, Callback = function(Value) State.PrioritizeMutations = Value end, }) FarmTab:CreateSection("Auto Farm") FarmTab:CreateToggle({ Name = "Auto Farm (Selected Zone)", CurrentValue = false, Callback = function(Value) State.AutoFarmZone = Value if Value and not State.FarmZoneRunning then State.FarmZoneRunning = true task.spawn(function() while State.AutoFarmZone do local success, err = pcall(function() State.Collected = 0 -- Get the exact zone position local targetPos = nil for _, z in ipairs(Zones) do if z.name == State.SelectedFarmZone then targetPos = z.pos break end end if not targetPos then return end -- Teleport to zone teleport(targetPos) task.wait(1.5) -- Collect loop local emptyRetries = 0 while State.Collected < State.CarryLimit and State.AutoFarmZone and emptyRetries < 8 do local brainrots = findBrainrots(targetPos) if #brainrots == 0 then emptyRetries = emptyRetries + 1 task.wait(0.5) else emptyRetries = 0 for _, br in ipairs(brainrots) do if not State.AutoFarmZone then break end if State.Collected >= State.CarryLimit then break end -- Teleport to brainrot teleport(br.position) task.wait(0.4) -- Fire prompt if br.prompt and br.prompt.Parent then pcall(function() fireproximityprompt(br.prompt) end) safeFire(PerPlayerPrompts, br.prompt) safeFire(PerPlayerTrigger, br.prompt) State.Collected = State.Collected + 1 task.wait(0.4) end end -- Re-teleport to zone center between scans if State.Collected < State.CarryLimit and State.AutoFarmZone then teleport(targetPos) task.wait(0.5) end end end -- Return home teleport(HomePos) safeFire(TeleportHome) task.wait(2) end) if not success then warn("AutoFarm error: ", err) end task.wait(0.3) end State.FarmZoneRunning = false end) end end, }) FarmTab:CreateToggle({ Name = "Auto Farm ALL Zones (Best First)", CurrentValue = false, Callback = function(Value) State.AutoFarmAll = Value if Value and not State.FarmAllRunning then State.FarmAllRunning = true task.spawn(function() while State.AutoFarmAll do local success, err = pcall(function() State.Collected = 0 for _, zone in ipairs(Zones) do if not State.AutoFarmAll then break end if State.Collected >= State.CarryLimit then break end teleport(zone.pos) task.wait(1.5) local brainrots = findBrainrots(zone.pos) if #brainrots > 0 then for _, br in ipairs(brainrots) do if not State.AutoFarmAll then break end if State.Collected >= State.CarryLimit then break end teleport(br.position) task.wait(0.4) if br.prompt and br.prompt.Parent then pcall(function() fireproximityprompt(br.prompt) end) safeFire(PerPlayerPrompts, br.prompt) safeFire(PerPlayerTrigger, br.prompt) State.Collected = State.Collected + 1 task.wait(0.4) end end end end teleport(HomePos) safeFire(TeleportHome) task.wait(2) end) if not success then warn("AutoFarmAll error: ", err) end task.wait(0.3) end State.FarmAllRunning = false end) end end, }) FarmTab:CreateSection("Cash") FarmTab:CreateToggle({ Name = "Auto Collect Cash (Turbo)", CurrentValue = false, Callback = function(Value) State.AutoCollectCash = Value if Value and not State.CollectCashRunning then State.CollectCashRunning = true task.spawn(function() while State.AutoCollectCash do pcall(function() local hrp = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") if not hrp then return end local plots = WS:FindFirstChild("Plots") if plots then for _, plot in pairs(plots:GetChildren()) do for _, slot in pairs(plot:GetChildren()) do pcall(function() for _, desc in pairs(slot:GetDescendants()) do pcall(function() if desc:IsA("BasePart") then firetouchinterest(hrp, desc, 0) firetouchinterest(hrp, desc, 1) end end) end end) end end end safeFire(UpgradesShopRemote) end) task.wait(0.1) end State.CollectCashRunning = false end) end end, }) -- ═══════════════════════════════════ -- UPGRADES TAB -- ═══════════════════════════════════ UpgradeTab:CreateSection("Stats (Turbo)") UpgradeTab:CreateToggle({ Name = "Auto Upgrade Carry Slots (Turbo)", CurrentValue = false, Callback = function(Value) State.AutoUpgradeCarry = Value if Value and not State.UpgradeCarryRunning then State.UpgradeCarryRunning = true task.spawn(function() while State.AutoUpgradeCarry do for i = 1, 20 do safeFire(BuyUpgrade, "CarrySlots", 1) end task.wait(0.03) end State.UpgradeCarryRunning = false end) end end, }) UpgradeTab:CreateToggle({ Name = "Auto Upgrade Speed (Turbo)", CurrentValue = false, Callback = function(Value) State.AutoUpgradeSpeed = Value if Value and not State.UpgradeSpeedRunning then State.UpgradeSpeedRunning = true task.spawn(function() while State.AutoUpgradeSpeed do for i = 1, 20 do safeFire(BuyUpgrade, "Speed", 1) end task.wait(0.03) end State.UpgradeSpeedRunning = false end) end end, }) UpgradeTab:CreateToggle({ Name = "Auto Upgrade Damage (Turbo)", CurrentValue = false, Callback = function(Value) State.AutoUpgradeDamage = Value if Value and not State.UpgradeDamageRunning then State.UpgradeDamageRunning = true task.spawn(function() while State.AutoUpgradeDamage do for i = 1, 20 do safeFire(BuyUpgrade, "Damage", 10) end task.wait(0.03) end State.UpgradeDamageRunning = false end) end end, }) UpgradeTab:CreateSection("Quick Actions") UpgradeTab:CreateButton({ Name = "Mass Upgrade ALL Stats (x200)", Callback = function() task.spawn(function() for i = 1, 200 do safeFire(BuyUpgrade, "CarrySlots", 1) safeFire(BuyUpgrade, "Speed", 1) safeFire(BuyUpgrade, "Damage", 10) end end) end }) UpgradeTab:CreateSection("Chests") UpgradeTab:CreateButton({ Name = "Buy ALL 6 Chests", Callback = function() task.spawn(function() for i = 1, 6 do safeFire(BuyChest, i) task.wait(0.1) end end) end }) UpgradeTab:CreateButton({Name = "Buy Chest 1", Callback = function() safeFire(BuyChest, 1) end}) UpgradeTab:CreateButton({Name = "Buy Chest 2", Callback = function() safeFire(BuyChest, 2) end}) UpgradeTab:CreateButton({Name = "Buy Chest 3", Callback = function() safeFire(BuyChest, 3) end}) UpgradeTab:CreateButton({Name = "Buy Chest 4", Callback = function() safeFire(BuyChest, 4) end}) UpgradeTab:CreateButton({Name = "Buy Chest 5", Callback = function() safeFire(BuyChest, 5) end}) UpgradeTab:CreateButton({Name = "Buy Chest 6", Callback = function() safeFire(BuyChest, 6) end}) -- ═══════════════════════════════════ -- TELEPORT TAB -- ═══════════════════════════════════ TeleportTab:CreateSection("Locations") TeleportTab:CreateButton({ Name = "TP to Home", Callback = function() teleport(HomePos) safeFire(TeleportHome) end }) TeleportTab:CreateButton({ Name = "TP to Sell Place", Callback = function() teleport(SellPos) end }) TeleportTab:CreateSection("Zones") for _, zone in ipairs(Zones) do TeleportTab:CreateButton({ Name = "TP to " .. zone.name, Callback = function() teleport(zone.pos) end }) end