-- [[ SAKURA BRAINROTS ]] -- -- // SERVICES // local Players = game:GetService("Players") local Workspace = game:GetService("Workspace") local ReplicatedStorage = game:GetService("ReplicatedStorage") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local VirtualUser = game:GetService("VirtualUser") local TeleportService = game:GetService("TeleportService") local HttpService = game:GetService("HttpService") local CoreGui = game:GetService("CoreGui") local LocalPlayer = Players.LocalPlayer local BrainrotsFolder = Workspace:WaitForChild("Brainrots") local Network = ReplicatedStorage:WaitForChild("Network") local ClaimStrength = Network:WaitForChild("ClaimStrength") local ClaimIncome = Network:WaitForChild("ClaimPlacementIncome") -- // CONFIGURATION & SAVING // local ConfigName = "SakuraBrainrot_Config.json" local DefaultConfig = { Collector = { Enabled = false, Delay = 0.5, SafeZone = true, Rarities = { ["Common"] = false, ["Uncommon"] = false, ["Rare"] = false, ["Epic"] = true, ["Legendary"] = true, ["Mythic"] = true, ["Secret"] = true, ["Divine"] = true } }, AutoClaim = { Enabled = false }, QoL = { WalkSpeed = 16, SpeedEnabled = false, LowGFX = false } } getgenv().SakuraConfig = DefaultConfig -- Load Config if isfile and isfile(ConfigName) then pcall(function() local Saved = HttpService:JSONDecode(readfile(ConfigName)) -- Merge saved with default to prevent errors if keys are missing for k, v in pairs(Saved) do getgenv().SakuraConfig[k] = v end end) end local function SaveConfig() if writefile then writefile(ConfigName, HttpService:JSONEncode(getgenv().SakuraConfig)) end end -- // DATABASE // local BrainrotDB = { ["Dolphanita Bananita"] = "Common", ["Brr Brr Patapim"] = "Common", ["Boneca Ambalabu"] = "Common", ["Burbarloni Loliloli"] = "Common", ["Chimpazini Bananini"] = "Common", ["Cappuccino Assassino"] = "Uncommon", ["Ballerina Cappuccina"] = "Uncommon", ["Lirili Larila"] = "Uncommon", ["Fluriflura"] = "Uncommon", ["Orangutini Ananassini"] = "Rare", ["Ta Ta Ta Ta Sahur"] = "Rare", ["Madu dung"] = "Rare", ["Talpa Di Fero"] = "Rare", ["Odin Din Din Dun"] = "Epic", ["Bombardiro Crocodilo"] = "Epic", ["Trippi Troppi"] = "Epic", ["Trulimero Trulicina"] = "Epic", ["Frigo Camelo"] = "Legendary", ["Bombicus"] = "Legendary", ["Svinina Bombardino"] = "Legendary", ["Garama"] = "Legendary", ["Gangster Footera"] = "Mythic", ["La Vacca Saturno Saturnita"] = "Mythic", ["Tortuguinni Dragonfruitini"] = "Mythic", ["Cocofanto Elefanto"] = "Secret", ["Los Tralaleritos"] = "Secret", ["Los Matteos"] = "Secret", ["Karkerkar Kurkur"] = "Secret", ["La Grande Combinasion"] = "Secret", ["Job Job Job Sahur"] = "Secret", ["Graipuss Medussi"] = "Secret", ["Pot Hotspot"] = "Secret", ["Tacorita Bicicleta"] = "Secret", ["Fishino Clownino"] = "Secret", ["Tung Tung Tung Sahur"] = "Secret", ["Rhino Toasterino"] = "Secret", ["Chef Crabracadabra"] = "Secret", ["W or L"] = "Secret", ["67"] = "Secret", ["Strawberrelli Flamingelli"] = "Secret", ["Bombini Gusini"] = "Secret", ["Ice Bombini Gusini"] = "Divine", ["Orcalero Orcala"] = "Divine", ["Cavallo Virtuoso"] = "Divine", ["Ice Cavallo Virtuoso"] = "Divine", ["Zibra Zubra Zibralini"] = "Divine", ["Agarrini La Pallini"] = "Divine", ["Balerino Lololo"] = "Divine", ["Strawberry Elephant"] = "Divine", ["Tigroligre Frutonni"] = "Divine", ["Tralalita Tralala"] = "Divine", ["Pakrahmatmamat"] = "Divine", ["Ice Pakrahmatmamat"] = "Divine", ["Chicleteira Bicicleteira"] = "Divine", ["Esok Sekolah"] = "Divine", ["Ice Esok Sekolah"] = "Divine", ["Dragon Cannelloni"] = "Divine", ["Ice Dragon Cannelloni"] = "Divine" } -- // SERVER HOP LOGIC // local function ServerHop() SaveConfig() -- Save before hopping local PlaceId = game.PlaceId local Servers = HttpService:JSONDecode(game:HttpGet("https://games.roblox.com/v1/games/"..PlaceId.."/servers/Public?sortOrder=Asc&limit=100")) for _, Server in pairs(Servers.data) do if Server.playing ~= Server.maxPlayers and Server.id ~= game.JobId then TeleportService:TeleportToPlaceInstance(PlaceId, Server.id, LocalPlayer) break end end end -- // GAME LOGIC // local SafeZone pcall(function() SafeZone = Workspace.Map.Important.CollectArea end) local function Teleport(CFrameTarget) if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then LocalPlayer.Character.HumanoidRootPart.CFrame = CFrameTarget end end local function ProcessBrainrot(Model) local Rarity = BrainrotDB[Model.Name] or "Unknown" if not getgenv().SakuraConfig.Collector.Rarities[Rarity] then return end local Prompt = Model:FindFirstChildWhichIsA("ProximityPrompt", true) if Prompt then if Prompt.Parent then Teleport(Prompt.Parent.CFrame + Vector3.new(0, 2, 0)) task.wait(0.2) end fireproximityprompt(Prompt) task.wait(getgenv().SakuraConfig.Collector.Delay) if getgenv().SakuraConfig.Collector.SafeZone and SafeZone then Teleport(SafeZone.CFrame + Vector3.new(0, 5, 0)) end end end -- Loops task.spawn(function() while true do if getgenv().SakuraConfig.Collector.Enabled then for _, Item in pairs(BrainrotsFolder:GetChildren()) do if not getgenv().SakuraConfig.Collector.Enabled then break end ProcessBrainrot(Item) end end task.wait(1) end end) task.spawn(function() while true do if getgenv().SakuraConfig.AutoClaim.Enabled then ClaimStrength:FireServer() task.wait(0.1) for i = 1, 10 do if not getgenv().SakuraConfig.AutoClaim.Enabled then break end ClaimIncome:FireServer(i) task.wait(0.1) end else task.wait(1) end end end) -- Anti-AFK LocalPlayer.Idled:Connect(function() VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new()) end) -- Speed Bypass RunService.RenderStepped:Connect(function() if getgenv().SakuraConfig.QoL.SpeedEnabled and LocalPlayer.Character then local Hum = LocalPlayer.Character:FindFirstChild("Humanoid") if Hum then Hum.WalkSpeed = getgenv().SakuraConfig.QoL.WalkSpeed end end end) -- // UI CONSTRUCTION // if CoreGui:FindFirstChild("SakuraUI") then CoreGui.SakuraUI:Destroy() end local ScreenGui = Instance.new("ScreenGui", CoreGui) ScreenGui.Name = "SakuraUI" -- Mobile Scaling local IsMobile = UserInputService.TouchEnabled local ScaleFactor = IsMobile and 0.8 or 1.0 local UIWidth = 300 * ScaleFactor local UIHeight = 450 * ScaleFactor local Main = Instance.new("Frame", ScreenGui) Main.Size = UDim2.new(0, UIWidth, 0, UIHeight) Main.Position = UDim2.new(0.5, -UIWidth/2, 0.4, -UIHeight/2) Main.BackgroundColor3 = Color3.fromRGB(20, 20, 25) Main.BorderSizePixel = 0 Instance.new("UICorner", Main).CornerRadius = UDim.new(0, 10) local Stroke = Instance.new("UIStroke", Main) Stroke.Thickness = 2 Stroke.Color = Color3.fromRGB(255, 105, 180) Stroke.Transparency = 0.5 -- Dragging (Mobile & PC Support) local Dragging, DragInput, DragStart, StartPos local function UpdateDrag(input) local Delta = input.Position - DragStart Main.Position = UDim2.new(StartPos.X.Scale, StartPos.X.Offset + Delta.X, StartPos.Y.Scale, StartPos.Y.Offset + Delta.Y) end Main.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then Dragging = true; DragStart = input.Position; StartPos = Main.Position end end) Main.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then Dragging = false end end) UserInputService.InputChanged:Connect(function(input) if Dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then UpdateDrag(input) end end) -- Header local Header = Instance.new("Frame", Main) Header.Size = UDim2.new(1, 0, 0, 40) Header.BackgroundColor3 = Color3.fromRGB(25, 25, 30) Instance.new("UICorner", Header).CornerRadius = UDim.new(0, 10) local Title = Instance.new("TextLabel", Header) Title.Size = UDim2.new(1, -40, 1, 0) Title.Position = UDim2.new(0, 15, 0, 0) Title.Text = "SAKURA HUB" Title.Font = Enum.Font.GothamBold Title.TextColor3 = Color3.fromRGB(255, 182, 193) Title.TextSize = 16 * ScaleFactor Title.TextXAlignment = Enum.TextXAlignment.Left Title.BackgroundTransparency = 1 local CloseBtn = Instance.new("TextButton", Header) CloseBtn.Size = UDim2.new(0, 40, 1, 0) CloseBtn.Position = UDim2.new(1, -40, 0, 0) CloseBtn.Text = "-" CloseBtn.Font = Enum.Font.GothamBold CloseBtn.TextColor3 = Color3.fromRGB(150, 150, 150) CloseBtn.BackgroundTransparency = 1 CloseBtn.TextSize = 20 local Scroll = Instance.new("ScrollingFrame", Main) Scroll.Size = UDim2.new(1, -10, 1, -50) Scroll.Position = UDim2.new(0, 5, 0, 45) Scroll.BackgroundTransparency = 1 Scroll.ScrollBarThickness = 2 Scroll.ScrollBarImageColor3 = Color3.fromRGB(255, 105, 180) local UIList = Instance.new("UIListLayout", Scroll) UIList.SortOrder = Enum.SortOrder.LayoutOrder UIList.Padding = UDim.new(0, 5) -- Helpers local function CreateSection(text) local Label = Instance.new("TextLabel", Scroll) Label.Size = UDim2.new(1, 0, 0, 20) Label.Text = " " .. text Label.Font = Enum.Font.GothamBold Label.TextColor3 = Color3.fromRGB(100, 100, 110) Label.TextSize = 11 * ScaleFactor Label.TextXAlignment = Enum.TextXAlignment.Left Label.BackgroundTransparency = 1 end local function CreateToggle(text, configTable, key, callback) local Frame = Instance.new("Frame", Scroll) Frame.Size = UDim2.new(0.95, 0, 0, 38) Frame.BackgroundColor3 = Color3.fromRGB(30, 30, 35) Instance.new("UICorner", Frame).CornerRadius = UDim.new(0, 6) local Label = Instance.new("TextLabel", Frame) Label.Size = UDim2.new(0.7, 0, 1, 0) Label.Position = UDim2.new(0.05, 0, 0, 0) Label.Text = text Label.Font = Enum.Font.GothamSemibold Label.TextColor3 = Color3.fromRGB(240, 240, 240) Label.TextXAlignment = Enum.TextXAlignment.Left Label.TextSize = 13 * ScaleFactor Label.BackgroundTransparency = 1 local Button = Instance.new("TextButton", Frame) Button.Size = UDim2.new(0, 40, 0, 22) Button.Position = UDim2.new(1, -50, 0.5, -11) Button.BackgroundColor3 = configTable[key] and Color3.fromRGB(255, 105, 180) or Color3.fromRGB(50, 50, 50) Button.Text = "" Instance.new("UICorner", Button).CornerRadius = UDim.new(1, 0) local Circle = Instance.new("Frame", Button) Circle.Size = UDim2.new(0, 18, 0, 18) Circle.Position = configTable[key] and UDim2.new(1, -20, 0.5, -9) or UDim2.new(0, 2, 0.5, -9) Circle.BackgroundColor3 = Color3.new(1,1,1) Instance.new("UICorner", Circle).CornerRadius = UDim.new(1, 0) Button.MouseButton1Click:Connect(function() configTable[key] = not configTable[key] SaveConfig() -- Auto Save if callback then callback(configTable[key]) end local State = configTable[key] local GoalColor = State and Color3.fromRGB(255, 105, 180) or Color3.fromRGB(50, 50, 50) local GoalPos = State and UDim2.new(1, -20, 0.5, -9) or UDim2.new(0, 2, 0.5, -9) TweenService:Create(Button, TweenInfo.new(0.2), {BackgroundColor3 = GoalColor}):Play() TweenService:Create(Circle, TweenInfo.new(0.2), {Position = GoalPos}):Play() end) end local function CreateSlider(text, min, max, configTable, key) local Frame = Instance.new("Frame", Scroll) Frame.Size = UDim2.new(0.95, 0, 0, 50) Frame.BackgroundColor3 = Color3.fromRGB(30, 30, 35) Instance.new("UICorner", Frame).CornerRadius = UDim.new(0, 6) local Label = Instance.new("TextLabel", Frame) Label.Size = UDim2.new(1, 0, 0, 20) Label.Position = UDim2.new(0.05, 0, 0, 5) Label.Text = text Label.Font = Enum.Font.GothamSemibold Label.TextColor3 = Color3.fromRGB(200, 200, 200) Label.TextXAlignment = Enum.TextXAlignment.Left Label.TextSize = 13 * ScaleFactor Label.BackgroundTransparency = 1 local ValLabel = Instance.new("TextLabel", Frame) ValLabel.Size = UDim2.new(0, 50, 0, 20) ValLabel.Position = UDim2.new(1, -60, 0, 5) ValLabel.Text = tostring(configTable[key]) ValLabel.Font = Enum.Font.Code ValLabel.TextColor3 = Color3.fromRGB(255, 105, 180) ValLabel.BackgroundTransparency = 1 local Bar = Instance.new("TextButton", Frame) Bar.Size = UDim2.new(0.9, 0, 0, 6) Bar.Position = UDim2.new(0.05, 0, 0.7, 0) Bar.BackgroundColor3 = Color3.fromRGB(50, 50, 50) Bar.Text = "" Bar.AutoButtonColor = false Instance.new("UICorner", Bar).CornerRadius = UDim.new(1, 0) local Fill = Instance.new("Frame", Bar) Fill.Size = UDim2.new((configTable[key] - min)/(max - min), 0, 1, 0) Fill.BackgroundColor3 = Color3.fromRGB(255, 105, 180) Instance.new("UICorner", Fill).CornerRadius = UDim.new(1, 0) local function Update(input) local X = math.clamp((input.Position.X - Bar.AbsolutePosition.X) / Bar.AbsoluteSize.X, 0, 1) local NewVal = math.floor(min + ((max - min) * X)) configTable[key] = NewVal ValLabel.Text = tostring(NewVal) Fill.Size = UDim2.new(X, 0, 1, 0) end local Sliding = false Bar.MouseButton1Down:Connect(function() Sliding = true end) UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then if Sliding then SaveConfig() end Sliding = false end end) UserInputService.InputChanged:Connect(function(input) if Sliding and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then Update(input) end end) end local function CreateDropdown(title) local Container = Instance.new("Frame", Scroll) Container.Size = UDim2.new(0.95, 0, 0, 35) Container.BackgroundColor3 = Color3.fromRGB(30, 30, 35) Container.ClipsDescendants = true Instance.new("UICorner", Container).CornerRadius = UDim.new(0, 6) local HeaderBtn = Instance.new("TextButton", Container) HeaderBtn.Size = UDim2.new(1, 0, 0, 35) HeaderBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 45) HeaderBtn.Text = title .. " ▼" HeaderBtn.Font = Enum.Font.GothamBold HeaderBtn.TextColor3 = Color3.fromRGB(200, 200, 200) HeaderBtn.TextSize = 13 * ScaleFactor Instance.new("UICorner", HeaderBtn).CornerRadius = UDim.new(0, 6) local Content = Instance.new("Frame", Container) Content.Size = UDim2.new(1, 0, 0, 200) Content.Position = UDim2.new(0, 0, 0, 35) Content.BackgroundTransparency = 1 local List = Instance.new("UIListLayout", Content) List.SortOrder = Enum.SortOrder.LayoutOrder List.Padding = UDim.new(0, 2) local Rarities = {"Common", "Uncommon", "Rare", "Epic", "Legendary", "Mythic", "Secret", "Divine"} local Colors = { Common = Color3.fromRGB(150, 150, 150), Uncommon = Color3.fromRGB(50, 200, 50), Rare = Color3.fromRGB(50, 150, 255), Epic = Color3.fromRGB(150, 50, 255), Legendary = Color3.fromRGB(255, 150, 50), Mythic = Color3.fromRGB(255, 50, 50), Secret = Color3.fromRGB(255, 50, 150), Divine = Color3.fromRGB(0, 255, 255) } for _, r in pairs(Rarities) do local Row = Instance.new("Frame", Content) Row.Size = UDim2.new(1, 0, 0, 25) Row.BackgroundTransparency = 1 local RLabel = Instance.new("TextLabel", Row) RLabel.Size = UDim2.new(0.6, 0, 1, 0) RLabel.Position = UDim2.new(0.1, 0, 0, 0) RLabel.Text = r RLabel.Font = Enum.Font.GothamSemibold RLabel.TextColor3 = Colors[r] RLabel.TextXAlignment = Enum.TextXAlignment.Left RLabel.BackgroundTransparency = 1 local Check = Instance.new("TextButton", Row) Check.Size = UDim2.new(0, 20, 0, 20) Check.Position = UDim2.new(0.8, 0, 0.1, 0) Check.BackgroundColor3 = getgenv().SakuraConfig.Collector.Rarities[r] and Color3.fromRGB(255, 105, 180) or Color3.fromRGB(50, 50, 50) Check.Text = "" Instance.new("UICorner", Check).CornerRadius = UDim.new(0, 4) Check.MouseButton1Click:Connect(function() local New = not getgenv().SakuraConfig.Collector.Rarities[r] getgenv().SakuraConfig.Collector.Rarities[r] = New SaveConfig() Check.BackgroundColor3 = New and Color3.fromRGB(255, 105, 180) or Color3.fromRGB(50, 50, 50) end) end local Open = false HeaderBtn.MouseButton1Click:Connect(function() Open = not Open HeaderBtn.Text = Open and title .. " ▲" or title .. " ▼" TweenService:Create(Container, TweenInfo.new(0.3), { Size = Open and UDim2.new(0.95, 0, 0, 240) or UDim2.new(0.95, 0, 0, 35) }):Play() end) end -- // BUILD UI CONTENT // CreateSection("FARMING") CreateToggle("Auto Collect", getgenv().SakuraConfig.Collector, "Enabled") CreateToggle("Auto Claim Income", getgenv().SakuraConfig.AutoClaim, "Enabled") CreateDropdown("Select Rarities") CreateSection("SETTINGS") CreateToggle("Return to Safe Zone", getgenv().SakuraConfig.Collector, "SafeZone") CreateToggle("Enable WalkSpeed", getgenv().SakuraConfig.QoL, "SpeedEnabled") CreateSlider("WalkSpeed Amount", 16, 200, getgenv().SakuraConfig.QoL, "WalkSpeed") CreateToggle("Low GFX (Boost FPS)", getgenv().SakuraConfig.QoL, "LowGFX", function(val) if val then for _, v in pairs(Workspace:GetDescendants()) do if v:IsA("BasePart") then v.Material = Enum.Material.SmoothPlastic end if v:IsA("Texture") or v:IsA("Decal") then v:Destroy() end end end end) -- Server Hop Button local HopBtn = Instance.new("TextButton", Scroll) HopBtn.Size = UDim2.new(0.95, 0, 0, 40) HopBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 150) HopBtn.Text = "SERVER HOP" HopBtn.Font = Enum.Font.GothamBold HopBtn.TextColor3 = Color3.new(1,1,1) Instance.new("UICorner", HopBtn).CornerRadius = UDim.new(0, 6) HopBtn.MouseButton1Click:Connect(ServerHop) -- Minimize local Minimized = false CloseBtn.MouseButton1Click:Connect(function() Minimized = not Minimized if Minimized then TweenService:Create(Main, TweenInfo.new(0.3), {Size = UDim2.new(0, UIWidth, 0, 40)}):Play() Scroll.Visible = false CloseBtn.Text = "+" else TweenService:Create(Main, TweenInfo.new(0.3), {Size = UDim2.new(0, UIWidth, 0, UIHeight)}):Play() Scroll.Visible = true CloseBtn.Text = "-" end end)