
Key Required

-- [[ 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)No comments yet for this script.