-- GUI Principal local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "BenjaHubUI" ScreenGui.ResetOnSpawn = false ScreenGui.Parent = game.Players.LocalPlayer:WaitForChild("PlayerGui") local MainFrame = Instance.new("Frame") MainFrame.Size = UDim2.new(0, 450, 0, 250) MainFrame.Position = UDim2.new(0.5, -225, 0.5, -125) MainFrame.BackgroundColor3 = Color3.fromRGB(20, 20, 20) MainFrame.BorderSizePixel = 0 MainFrame.AnchorPoint = Vector2.new(0.5, 0.5) MainFrame.Parent = ScreenGui MainFrame.Active = true MainFrame.Draggable = true local UICorner = Instance.new("UICorner") UICorner.CornerRadius = UDim.new(0, 5) UICorner.Parent = MainFrame local Title = Instance.new("TextLabel") Title.Size = UDim2.new(1, -30, 0, 30) Title.Position = UDim2.new(0, 10, 0, 0) Title.Text = "Benja Hub | Chainsaw Man" Title.Font = Enum.Font.SourceSansBold Title.TextColor3 = Color3.fromRGB(255, 255, 255) Title.TextSize = 20 Title.TextXAlignment = Enum.TextXAlignment.Left Title.BackgroundTransparency = 1 Title.Parent = MainFrame local CloseButton = Instance.new("TextButton") CloseButton.Size = UDim2.new(0, 30, 0, 30) CloseButton.Position = UDim2.new(1, -30, 0, 0) CloseButton.Text = "✕" CloseButton.Font = Enum.Font.SourceSans CloseButton.TextColor3 = Color3.fromRGB(255, 255, 255) CloseButton.TextSize = 18 CloseButton.BackgroundTransparency = 1 CloseButton.Parent = MainFrame CloseButton.MouseButton1Click:Connect(function() MainFrame.Visible = false end) local TabList = Instance.new("Frame") TabList.Size = UDim2.new(0, 100, 1, -30) TabList.Position = UDim2.new(0, 0, 0, 30) TabList.BackgroundColor3 = Color3.fromRGB(10, 10, 10) TabList.BorderSizePixel = 0 TabList.Parent = MainFrame local TabContent = Instance.new("Frame") TabContent.Size = UDim2.new(1, -100, 1, -30) TabContent.Position = UDim2.new(0, 100, 0, 30) TabContent.BackgroundColor3 = Color3.fromRGB(15, 15, 15) TabContent.BorderSizePixel = 0 TabContent.Parent = MainFrame local TabTitle = Instance.new("TextLabel") TabTitle.Size = UDim2.new(1, 0, 0, 30) TabTitle.Position = UDim2.new(0, 0, 0, 0) TabTitle.Text = "Auto-farm" TabTitle.Font = Enum.Font.SourceSansBold TabTitle.TextColor3 = Color3.fromRGB(255, 255, 255) TabTitle.TextSize = 18 TabTitle.BackgroundColor3 = Color3.fromRGB(200, 30, 30) TabTitle.BorderSizePixel = 0 TabTitle.Parent = TabContent local tabNames = {"Farm", "ESP", "Devil heart"} local tabButtons = {} local AutoFarmButton = Instance.new("TextButton") AutoFarmButton.Size = UDim2.new(0, 200, 0, 40) AutoFarmButton.Position = UDim2.new(0, 20, 0, 50) AutoFarmButton.Text = "Toggle AutoFarm (OFF)" AutoFarmButton.Font = Enum.Font.SourceSansBold AutoFarmButton.TextColor3 = Color3.fromRGB(255, 255, 255) AutoFarmButton.TextSize = 16 AutoFarmButton.BackgroundColor3 = Color3.fromRGB(30, 30, 30) AutoFarmButton.Parent = TabContent local ESPButton = Instance.new("TextButton") ESPButton.Size = UDim2.new(0, 200, 0, 40) ESPButton.Position = UDim2.new(0, 20, 0, 50) ESPButton.Text = "Toggle ESP (OFF)" ESPButton.Font = Enum.Font.SourceSansBold ESPButton.TextColor3 = Color3.fromRGB(255, 255, 255) ESPButton.TextSize = 16 ESPButton.BackgroundColor3 = Color3.fromRGB(30, 30, 30) ESPButton.Visible = false ESPButton.Parent = TabContent local FindDevilButton = Instance.new("TextButton") FindDevilButton.Size = UDim2.new(0, 200, 0, 40) FindDevilButton.Position = UDim2.new(0, 20, 0, 100) FindDevilButton.Text = "Find Devil (OFF)" FindDevilButton.Font = Enum.Font.SourceSansBold FindDevilButton.TextColor3 = Color3.fromRGB(255,255,255) FindDevilButton.TextSize = 16 FindDevilButton.BackgroundColor3 = Color3.fromRGB(30,30,30) FindDevilButton.Visible = false FindDevilButton.Parent = TabContent for i, name in ipairs(tabNames) do local Tab = Instance.new("TextButton") Tab.Size = UDim2.new(1, 0, 0, 30) Tab.Position = UDim2.new(0, 0, 0, (i - 1) * 30) Tab.BackgroundColor3 = (i == 1) and Color3.fromRGB(200, 30, 30) or Color3.fromRGB(20, 20, 20) Tab.Text = name Tab.Font = Enum.Font.SourceSansBold Tab.TextSize = 16 Tab.TextColor3 = Color3.fromRGB(255, 255, 255) Tab.BorderSizePixel = 0 Tab.Parent = TabList tabButtons[name] = Tab end for name, button in pairs(tabButtons) do button.MouseButton1Click:Connect(function() for _, btn in pairs(tabButtons) do btn.BackgroundColor3 = Color3.fromRGB(20, 20, 20) end button.BackgroundColor3 = Color3.fromRGB(200, 30, 30) TabTitle.Text = name AutoFarmButton.Visible = (name == "Farm") ESPButton.Visible = (name == "ESP") FindDevilButton.Visible = (name == "Devil heart") end) end -- AUTO FARM local autofarmRunning = false local autofarmThread AutoFarmButton.MouseButton1Click:Connect(function() autofarmRunning = not autofarmRunning AutoFarmButton.Text = autofarmRunning and "Toggle AutoFarm (ON)" or "Toggle AutoFarm (OFF)" if autofarmRunning then autofarmThread = task.spawn(function() local quest_boy = game:GetService("Workspace").DialogNPCs["grown up boy"]:WaitForChild("HumanoidRootPart") local Players = game:GetService("Players") local Player = Players.LocalPlayer local offset = 0 local function getCharacter() while not Player.Character or not Player.Character:FindFirstChild("HumanoidRootPart") do Player.CharacterAdded:Wait() wait() end return Player.Character end local function move_to(target) getCharacter():MoveTo(target.Position) end local function has_quest() local questGui = Player:WaitForChild("PlayerGui"):FindFirstChild("Quest") if questGui then local quest = questGui:FindFirstChild("quest") local progress = questGui:FindFirstChild("progress") local max = questGui:FindFirstChild("max") if quest and progress and max then if tostring(quest.Value):lower():find("fiends") and tonumber(progress.Value) < 3 then return true elseif tonumber(progress.Value) >= 3 then local completed = questGui:FindFirstChild("Completed") if completed then wait(1) local pos = completed.Yes.AbsolutePosition mousemoveabs(pos.X + 500 + offset, pos.Y + 500) offset += 2 mouse1click() end end end end return false end local function accept_quest() local _, onscreen = workspace.CurrentCamera:WorldToViewportPoint(quest_boy.Position) local dialogGUI = Player:WaitForChild("PlayerGui"):FindFirstChild("dialogGUI") if onscreen and not dialogGUI then keypress(0x45) wait() keyrelease(0x45) elseif onscreen and dialogGUI then wait(1) local option = dialogGUI:FindFirstChild("f") and dialogGUI.f:FindFirstChild("sf") and dialogGUI.f.sf:FindFirstChild("option") if option and option:FindFirstChild("text") then local pos = option.text.AbsolutePosition mousemoveabs(pos.X + 500 + offset, pos.Y + 500) offset += 2 mouse1click() end end end local function closest_npc() local npcs = workspace:FindFirstChild("Living") local closest, minDist = nil, math.huge if npcs then for _, npc in pairs(npcs:GetChildren()) do if npc.Name:lower():find("fiend") and npc:FindFirstChild("HumanoidRootPart") and npc:FindFirstChild("Humanoid") and npc.Humanoid.Health > 0 then local dist = (getCharacter().HumanoidRootPart.Position - npc.HumanoidRootPart.Position).Magnitude if dist < minDist then closest = npc minDist = dist end end end end return closest end local function start_killing() local npc = closest_npc() if npc and npc:FindFirstChild("HumanoidRootPart") then local char = getCharacter() local dist = (char.HumanoidRootPart.Position - npc.HumanoidRootPart.Position).Magnitude if dist > 30 then move_to(npc.HumanoidRootPart) else char.HumanoidRootPart.Anchored = true char.HumanoidRootPart.CFrame = npc.HumanoidRootPart.CFrame - npc.HumanoidRootPart.CFrame.LookVector * 8 char.HumanoidRootPart.Anchored = false game:GetService("ReplicatedStorage").events.remote:FireServer("NormalAttack") end end end while autofarmRunning do local char = getCharacter() local dist = (quest_boy.Position - char.HumanoidRootPart.Position).Magnitude if dist > 10 and not has_quest() then move_to(quest_boy) workspace.CurrentCamera.CFrame = CFrame.new(workspace.CurrentCamera.CFrame.Position, quest_boy.Position) elseif dist <= 10 and not has_quest() then accept_quest() elseif has_quest() then offset = 0 repeat if not autofarmRunning then break end start_killing() wait() until not has_quest() end wait(0.75) end getCharacter().HumanoidRootPart.Anchored = false end) else if autofarmThread then task.cancel(autofarmThread) end end end) -- ESP local espEnabled = false local highlights = {} local function updateESP() for _, h in pairs(highlights) do if h and h.Parent then h:Destroy() end end highlights = {} if espEnabled then for _, player in pairs(game.Players:GetPlayers()) do if player ~= game.Players.LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then local highlight = Instance.new("Highlight") highlight.Name = "BenjaESP" highlight.Adornee = player.Character highlight.FillColor = Color3.fromRGB(255, 0, 0) highlight.FillTransparency = 0.5 highlight.OutlineColor = Color3.fromRGB(255, 0, 0) highlight.OutlineTransparency = 0 highlight.Parent = player.Character table.insert(highlights, highlight) end end end end ESPButton.MouseButton1Click:Connect(function() espEnabled = not espEnabled ESPButton.Text = espEnabled and "Toggle ESP (ON)" or "Toggle ESP (OFF)" updateESP() end) game.Players.PlayerAdded:Connect(function(player) player.CharacterAdded:Connect(function() wait(1) if espEnabled then updateESP() end end) end) -- DEVIL HEART FINDER local runningDevil = false local devilThread local function FindDevilLoop() local plr = game.Players.LocalPlayer local isTweening = false local spawn = function() game:GetService("ReplicatedStorage"):WaitForChild("funs"):WaitForChild("SpawnPlayer"):InvokeServer() end local moveto = function(pos, offset) if not isTweening and plr.Character and plr.Character:FindFirstChild('HumanoidRootPart') then offset = offset or CFrame.new(0, 0, 0) isTweening = true local hrp = plr.Character.HumanoidRootPart hrp.Anchored = true hrp.CFrame = pos.CFrame * offset hrp.Anchored = false isTweening = false end end while runningDevil do local found = false for i, v in pairs(workspace:GetDescendants()) do if v:IsA('MeshPart') and v.MeshId == 'rbxassetid://12346512976' then found = true if plr:FindFirstChild("PlayerGui") and plr.PlayerGui:FindFirstChild("Menu") then spawn() repeat task.wait() until not runningDevil or (plr.Character and plr.Character:FindFirstChild("Humanoid") and not plr.Character:FindFirstChild("ForceField")) end if not runningDevil then break end moveto(v) repeat task.wait() if v:FindFirstChild("ProximityPrompt") then fireproximityprompt(v.ProximityPrompt) end until not runningDevil or not v or not v:FindFirstChild("ProximityPrompt") break end end if not found then local HttpService = game:GetService("HttpService") local TeleportService = game:GetService("TeleportService") local PlaceId = game.PlaceId local JobId = game.JobId local cursor = nil repeat local url = "https://games.roblox.com/v1/games/" .. PlaceId .. "/servers/Public?sortOrder=Desc&limit=100" if cursor then url = url .. "&cursor=" .. cursor end local success, result = pcall(function() return HttpService:JSONDecode(game:HttpGet(url)) end) if success and result and result.data then for _, server in ipairs(result.data) do if not runningDevil then break end if server.playing < server.maxPlayers and server.id ~= JobId then local successTP = pcall(function() TeleportService:TeleportToPlaceInstance(PlaceId, server.id, plr) end) if successTP then break end end end cursor = result.nextPageCursor else break end until not runningDevil or not cursor end task.wait(1) end end FindDevilButton.MouseButton1Click:Connect(function() runningDevil = not runningDevil FindDevilButton.Text = runningDevil and "Find Devil (ON)" or "Find Devil (OFF)" if runningDevil then devilThread = task.spawn(FindDevilLoop) else if devilThread then task.cancel(devilThread) end end end)