Created
September 6, 2026 01:12
-
-
Save pacoca-hub-project/aece81f54e3b0ba2caa5fafe94e5a893 to your computer and use it in GitHub Desktop.
Paçoca-hub-project
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| -- ========================================================= | |
| -- PARTE 1: INTERFACE PRINCIPAL E ESTRUTURA (PAÇOCA HUB) | |
| -- ========================================================= | |
| -- Limpeza preventiva de instâncias anteriores | |
| if game:GetService("CoreGui"):FindFirstChild("PacocaHub_Mobile") then | |
| game:GetService("CoreGui").PacocaHub_Mobile:Destroy() | |
| end | |
| local CoreGui = game:GetService("CoreGui") | |
| local Players = game:GetService("Players") | |
| local UserInputService = game:GetService("UserInputService") | |
| local TweenService = game:GetService("TweenService") | |
| local RunService = game:GetService("RunService") | |
| -- 1. SCREENGUI PRINCIPAL | |
| local ScreenGui = Instance.new("ScreenGui") | |
| ScreenGui.Name = "PacocaHub_Mobile" | |
| ScreenGui.ResetOnSpawn = false | |
| ScreenGui.DisplayOrder = 999 | |
| local success, _ = pcall(function() | |
| ScreenGui.Parent = CoreGui | |
| end) | |
| if not success or not ScreenGui.Parent then | |
| ScreenGui.Parent = Players.LocalPlayer:WaitForChild("PlayerGui") | |
| end | |
| -- 2. LINKS DAS IMAGENS | |
| local mainImageUrl = "https://files.catbox.moe/bl2tpq.png" | |
| local mainFileName = "pacoca_hub_main_bl2tpq.png" | |
| local ballImageUrl = "https://files.catbox.moe/5dowac.png" | |
| local ballFileName = "pacoca_hub_ball_v2.png" | |
| -- 3. SISTEMA DE DOWNLOAD | |
| local function getAsset(url, fileName) | |
| if writefile and getcustomasset then | |
| if not isfile(fileName) then | |
| local response = game:HttpGet(url) | |
| writefile(fileName, response) | |
| end | |
| return getcustomasset(fileName) | |
| end | |
| return url | |
| end | |
| local mainAssetId = getAsset(mainImageUrl, mainFileName) | |
| local ballAssetId = getAsset(ballImageUrl, ballFileName) | |
| -- 4. FRAME PRINCIPAL | |
| local MainFrame = Instance.new("Frame") | |
| MainFrame.Name = "MainFrame" | |
| MainFrame.Size = UDim2.new(0, 600, 0, 270) | |
| MainFrame.Position = UDim2.new(0.5, -300, 0.5, -135) | |
| MainFrame.BackgroundTransparency = 1 | |
| MainFrame.BorderSizePixel = 0 | |
| MainFrame.Active = true | |
| MainFrame.Parent = ScreenGui | |
| -- 5. IMAGEM PRINCIPAL | |
| local BackgroundImage = Instance.new("ImageLabel") | |
| BackgroundImage.Name = "BackgroundImage" | |
| BackgroundImage.Size = UDim2.new(1, 0, 1, 0) | |
| BackgroundImage.Position = UDim2.new(0, 0, 0, 0) | |
| BackgroundImage.Image = mainAssetId | |
| BackgroundImage.BackgroundTransparency = 1 | |
| BackgroundImage.BorderSizePixel = 0 | |
| BackgroundImage.ScaleType = Enum.ScaleType.Stretch | |
| BackgroundImage.ZIndex = 1 | |
| BackgroundImage.Parent = MainFrame | |
| local ImageCorner = Instance.new("UICorner") | |
| ImageCorner.CornerRadius = UDim.new(0, 14) | |
| ImageCorner.Parent = BackgroundImage | |
| -- 6. BORDA EXTERNA | |
| local MainBorder = Instance.new("UIStroke") | |
| MainBorder.Name = "MainBorder" | |
| MainBorder.Color = Color3.fromRGB(200, 120, 50) | |
| MainBorder.Thickness = 3 | |
| MainBorder.Transparency = 0 | |
| MainBorder.Parent = BackgroundImage | |
| -- 7. ANIMAÇÃO DA BORDA | |
| task.spawn(function() | |
| while MainBorder and MainBorder.Parent do | |
| local tween1 = TweenService:Create( | |
| MainBorder, | |
| TweenInfo.new(2.5, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), | |
| {Color = Color3.fromRGB(255, 210, 120)} | |
| ) | |
| tween1:Play() | |
| tween1.Completed:Wait() | |
| if not MainBorder or not MainBorder.Parent then break end | |
| local tween2 = TweenService:Create( | |
| MainBorder, | |
| TweenInfo.new(2.5, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), | |
| {Color = Color3.fromRGB(170, 90, 30)} | |
| ) | |
| tween2:Play() | |
| tween2.Completed:Wait() | |
| end | |
| end) | |
| -- 8. FARELOS E CARAMELOS | |
| local function createParticle(name, size, pos, isCaramel) | |
| local particle = Instance.new("Frame") | |
| particle.Name = name | |
| particle.Size = size | |
| particle.Position = pos | |
| if isCaramel then | |
| particle.BackgroundColor3 = Color3.fromRGB(140, 70, 20) | |
| else | |
| particle.BackgroundColor3 = Color3.fromRGB(80, 40, 10) | |
| end | |
| particle.BackgroundTransparency = 0.80 | |
| particle.BorderSizePixel = 0 | |
| particle.ZIndex = 25 | |
| particle.Parent = MainFrame | |
| local corner = Instance.new("UICorner") | |
| if isCaramel then | |
| corner.CornerRadius = UDim.new(0, 4) | |
| else | |
| corner.CornerRadius = UDim.new(1, 0) | |
| end | |
| corner.Parent = particle | |
| task.spawn(function() | |
| while particle and particle.Parent do | |
| local randomX = math.random(-8, 8) | |
| local randomY = math.random(-8, 8) | |
| local t1 = TweenService:Create( | |
| particle, | |
| TweenInfo.new(3.5, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), | |
| {Position = pos + UDim2.new(0, randomX, 0, randomY)} | |
| ) | |
| t1:Play() | |
| t1.Completed:Wait() | |
| if not particle or not particle.Parent then break end | |
| local t2 = TweenService:Create( | |
| particle, | |
| TweenInfo.new(3.5, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), | |
| {Position = pos} | |
| ) | |
| t2:Play() | |
| t2.Completed:Wait() | |
| end | |
| end) | |
| end | |
| createParticle("Farelo1", UDim2.new(0, 7, 0, 6), UDim2.new(0.15, 0, 0.25, 0), false) | |
| createParticle("Farelo2", UDim2.new(0, 5, 0, 5), UDim2.new(0.8, 0, 0.4, 0), false) | |
| createParticle("Caramelo1", UDim2.new(0, 12, 0, 6), UDim2.new(0.4, 0, 0.15, 0), true) | |
| createParticle("Farelo3", UDim2.new(0, 6, 0, 8), UDim2.new(0.65, 0, 0.75, 0), false) | |
| createParticle("Caramelo2", UDim2.new(0, 10, 0, 5), UDim2.new(0.25, 0, 0.7, 0), true) | |
| createParticle("Farelo4", UDim2.new(0, 4, 0, 4), UDim2.new(0.5, 0, 0.5, 0), false) | |
| -- 9. INDICADOR SUPERIOR DE ARRASTE | |
| local DragIndicator = Instance.new("Frame") | |
| DragIndicator.Name = "DragIndicator" | |
| DragIndicator.Size = UDim2.new(0, 65, 0, 3) | |
| DragIndicator.Position = UDim2.new(0.5, -32.5, 0, 1) | |
| DragIndicator.BackgroundColor3 = Color3.fromRGB(255, 255, 255) | |
| DragIndicator.BackgroundTransparency = 1 | |
| DragIndicator.BorderSizePixel = 0 | |
| DragIndicator.ZIndex = 10 | |
| DragIndicator.Parent = MainFrame | |
| local DragCorner = Instance.new("UICorner") | |
| DragCorner.CornerRadius = UDim.new(1, 0) | |
| DragCorner.Parent = DragIndicator | |
| -- 10. RETÂNGULO DOS BOTÕES (Minimizar / Fechar) | |
| local ButtonWrapper = Instance.new("Frame") | |
| ButtonWrapper.Name = "ButtonWrapper" | |
| ButtonWrapper.Size = UDim2.new(0, 78, 0, 32) | |
| ButtonWrapper.AnchorPoint = Vector2.new(0.5, 0.5) | |
| ButtonWrapper.Position = UDim2.new(0.47, 0, 0.90, 0) | |
| ButtonWrapper.BackgroundTransparency = 1 | |
| ButtonWrapper.BorderSizePixel = 0 | |
| ButtonWrapper.ZIndex = 40 | |
| ButtonWrapper.Parent = MainFrame | |
| local UIListLayout = Instance.new("UIListLayout") | |
| UIListLayout.FillDirection = Enum.FillDirection.Horizontal | |
| UIListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center | |
| UIListLayout.VerticalAlignment = Enum.VerticalAlignment.Center | |
| UIListLayout.SortOrder = Enum.SortOrder.LayoutOrder | |
| UIListLayout.Padding = UDim.new(0, 8) | |
| UIListLayout.Parent = ButtonWrapper | |
| local function createButton(name, text, layoutOrder) | |
| local btn = Instance.new("TextButton") | |
| btn.Name = name | |
| btn.Size = UDim2.new(0, 32, 0, 27) | |
| btn.BackgroundTransparency = 1 | |
| btn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) | |
| btn.BorderSizePixel = 0 | |
| btn.Text = text | |
| btn.TextColor3 = Color3.fromRGB(255, 245, 220) | |
| btn.TextSize = 15 | |
| btn.Font = Enum.Font.FredokaOne | |
| btn.LayoutOrder = layoutOrder | |
| btn.AutoButtonColor = false | |
| btn.ZIndex = 45 | |
| btn.Parent = ButtonWrapper | |
| local stroke = Instance.new("UIStroke") | |
| stroke.Color = Color3.fromRGB(255, 225, 160) | |
| stroke.Thickness = 1 | |
| stroke.Transparency = 0.35 | |
| stroke.Parent = btn | |
| local corner = Instance.new("UICorner") | |
| corner.CornerRadius = UDim.new(0, 6) | |
| corner.Parent = btn | |
| return btn | |
| end | |
| local MinimizeButton = createButton("MinimizeButton", "-", 1) | |
| local CloseButton = createButton("CloseButton", "X", 2) | |
| -- 11. CONTAINERS DE ABAS E CONTEÚDO | |
| local TabsContainer = Instance.new("ScrollingFrame") | |
| TabsContainer.Name = "TabsContainer" | |
| TabsContainer.Size = UDim2.new(0, 266, 0, 52) | |
| TabsContainer.Position = UDim2.new(0.525, 0, 0.08, 0) | |
| TabsContainer.BackgroundTransparency = 1 | |
| TabsContainer.BorderSizePixel = 0 | |
| TabsContainer.CanvasSize = UDim2.new(0, (120 * 17) + (10 * 16) + 20, 0, 0) | |
| TabsContainer.ScrollBarThickness = 0 | |
| TabsContainer.ScrollingDirection = Enum.ScrollingDirection.X | |
| TabsContainer.AutomaticCanvasSize = Enum.AutomaticSize.None | |
| TabsContainer.ZIndex = 15 | |
| TabsContainer.Parent = MainFrame | |
| local TabsLayout = Instance.new("UIListLayout") | |
| TabsLayout.FillDirection = Enum.FillDirection.Horizontal | |
| TabsLayout.HorizontalAlignment = Enum.HorizontalAlignment.Left | |
| TabsLayout.VerticalAlignment = Enum.VerticalAlignment.Center | |
| TabsLayout.SortOrder = Enum.SortOrder.LayoutOrder | |
| TabsLayout.Padding = UDim.new(0, 10) | |
| TabsLayout.Parent = TabsContainer | |
| local ContentContainer = Instance.new("Frame") | |
| ContentContainer.Name = "ContentContainer" | |
| ContentContainer.Size = UDim2.new(0, 290, 0, 160) | |
| ContentContainer.Position = UDim2.new(0.525, 0, 0.31, 0) | |
| ContentContainer.BackgroundTransparency = 1 | |
| ContentContainer.BorderSizePixel = 0 | |
| ContentContainer.ZIndex = 15 | |
| ContentContainer.Parent = MainFrame | |
| -- 12. BOLINHA MINIMIZADA | |
| local MiniBall = Instance.new("ImageButton") | |
| MiniBall.Name = "MiniBall" | |
| MiniBall.Size = UDim2.new(0, 85, 0, 85) | |
| MiniBall.Position = UDim2.new(0.5, -42.5, 0.5, -42.5) | |
| MiniBall.Image = ballAssetId | |
| MiniBall.BackgroundTransparency = 1 | |
| MiniBall.BorderSizePixel = 0 | |
| MiniBall.Visible = false | |
| MiniBall.Active = true | |
| MiniBall.ZIndex = 50 | |
| MiniBall.Parent = ScreenGui | |
| local BallAspect = Instance.new("UIAspectRatioConstraint") | |
| BallAspect.AspectRatio = 1 | |
| BallAspect.Parent = MiniBall | |
| local BallCorner = Instance.new("UICorner") | |
| BallCorner.CornerRadius = UDim.new(1, 0) | |
| BallCorner.Parent = MiniBall | |
| -- 13. VARIÁVEIS E CONTROLES DE ANIMAÇÃO DE JANELA | |
| local isAnimating = false | |
| local originalSize = UDim2.new(0, 600, 0, 270) | |
| local wasDragged = false | |
| MinimizeButton.MouseButton1Click:Connect(function() | |
| if isAnimating or wasDragged then return end | |
| isAnimating = true | |
| local currentPos = MainFrame.Position | |
| MiniBall.Position = currentPos + UDim2.new(0, 300 - 42.5, 0, 135 - 42.5) | |
| MainFrame.Visible = false | |
| MiniBall.Size = UDim2.new(0, 0, 0, 0) | |
| MiniBall.Visible = true | |
| local ballTween = TweenService:Create( | |
| MiniBall, | |
| TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out), | |
| {Size = UDim2.new(0, 85, 0, 85)} | |
| ) | |
| ballTween:Play() | |
| ballTween.Completed:Connect(function() | |
| isAnimating = false | |
| end) | |
| end) | |
| MiniBall.MouseButton1Click:Connect(function() | |
| if isAnimating or wasDragged then return end | |
| isAnimating = true | |
| local ballPos = MiniBall.Position | |
| MainFrame.Position = ballPos - UDim2.new(0, 300 - 42.5, 0, 135 - 42.5) | |
| MiniBall.Visible = false | |
| MainFrame.Size = UDim2.new(0, 0, 0, 0) | |
| MainFrame.Visible = true | |
| local frameTween = TweenService:Create( | |
| MainFrame, | |
| TweenInfo.new(0.4, Enum.EasingStyle.Back, Enum.EasingDirection.Out), | |
| {Size = originalSize} | |
| ) | |
| frameTween:Play() | |
| frameTween.Completed:Connect(function() | |
| isAnimating = false | |
| end) | |
| end) | |
| CloseButton.MouseButton1Click:Connect(function() | |
| if not wasDragged then | |
| ScreenGui:Destroy() | |
| end | |
| end) | |
| -- 14. SISTEMA DE ARRASTE | |
| local function attachDragSystem(frame) | |
| local dragging = false | |
| local dragStart | |
| local startPos | |
| local dragThreshold = 5 | |
| frame.InputBegan:Connect(function(input) | |
| if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then | |
| dragStart = input.Position | |
| startPos = frame.Position | |
| wasDragged = false | |
| local connection | |
| connection = UserInputService.InputChanged:Connect(function(moveInput) | |
| if moveInput.UserInputType == Enum.UserInputType.MouseMovement or moveInput.UserInputType == Enum.UserInputType.Touch then | |
| local delta = moveInput.Position - dragStart | |
| if not dragging and (delta.Magnitude > dragThreshold) then | |
| dragging = true | |
| if frame == MainFrame then | |
| TweenService:Create(DragIndicator, TweenInfo.new(0.15), {BackgroundTransparency = 0.2}):Play() | |
| end | |
| end | |
| if dragging then | |
| wasDragged = true | |
| frame.Position = UDim2.new( | |
| startPos.X.Scale, | |
| startPos.X.Offset + (moveInput.Position.X - dragStart.X), | |
| startPos.Y.Scale, | |
| startPos.Y.Offset + (moveInput.Position.Y - dragStart.Y) | |
| ) | |
| end | |
| end | |
| end) | |
| local releaseConnection | |
| releaseConnection = UserInputService.InputEnded:Connect(function(endInput) | |
| if endInput.UserInputType == Enum.UserInputType.MouseButton1 or endInput.UserInputType == Enum.UserInputType.Touch then | |
| if dragging then | |
| dragging = false | |
| if frame == MainFrame then | |
| TweenService:Create(DragIndicator, TweenInfo.new(0.15), {BackgroundTransparency = 1}):Play() | |
| end | |
| task.delay(0.1, function() | |
| wasDragged = false | |
| end) | |
| end | |
| connection:Disconnect() | |
| releaseConnection:Disconnect() | |
| end | |
| end) | |
| end | |
| end) | |
| end | |
| attachDragSystem(MainFrame) | |
| attachDragSystem(MiniBall) | |
| -- ========================================================= | |
| -- PARTE 2: GERAÇÃO DAS 17 ABAS E SISTEMA DE MENSAGENS | |
| -- ========================================================= | |
| local TabsContainerRef = ScreenGui:WaitForChild("MainFrame"):WaitForChild("TabsContainer") | |
| local ContentContainerRef = ScreenGui:WaitForChild("MainFrame"):WaitForChild("ContentContainer") | |
| local TweenServiceRef = game:GetService("TweenService") | |
| local tabsData = { | |
| {Name = "Main", Text = "Main"}, | |
| {Name = "Combat", Text = "Combat"}, | |
| {Name = "Fruits", Text = "Fruits"}, | |
| {Name = "Raids", Text = "Raids"}, | |
| {Name = "Sea", Text = "Sea"}, | |
| {Name = "Quests", Text = "Quests"}, | |
| {Name = "Teleports", Text = "Teleports"}, | |
| {Name = "Stats", Text = "Stats"}, | |
| {Name = "Visuals", Text = "Visuals"}, | |
| {Name = "Shop", Text = "Shop"}, | |
| {Name = "Webhook", Text = "Webhook"}, | |
| {Name = "Settings", Text = "Settings"}, | |
| {Name = "Misc", Text = "Misc"}, | |
| {Name = "Bounty", Text = "Bounty"}, | |
| {Name = "Race", Text = "Race"}, | |
| {Name = "Item", Text = "Item"}, | |
| {Name = "Custom", Text = "Custom"} | |
| } | |
| local tabButtons = {} | |
| local tabContents = {} | |
| local activeTab = nil | |
| for i, data in ipairs(tabsData) do | |
| -- Botão da Aba | |
| local tabBtn = Instance.new("TextButton") | |
| tabBtn.Name = data.Name .. "Tab" | |
| tabBtn.Size = UDim2.new(0, 120, 0, 44) | |
| tabBtn.BackgroundColor3 = Color3.fromRGB(255, 255, 255) | |
| tabBtn.BackgroundTransparency = 0 | |
| tabBtn.BorderSizePixel = 0 | |
| tabBtn.Text = "" | |
| tabBtn.AutoButtonColor = false | |
| tabBtn.ZIndex = 20 | |
| tabBtn.LayoutOrder = i | |
| tabBtn.Parent = TabsContainerRef | |
| local corner = Instance.new("UICorner") | |
| corner.CornerRadius = UDim.new(0, 10) | |
| corner.Parent = tabBtn | |
| local gradient = Instance.new("UIGradient") | |
| gradient.Name = "TabGradient" | |
| gradient.Color = ColorSequence.new({ | |
| ColorSequenceKeypoint.new(0, Color3.fromRGB(130, 65, 15)), | |
| ColorSequenceKeypoint.new(1, Color3.fromRGB(90, 40, 5)) | |
| }) | |
| gradient.Rotation = 90 | |
| gradient.Parent = tabBtn | |
| -- TextLabel dedicado em camada superior (ZIndex 25) | |
| local tabTextLabel = Instance.new("TextLabel") | |
| tabTextLabel.Name = "TabText" | |
| tabTextLabel.Size = UDim2.new(1, 0, 1, 0) | |
| tabTextLabel.Position = UDim2.new(0, 0, 0, 0) | |
| tabTextLabel.BackgroundTransparency = 1 | |
| tabTextLabel.TextColor3 = Color3.fromRGB(255, 255, 255) | |
| tabTextLabel.TextSize = 13 | |
| tabTextLabel.Font = Enum.Font.FredokaOne | |
| tabTextLabel.Text = data.Text | |
| tabTextLabel.TextXAlignment = Enum.TextXAlignment.Center | |
| tabTextLabel.TextYAlignment = Enum.TextYAlignment.Center | |
| tabTextLabel.ZIndex = 25 | |
| tabTextLabel.Parent = tabBtn | |
| -- Conteúdo específico da Aba | |
| local contentFrame = Instance.new("ScrollingFrame") | |
| contentFrame.Name = data.Name .. "Content" | |
| contentFrame.Size = UDim2.new(1, 0, 1, 0) | |
| contentFrame.Position = UDim2.new(0, 0, 0, 0) | |
| contentFrame.BackgroundTransparency = 1 | |
| contentFrame.BorderSizePixel = 0 | |
| contentFrame.CanvasSize = UDim2.new(0, 0, 0, 200) | |
| contentFrame.ScrollBarThickness = 3 | |
| contentFrame.Visible = false | |
| contentFrame.ZIndex = 20 | |
| contentFrame.Parent = ContentContainerRef | |
| -- Mensagem de boas-vindas com efeito de fade-out | |
| local welcomeLabel = Instance.new("TextLabel") | |
| welcomeLabel.Name = "WelcomeLabel" | |
| welcomeLabel.Size = UDim2.new(1, -20, 0, 45) | |
| welcomeLabel.Position = UDim2.new(0, 10, 0, 10) | |
| welcomeLabel.BackgroundTransparency = 1 | |
| welcomeLabel.TextColor3 = Color3.fromRGB(255, 245, 220) | |
| welcomeLabel.TextSize = 13 | |
| welcomeLabel.Font = Enum.Font.FredokaOne | |
| welcomeLabel.Text = "Bem-vindo à aba " .. data.Text .. " do Paçoca Hub!" | |
| welcomeLabel.TextWrapped = true | |
| welcomeLabel.TextXAlignment = Enum.TextXAlignment.Center | |
| welcomeLabel.TextYAlignment = Enum.TextYAlignment.Center | |
| welcomeLabel.ZIndex = 21 | |
| welcomeLabel.Parent = contentFrame | |
| tabButtons[i] = tabBtn | |
| tabContents[i] = contentFrame | |
| -- Lógica de Clique da Aba | |
| tabBtn.MouseButton1Click:Connect(function() | |
| if activeTab == i then return end | |
| activeTab = i | |
| for idx, btn in ipairs(tabButtons) do | |
| local grad = btn:FindFirstChild("TabGradient") | |
| if idx == i then | |
| grad.Color = ColorSequence.new({ | |
| ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 230, 100)), | |
| ColorSequenceKeypoint.new(1, Color3.fromRGB(210, 150, 20)) | |
| }) | |
| tabContents[idx].Visible = true | |
| local wLabel = tabContents[idx]:FindFirstChild("WelcomeLabel") | |
| if wLabel then | |
| wLabel.TextTransparency = 0 | |
| TweenServiceRef:Create(wLabel, TweenInfo.new(3, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() | |
| end | |
| else | |
| grad.Color = ColorSequence.new({ | |
| ColorSequenceKeypoint.new(0, Color3.fromRGB(130, 65, 15)), | |
| ColorSequenceKeypoint.new(1, Color3.fromRGB(90, 40, 5)) | |
| }) | |
| tabContents[idx].Visible = false | |
| end | |
| end | |
| end) | |
| end | |
| -- Seleciona a primeira aba por padrão ao iniciar | |
| if tabButtons[1] then | |
| tabButtons[1]:FindFirstChild("TabGradient").Color = ColorSequence.new({ | |
| ColorSequenceKeypoint.new(0, Color3.fromRGB(255, 230, 100)), | |
| ColorSequenceKeypoint.new(1, Color3.fromRGB(210, 150, 20)) | |
| }) | |
| tabContents[1].Visible = true | |
| activeTab = 1 | |
| local firstWelcome = tabContents[1]:FindFirstChild("WelcomeLabel") | |
| if firstWelcome then | |
| firstWelcome.TextTransparency = 0 | |
| TweenServiceRef:Create(firstWelcome, TweenInfo.new(3, Enum.EasingStyle.Sine, Enum.EasingDirection.Out), {TextTransparency = 1}):Play() | |
| end | |
| end | |
| -- ========================================================= | |
| -- PARTE 3: SISTEMA DE ELEMENTOS (UI LIBRARY) E POPULAÇÃO DAS ABAS | |
| -- ========================================================= | |
| local TweenService = game:GetService("TweenService") | |
| local UserInputService = game:GetService("UserInputService") | |
| local CoreGui = game:GetService("CoreGui") | |
| -- [BLOCO 1: CONFIGURAÇÃO DOS CONTAINERS (4 ITENS POR VEZ)] | |
| -- Vamos reconfigurar os ScrollingFrames das abas para suportarem o layout automático | |
| for _, contentFrame in pairs(tabContents) do | |
| contentFrame.AutomaticCanvasSize = Enum.AutomaticSize.Y | |
| contentFrame.ScrollBarImageColor3 = Color3.fromRGB(255, 210, 120) | |
| local layout = Instance.new("UIListLayout") | |
| layout.FillDirection = Enum.FillDirection.Vertical | |
| layout.HorizontalAlignment = Enum.HorizontalAlignment.Center | |
| layout.SortOrder = Enum.SortOrder.LayoutOrder | |
| layout.Padding = UDim.new(0, 4) -- 4px de espaço | |
| layout.Parent = contentFrame | |
| local padding = Instance.new("UIPadding") | |
| padding.PaddingTop = UDim.new(0, 2) | |
| padding.PaddingBottom = UDim.new(0, 2) | |
| padding.Parent = contentFrame | |
| end | |
| -- [BLOCO 2: FUNÇÃO CONSTRUTORA DO SWITCHER (TOGGLE)] | |
| local function CreateToggle(parentTab, text, callback) | |
| local ToggleFrame = Instance.new("Frame") | |
| ToggleFrame.Size = UDim2.new(1, -10, 0, 37) -- Altura exata para caber 4 | |
| ToggleFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) | |
| ToggleFrame.BorderSizePixel = 0 | |
| ToggleFrame.Parent = parentTab | |
| Instance.new("UICorner", ToggleFrame).CornerRadius = UDim.new(0, 8) | |
| local gradient = Instance.new("UIGradient") | |
| gradient.Color = ColorSequence.new({ | |
| ColorSequenceKeypoint.new(0, Color3.fromRGB(130, 65, 15)), | |
| ColorSequenceKeypoint.new(1, Color3.fromRGB(90, 40, 5)) | |
| }) | |
| gradient.Parent = ToggleFrame | |
| local Title = Instance.new("TextLabel") | |
| Title.Size = UDim2.new(0.75, 0, 1, 0) | |
| Title.Position = UDim2.new(0, 10, 0, 0) | |
| Title.BackgroundTransparency = 1 | |
| Title.Text = text | |
| Title.TextColor3 = Color3.fromRGB(255, 245, 220) | |
| Title.Font = Enum.Font.FredokaOne | |
| Title.TextSize = 12 | |
| Title.TextXAlignment = Enum.TextXAlignment.Left | |
| Title.Parent = ToggleFrame | |
| local ToggleBtn = Instance.new("TextButton") | |
| ToggleBtn.Size = UDim2.new(0, 34, 0, 18) | |
| ToggleBtn.Position = UDim2.new(1, -45, 0.5, -9) | |
| ToggleBtn.BackgroundColor3 = Color3.fromRGB(60, 25, 0) | |
| ToggleBtn.Text = "" | |
| ToggleBtn.Parent = ToggleFrame | |
| Instance.new("UICorner", ToggleBtn).CornerRadius = UDim.new(1, 0) | |
| local Circle = Instance.new("Frame") | |
| Circle.Size = UDim2.new(0, 14, 0, 14) | |
| Circle.Position = UDim2.new(0, 2, 0.5, -7) | |
| Circle.BackgroundColor3 = Color3.fromRGB(200, 200, 200) | |
| Circle.Parent = ToggleBtn | |
| Instance.new("UICorner", Circle).CornerRadius = UDim.new(1, 0) | |
| local state = false | |
| ToggleBtn.MouseButton1Click:Connect(function() | |
| state = not state | |
| local targetPos = state and UDim2.new(1, -16, 0.5, -7) or UDim2.new(0, 2, 0.5, -7) | |
| local targetColor = state and Color3.fromRGB(255, 210, 120) or Color3.fromRGB(200, 200, 200) | |
| TweenService:Create(Circle, TweenInfo.new(0.2), {Position = targetPos, BackgroundColor3 = targetColor}):Play() | |
| if callback then pcall(callback, state) end | |
| end) | |
| end | |
| -- [BLOCO 3: FUNÇÃO CONSTRUTORA DO DROPDOWN] | |
| local function CreateDropdown(parentTab, text, options, callback) | |
| local DropFrame = Instance.new("Frame") | |
| DropFrame.Size = UDim2.new(1, -10, 0, 37) | |
| DropFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) | |
| DropFrame.ClipsDescendants = true | |
| DropFrame.Parent = parentTab | |
| Instance.new("UICorner", DropFrame).CornerRadius = UDim.new(0, 8) | |
| local gradient = Instance.new("UIGradient") | |
| gradient.Color = ColorSequence.new({ | |
| ColorSequenceKeypoint.new(0, Color3.fromRGB(130, 65, 15)), | |
| ColorSequenceKeypoint.new(1, Color3.fromRGB(90, 40, 5)) | |
| }) | |
| gradient.Parent = DropFrame | |
| local DropBtn = Instance.new("TextButton") | |
| DropBtn.Size = UDim2.new(1, 0, 0, 37) | |
| DropBtn.BackgroundTransparency = 1 | |
| DropBtn.Text = " " .. text .. " : [Selecione]" | |
| DropBtn.TextColor3 = Color3.fromRGB(255, 245, 220) | |
| DropBtn.Font = Enum.Font.FredokaOne | |
| DropBtn.TextSize = 12 | |
| DropBtn.TextXAlignment = Enum.TextXAlignment.Left | |
| DropBtn.Parent = DropFrame | |
| local Scroll = Instance.new("ScrollingFrame") | |
| Scroll.Size = UDim2.new(1, -10, 0, 70) | |
| Scroll.Position = UDim2.new(0, 5, 0, 37) | |
| Scroll.BackgroundTransparency = 1 | |
| Scroll.ScrollBarThickness = 2 | |
| Scroll.Parent = DropFrame | |
| local listLayout = Instance.new("UIListLayout") | |
| listLayout.Padding = UDim.new(0, 2) | |
| listLayout.Parent = Scroll | |
| local isOpen = false | |
| DropBtn.MouseButton1Click:Connect(function() | |
| isOpen = not isOpen | |
| TweenService:Create(DropFrame, TweenInfo.new(0.2), {Size = isOpen and UDim2.new(1, -10, 0, 110) or UDim2.new(1, -10, 0, 37)}):Play() | |
| end) | |
| for _, opt in ipairs(options) do | |
| local optBtn = Instance.new("TextButton") | |
| optBtn.Size = UDim2.new(1, 0, 0, 20) | |
| optBtn.BackgroundColor3 = Color3.fromRGB(80, 35, 5) | |
| optBtn.Text = opt | |
| optBtn.TextColor3 = Color3.fromRGB(255, 210, 120) | |
| optBtn.Font = Enum.Font.FredokaOne | |
| optBtn.TextSize = 11 | |
| optBtn.Parent = Scroll | |
| Instance.new("UICorner", optBtn).CornerRadius = UDim.new(0, 4) | |
| optBtn.MouseButton1Click:Connect(function() | |
| DropBtn.Text = " " .. text .. " : [" .. opt .. "]" | |
| isOpen = false | |
| TweenService:Create(DropFrame, TweenInfo.new(0.2), {Size = UDim2.new(1, -10, 0, 37)}):Play() | |
| if callback then pcall(callback, opt) end | |
| end) | |
| end | |
| Scroll.CanvasSize = UDim2.new(0, 0, 0, listLayout.AbsoluteContentSize.Y) | |
| end | |
| -- [BLOCO 4: FUNÇÃO CONSTRUTORA DO SLIDER] | |
| local function CreateSlider(parentTab, text, min, max, callback) | |
| local SliderFrame = Instance.new("Frame") | |
| SliderFrame.Size = UDim2.new(1, -10, 0, 37) | |
| SliderFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) | |
| SliderFrame.Parent = parentTab | |
| Instance.new("UICorner", SliderFrame).CornerRadius = UDim.new(0, 8) | |
| local gradient = Instance.new("UIGradient") | |
| gradient.Color = ColorSequence.new({ | |
| ColorSequenceKeypoint.new(0, Color3.fromRGB(130, 65, 15)), | |
| ColorSequenceKeypoint.new(1, Color3.fromRGB(90, 40, 5)) | |
| }) | |
| gradient.Parent = SliderFrame | |
| local Title = Instance.new("TextLabel") | |
| Title.Size = UDim2.new(1, -10, 0, 15) | |
| Title.Position = UDim2.new(0, 10, 0, 4) | |
| Title.BackgroundTransparency = 1 | |
| Title.Text = text .. " : " .. min | |
| Title.TextColor3 = Color3.fromRGB(255, 245, 220) | |
| Title.Font = Enum.Font.FredokaOne | |
| Title.TextSize = 11 | |
| Title.TextXAlignment = Enum.TextXAlignment.Left | |
| Title.Parent = SliderFrame | |
| local BarBG = Instance.new("TextButton") | |
| BarBG.Size = UDim2.new(1, -20, 0, 6) | |
| BarBG.Position = UDim2.new(0, 10, 0, 24) | |
| BarBG.BackgroundColor3 = Color3.fromRGB(60, 25, 0) | |
| BarBG.Text = "" | |
| BarBG.Parent = SliderFrame | |
| Instance.new("UICorner", BarBG).CornerRadius = UDim.new(1, 0) | |
| local BarFill = Instance.new("Frame") | |
| BarFill.Size = UDim2.new(0, 0, 1, 0) | |
| BarFill.BackgroundColor3 = Color3.fromRGB(255, 210, 120) | |
| BarFill.Parent = BarBG | |
| Instance.new("UICorner", BarFill).CornerRadius = UDim.new(1, 0) | |
| local dragging = false | |
| local function move(input) | |
| local pos = math.clamp((input.Position.X - BarBG.AbsolutePosition.X) / BarBG.AbsoluteSize.X, 0, 1) | |
| local val = math.floor(min + ((max - min) * pos)) | |
| BarFill.Size = UDim2.new(pos, 0, 1, 0) | |
| Title.Text = text .. " : " .. val | |
| if callback then pcall(callback, val) end | |
| end | |
| BarBG.InputBegan:Connect(function(input) | |
| if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then | |
| dragging = true; move(input) | |
| end | |
| end) | |
| UserInputService.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 move(input) end | |
| end) | |
| end | |
| -- [BLOCO 5: FUNÇÃO CONSTRUTORA DO TEXTBOX] | |
| local function CreateTextbox(parentTab, text, callback) | |
| local TextFrame = Instance.new("Frame") | |
| TextFrame.Size = UDim2.new(1, -10, 0, 37) | |
| TextFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) | |
| TextFrame.Parent = parentTab | |
| Instance.new("UICorner", TextFrame).CornerRadius = UDim.new(0, 8) | |
| local gradient = Instance.new("UIGradient") | |
| gradient.Color = ColorSequence.new({ | |
| ColorSequenceKeypoint.new(0, Color3.fromRGB(130, 65, 15)), | |
| ColorSequenceKeypoint.new(1, Color3.fromRGB(90, 40, 5)) | |
| }) | |
| gradient.Parent = TextFrame | |
| local InputBox = Instance.new("TextBox") | |
| InputBox.Size = UDim2.new(1, -20, 1, -10) | |
| InputBox.Position = UDim2.new(0, 10, 0, 5) | |
| InputBox.BackgroundColor3 = Color3.fromRGB(60, 25, 0) | |
| InputBox.PlaceholderText = text | |
| InputBox.Text = "" | |
| InputBox.TextColor3 = Color3.fromRGB(255, 210, 120) | |
| InputBox.Font = Enum.Font.FredokaOne | |
| InputBox.TextSize = 11 | |
| InputBox.Parent = TextFrame | |
| Instance.new("UICorner", InputBox).CornerRadius = UDim.new(0, 6) | |
| InputBox.FocusLost:Connect(function() | |
| if callback then pcall(callback, InputBox.Text) end | |
| end) | |
| end | |
| -- [BLOCO 6: POPULANDO ABA 1 (MAIN / AUTO FARM) - PARTE 1] | |
| local mainTab = tabContents[1] | |
| CreateToggle(mainTab, "Auto Farm Level", function(val) print(val) end) | |
| CreateDropdown(mainTab, "Selecionar Ilha", {"Ilha Inicial", "Selva", "Vila dos Piratas", "Deserto", "Vila Congelada", "Fortaleza da Marinha", "Ilhas do Céu 1", "Prisão", "Coliseu", "Magma", "Cidade Subaquática", "Ilhas do Céu 2", "Prisão de Magma", "Cidade das Fontes", "Reino das Rosas", "Zona Verde", "Ilha Cemitério", "Monte Inverno", "Quente e Fria", "Navio Amaldiçoado", "Castelo de Gelo", "Ilha Esquecida", "Porto da Cidade", "Ilha da Hidra", "Grande Árvore", "Tartaruga Flutuante", "Castelo Assombrado", "Mar de Guloseimas", "Posto Tiki"}, function(v) end) | |
| CreateDropdown(mainTab, "NPC Quest - Sea 1", {"NPC Pirata/Comum", "NPC Marinheiro", "NPC Quest Giver Selva", "NPC Quest Giver Vila dos Piratas", "NPC Quest Giver Deserto", "NPC Quest Giver Vila Congelada", "NPC Quest Giver Fortaleza da Marinha", "NPC Quest Giver Ilhas do Céu 1", "NPC Quest Giver Prisão", "NPC Quest Giver Coliseu", "NPC Quest Giver Magma", "NPC Quest Giver Cidade Subaquática", "NPC Quest Giver Ilhas do Céu 2", "NPC Quest Giver Prisão de Magma", "NPC Quest Giver Cidade das Fontes"}, function(v) end) | |
| CreateDropdown(mainTab, "NPC Quest - Sea 2", {"NPC Quest Giver Reino das Rosas", "NPC Quest Giver Zona Verde", "NPC Quest Giver Ilha Cemitério", "NPC Quest Giver Monte Inverno", "NPC Quest Giver Quente e Fria", "NPC Quest Giver Navio Amaldiçoado", "NPC Quest Giver Castelo de Gelo", "NPC Quest Giver Ilha Esquecida"}, function(v) end) | |
| -- [BLOCO 7: POPULANDO ABA 1 (MAIN / AUTO FARM) - PARTE 2] | |
| CreateDropdown(mainTab, "NPC Quest - Sea 3", {"NPC Quest Giver Porto da Cidade", "NPC Quest Giver Ilha da Hidra", "NPC Quest Giver Grande Árvore", "NPC Quest Giver Tartaruga Flutuante", "NPC Quest Giver Castelo Assombrado", "NPC Quest Giver Mar de Guloseimas", "NPC Quest Giver Posto Tiki"}, function(v) end) | |
| CreateToggle(mainTab, "Auto Accept Quest", function(val) end) | |
| CreateToggle(mainTab, "Bring Mobs", function(val) end) | |
| CreateSlider(mainTab, "Distância do Bring Mobs", 10, 300, function(v) end) | |
| CreateToggle(mainTab, "Fast Attack", function(val) end) | |
| CreateToggle(mainTab, "Auto Haki", function(val) end) | |
| -- [BLOCO 8: POPULANDO ABA 1 (MAIN / AUTO FARM) - PARTE 3] | |
| CreateToggle(mainTab, "Auto Ken Haki", function(val) end) | |
| CreateSlider(mainTab, "Distância de Ataque / Reach", 5, 60, function(v) end) | |
| CreateToggle(mainTab, "Safe Mode Below HP", function(val) end) | |
| CreateSlider(mainTab, "Porcentagem de Vida Crítica", 10, 90, function(v) end) | |
| CreateToggle(mainTab, "Auto Equip Weapon", function(val) end) | |
| CreateDropdown(mainTab, "Tipo de Arma", {"Melee", "Sword", "Gun", "Blox Fruit"}, function(v) end) | |
| -- [BLOCO 9: POPULANDO ABA 1 (MAIN / AUTO FARM) - PARTE 4] | |
| CreateToggle(mainTab, "Stop on Player Nearby", function(val) end) | |
| CreateSlider(mainTab, "Raio de Detecção", 50, 1000, function(v) end) | |
| CreateToggle(mainTab, "Hide Damage Numbers", function(val) end) | |
| CreateTextbox(mainTab, "Mensagem custom de início", function(v) end) | |
| CreateToggle(mainTab, "Auto Clicker Melee", function(val) end) | |
| CreateSlider(mainTab, "Delay Auto Clicker (0.01 - 1s)", 1, 100, function(v) end) -- Convertido para inteiro para visual | |
| CreateToggle(mainTab, "Anti Knockback", function(val) end) | |
| CreateDropdown(mainTab, "Método Movimento", {"Tween", "Teleport", "Walk"}, function(v) end) | |
| CreateSlider(mainTab, "Velocidade Tween", 100, 350, function(v) end) | |
| -- [BLOCO 10: POPULANDO ABA 2 (COMBAT / PLAYERS) - PARTE 1] | |
| local combatTab = tabContents[2] | |
| CreateToggle(combatTab, "Aimbot Ativado", function(val) end) | |
| CreateDropdown(combatTab, "Parte do Corpo Alvo", {"Cabeça", "Tronco", "Pés", "Preditivo"}, function(v) end) | |
| CreateSlider(combatTab, "FOV do Aimbot", 50, 400, function(v) end) | |
| CreateToggle(combatTab, "Killaura PvP", function(val) end) | |
| CreateSlider(combatTab, "Raio do Killaura PvP", 10, 100, function(v) end) | |
| CreateToggle(combatTab, "Silent Aim", function(val) end) | |
| CreateDropdown(combatTab, "Prioridade de Alvo", {"Menor Vida", "Mais Próximo", "Maior Recompensa", "Amigos Excluídos"}, function(v) end) | |
| -- ========================================================= | |
| -- PARTE 4: BOTÕES DE AÇÃO E PREENCHIMENTO DAS ABAS 2, 3, 4 e 5 | |
| -- ========================================================= | |
| -- [BLOCO 11: FUNÇÃO CONSTRUTORA DO BOTÃO SIMPLES] | |
| local function CreateButton(parentTab, text, callback) | |
| local ButtonFrame = Instance.new("Frame") | |
| ButtonFrame.Size = UDim2.new(1, -10, 0, 37) | |
| ButtonFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) | |
| ButtonFrame.Parent = parentTab | |
| Instance.new("UICorner", ButtonFrame).CornerRadius = UDim.new(0, 8) | |
| local gradient = Instance.new("UIGradient") | |
| gradient.Color = ColorSequence.new({ | |
| ColorSequenceKeypoint.new(0, Color3.fromRGB(130, 65, 15)), | |
| ColorSequenceKeypoint.new(1, Color3.fromRGB(90, 40, 5)) | |
| }) | |
| gradient.Parent = ButtonFrame | |
| local ActionBtn = Instance.new("TextButton") | |
| ActionBtn.Size = UDim2.new(1, 0, 1, 0) | |
| ActionBtn.BackgroundTransparency = 1 | |
| ActionBtn.Text = text | |
| ActionBtn.TextColor3 = Color3.fromRGB(255, 245, 220) | |
| ActionBtn.Font = Enum.Font.FredokaOne | |
| ActionBtn.TextSize = 13 | |
| ActionBtn.Parent = ButtonFrame | |
| -- Efeito de clique simples | |
| ActionBtn.MouseButton1Down:Connect(function() | |
| TweenService:Create(ActionBtn, TweenInfo.new(0.1), {TextSize = 11}):Play() | |
| end) | |
| ActionBtn.MouseButton1Up:Connect(function() | |
| TweenService:Create(ActionBtn, TweenInfo.new(0.1), {TextSize = 13}):Play() | |
| if callback then pcall(callback) end | |
| end) | |
| end | |
| -- [BLOCO 12: POPULANDO ABA 2 (COMBAT / PLAYERS) - PARTE 2] | |
| local combatTab = tabContents[2] -- Continuamos na Aba 2 | |
| CreateToggle(combatTab, "ESP Jogadores (Ver através das paredes)", function(val) end) | |
| CreateToggle(combatTab, "ESP Mostrar Nome e Distância", function(val) end) | |
| CreateToggle(combatTab, "ESP Mostrar Barra de Vida", function(val) end) | |
| CreateToggle(combatTab, "Auto Bounty (Caçar Recompensas)", function(val) end) | |
| CreateTextbox(combatTab, "Nome do Jogador para Caçar", function(v) end) | |
| -- [BLOCO 13: POPULANDO ABA 2 (COMBAT / PLAYERS) - PARTE 3] | |
| CreateToggle(combatTab, "Spectate Player (Assistir Jogador)", function(val) end) | |
| CreateToggle(combatTab, "Anti Stun (Imune a atordoamento)", function(val) end) | |
| CreateToggle(combatTab, "No Cooldown (Sem tempo de recarga visual)", function(val) end) | |
| CreateToggle(combatTab, "Auto Ativar V3 / V4", function(val) end) | |
| CreateSlider(combatTab, "Porcentagem para V3/V4", 10, 100, function(v) end) | |
| -- [BLOCO 14: POPULANDO ABA 3 (STATS / STATUS) - PARTE 1] | |
| local statsTab = tabContents[3] | |
| CreateToggle(statsTab, "Auto Upar Melee (Soco)", function(val) end) | |
| CreateToggle(statsTab, "Auto Upar Defense (Vida)", function(val) end) | |
| CreateToggle(statsTab, "Auto Upar Sword (Espada)", function(val) end) | |
| CreateToggle(statsTab, "Auto Upar Gun (Arma)", function(val) end) | |
| CreateToggle(statsTab, "Auto Upar Blox Fruit (Fruta)", function(val) end) | |
| -- [BLOCO 15: POPULANDO ABA 3 (STATS / STATUS) - PARTE 2] | |
| CreateSlider(statsTab, "Pontos para Adicionar por Vez", 1, 100, function(v) end) | |
| CreateButton(statsTab, "Resgatar Todos os Códigos (2x XP)", function() print("Códigos resgatados!") end) | |
| CreateButton(statsTab, "Resetar Status (Requer Refund)", function() end) | |
| -- [BLOCO 16: POPULANDO ABA 4 (FRUITS / FRUTAS) - PARTE 1] | |
| local fruitsTab = tabContents[4] | |
| CreateToggle(fruitsTab, "Auto Comprar Fruta Aleatória (Surpresa)", function(val) end) | |
| CreateToggle(fruitsTab, "Auto Guardar Frutas no Inventário", function(val) end) | |
| CreateDropdown(fruitsTab, "Snipe Fruta Específica (Comprar se spawnar)", {"Leopard", "Dragon", "Kitsune", "Dough", "Venom", "Spirit", "T-Rex", "Rumble", "Buddha", "Portal", "Magma", "Light"}, function(v) end) | |
| CreateToggle(fruitsTab, "Ativar Sniper de Fruta", function(val) end) | |
| -- [BLOCO 17: POPULANDO ABA 4 (FRUITS / FRUTAS) - PARTE 2] | |
| CreateToggle(fruitsTab, "ESP Frutas no Chão (Ver através das paredes)", function(val) end) | |
| CreateToggle(fruitsTab, "Auto Pegar Frutas (Teleport to Fruit)", function(val) end) | |
| CreateButton(fruitsTab, "Ir para a Fruta mais Próxima Agora", function() end) | |
| CreateToggle(fruitsTab, "Alerta Sonoro se Spawnar Fruta Mythical", function(val) end) | |
| -- [BLOCO 18: POPULANDO ABA 5 (TELEPORT / VIAGEM) - PARTE 1] | |
| local teleportTab = tabContents[5] | |
| CreateDropdown(teleportTab, "Teleporte de Ilhas - Sea 1", {"Ilha Inicial", "Selva", "Vila dos Piratas", "Deserto", "Vila Congelada", "Fortaleza da Marinha", "Ilhas do Céu", "Prisão", "Coliseu", "Vila de Magma", "Cidade Subaquática"}, function(v) end) | |
| CreateButton(teleportTab, "Teleportar para Ilha (Sea 1)", function() end) | |
| CreateDropdown(teleportTab, "Teleporte de Ilhas - Sea 2", {"Reino das Rosas", "Zona Verde", "Cemitério", "Monte Inverno", "Quente e Fria", "Navio Amaldiçoado", "Castelo de Gelo", "Ilha Esquecida"}, function(v) end) | |
| CreateButton(teleportTab, "Teleportar para Ilha (Sea 2)", function() end) | |
| -- [BLOCO 19: POPULANDO ABA 5 (TELEPORT / VIAGEM) - PARTE 2] | |
| CreateDropdown(teleportTab, "Teleporte de Ilhas - Sea 3", {"Porto", "Ilha da Hidra", "Grande Árvore", "Tartaruga Flutuante", "Castelo Assombrado", "Mar de Guloseimas", "Posto Tiki"}, function(v) end) | |
| CreateButton(teleportTab, "Teleportar para Ilha (Sea 3)", function() end) | |
| CreateDropdown(teleportTab, "Teleporte de NPCs Importantes", {"Cyborg NPC", "Ghoul NPC", "Rip_Indra", "Dough King", "Kitsune Shrine", "Blackbeard"}, function(v) end) | |
| CreateButton(teleportTab, "Teleportar para NPC", function() end) | |
| -- [BLOCO 20: POPULANDO ABA 5 (TELEPORT / VIAGEM) - PARTE 3] | |
| CreateDropdown(teleportTab, "Viagem de Mares (Seas)", {"Ir para Sea 1", "Ir para Sea 2", "Ir para Sea 3"}, function(v) end) | |
| CreateButton(teleportTab, "Viajar de Mar", function() end) | |
| CreateToggle(teleportTab, "Bypass Anti-Cheat Teleport (Seguro)", function(val) end) | |
| CreateSlider(teleportTab, "Altura do Teleporte (Y Offset)", 50, 500, function(v) end) | |
| -- ========================================================= | |
| -- PARTE 5: ABAS VISUAL, MISC E INÍCIO DO SISTEMA (UNDER THE HOOD) | |
| -- ========================================================= | |
| -- [BLOCO 21: POPULANDO ABA 6 (VISUALS / ESP) - PARTE 1] | |
| local visualsTab = tabContents[6] | |
| CreateToggle(visualsTab, "Fullbright (Visão Noturna Perfeita)", function(val) end) | |
| CreateToggle(visualsTab, "Remover Neblina (No Fog)", function(val) end) | |
| CreateSlider(visualsTab, "Mudar Horário do Dia", 0, 24, function(v) end) | |
| CreateToggle(visualsTab, "Travar Horário (Sempre dia/noite)", function(val) end) | |
| -- [BLOCO 22: POPULANDO ABA 6 (VISUALS / ESP) - PARTE 2] | |
| CreateToggle(visualsTab, "Expandir Hitbox dos Inimigos", function(val) end) | |
| CreateSlider(visualsTab, "Tamanho da Hitbox", 5, 50, function(v) end) | |
| CreateToggle(visualsTab, "Modo Batata (Remove Texturas para +FPS)", function(val) end) | |
| CreateToggle(visualsTab, "Remover Efeitos de Dano (Anti-Lag)", function(val) end) | |
| -- [BLOCO 23: POPULANDO ABA 6 (VISUALS / ESP) - PARTE 3] | |
| CreateToggle(visualsTab, "Andar na Água (Water Walk)", function(val) end) | |
| CreateToggle(visualsTab, "Pulo Infinito (Infinite Jump)", function(val) end) | |
| CreateToggle(visualsTab, "Dash Infinito (Sem Cooldown)", function(val) end) | |
| CreateToggle(visualsTab, "Esconder Nome (Ocultar Nickname)", function(val) end) | |
| -- [BLOCO 24: POPULANDO ABA 7 (MISC / EXTRAS) - PARTE 1] | |
| local miscTab = tabContents[7] | |
| CreateButton(miscTab, "Reentrar no Servidor (Rejoin)", function() end) | |
| CreateButton(miscTab, "Pular Servidor (Server Hop)", function() end) | |
| CreateButton(miscTab, "Entrar em Servidor Vazio (Low Players)", function() end) | |
| CreateToggle(miscTab, "Auto Reconnect se a Internet Cair", function(val) end) | |
| -- [BLOCO 25: POPULANDO ABA 7 (MISC / EXTRAS) - PARTE 2] | |
| CreateToggle(miscTab, "Ativar Speed Hack (WalkSpeed)", function(val) end) | |
| CreateSlider(miscTab, "Velocidade do Personagem", 16, 500, function(v) end) | |
| CreateToggle(miscTab, "Ativar Super Pulo (JumpPower)", function(val) end) | |
| CreateSlider(miscTab, "Força do Pulo", 50, 500, function(v) end) | |
| -- [BLOCO 26: POPULANDO ABA 7 (MISC / EXTRAS) - PARTE 3] | |
| CreateTextbox(miscTab, "Mensagem de Spam no Chat", function(v) end) | |
| CreateToggle(miscTab, "Auto Spammer de Chat", function(val) end) | |
| CreateToggle(miscTab, "Personagem Invisível", function(val) end) | |
| CreateToggle(miscTab, "Remover Animações (T-Pose)", function(val) end) | |
| -- [BLOCO 27: POPULANDO ABA 7 (MISC / EXTRAS) - PARTE 4] | |
| CreateTextbox(miscTab, "URL do Webhook (Discord)", function(v) end) | |
| CreateToggle(miscTab, "Avisar no Discord: Level Up", function(val) end) | |
| CreateToggle(miscTab, "Avisar no Discord: Fruta Mítica", function(val) end) | |
| CreateButton(miscTab, "Destruir Menu (Fechar Script)", function() | |
| -- Função simples para remover a GUI do jogo | |
| if CoreGui:FindFirstChild("PacocaHub") then | |
| CoreGui.PacocaHub:Destroy() | |
| end | |
| end) | |
| -- [BLOCO 28: SISTEMA BASE - ANTI AFK (VIRTUAL USER)] | |
| -- Isso impede que o Roblox desconecte o jogador por inatividade após 20 minutos | |
| local VirtualUser = game:GetService("VirtualUser") | |
| local Players = game:GetService("Players") | |
| local LocalPlayer = Players.LocalPlayer | |
| LocalPlayer.Idled:Connect(function() | |
| VirtualUser:Button2Down(Vector2.new(0,0), workspace.CurrentCamera.CFrame) | |
| task.wait(1) | |
| VirtualUser:Button2Up(Vector2.new(0,0), workspace.CurrentCamera.CFrame) | |
| end) | |
| -- [BLOCO 29: SISTEMA BASE - VARIÁVEIS GLOBAIS] | |
| -- Aqui preparamos o terreno para os loops de auto farm funcionarem | |
| _G.AutoFarm = false | |
| _G.SelectIsland = "" | |
| _G.SelectMob = "" | |
| _G.AutoQuest = false | |
| _G.AttackDistance = 15 | |
| _G.TweenSpeed = 300 | |
| _G.TargetCFrame = nil | |
| _G.CurrentQuest = nil | |
| -- [BLOCO 30: SISTEMA BASE - MOTOR DE TWEEN (MOVIMENTAÇÃO)] | |
| -- Este é o motor que vai fazer o seu personagem voar/andar até os NPCs sem tomar kick do Anti-Cheat | |
| local function TweenTo(targetCFrame) | |
| if not LocalPlayer.Character or not LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then return end | |
| local HRP = LocalPlayer.Character.HumanoidRootPart | |
| local Distance = (HRP.Position - targetCFrame.Position).Magnitude | |
| local Time = Distance / _G.TweenSpeed | |
| -- Ajuste fino para não bugar no Anti-Cheat | |
| if Distance < 50 then | |
| HRP.CFrame = targetCFrame | |
| else | |
| local tweenInfo = TweenInfo.new(Time, Enum.EasingStyle.Linear) | |
| local tween = TweenService:Create(HRP, tweenInfo, {CFrame = targetCFrame}) | |
| -- Garante que o jogador não caia durante o voo | |
| if not HRP:FindFirstChild("BodyVelocityFloat") then | |
| local BV = Instance.new("BodyVelocity") | |
| BV.Name = "BodyVelocityFloat" | |
| BV.Velocity = Vector3.new(0, 0, 0) | |
| BV.MaxForce = Vector3.new(9e9, 9e9, 9e9) | |
| BV.Parent = HRP | |
| end | |
| tween:Play() | |
| return tween | |
| end | |
| end | |
| -- ========================================================= | |
| -- PARTE 6: INTELIGÊNCIA ARTIFICIAL E SISTEMAS DE COMBATE | |
| -- ========================================================= | |
| local ReplicatedStorage = game:GetService("ReplicatedStorage") | |
| local RunService = game:GetService("RunService") | |
| -- [BLOCO 31: SISTEMA BASE - AUTO EQUIPAR ARMA] | |
| _G.WeaponType = "Melee" -- Padrão | |
| local function EquipWeapon() | |
| pcall(function() | |
| for _, tool in pairs(LocalPlayer.Backpack:GetChildren()) do | |
| if tool:IsA("Tool") and tool.ToolTip == _G.WeaponType then | |
| LocalPlayer.Character.Humanoid:EquipTool(tool) | |
| end | |
| end | |
| end) | |
| end | |
| -- [BLOCO 32: SISTEMA BASE - AUTO CLICKER / FAST ATTACK] | |
| _G.AutoClickDelay = 0.1 | |
| local function AutoClick() | |
| pcall(function() | |
| -- Usamos o VirtualUser para simular o clique esquerdo do mouse perfeitamente | |
| VirtualUser:CaptureController() | |
| VirtualUser:ClickButton1(Vector2.new(850, 500)) | |
| end) | |
| end | |
| -- [BLOCO 33: SISTEMA BASE - AUTO HAKI (ARMAMENTO)] | |
| local function CheckHaki() | |
| pcall(function() | |
| if not LocalPlayer.Character:FindFirstChild("HasBuso") then | |
| -- Tenta ativar o Haki chamando o evento remoto padrão de jogos do tipo | |
| local args = { [1] = "Buso" } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| end | |
| end) | |
| end | |
| -- [BLOCO 34: SISTEMA BASE - VERIFICAR E PEGAR MISSÃO (QUEST)] | |
| _G.QuestName = "" | |
| _G.QuestLevel = 1 | |
| local function CheckQuest() | |
| pcall(function() | |
| -- Se o jogador não tem a interface de quest ativa, ele busca a missão | |
| local playerGui = LocalPlayer:FindFirstChild("PlayerGui") | |
| if playerGui and playerGui.Main.Quest.Visible == false then | |
| local args = { | |
| [1] = "StartQuest", | |
| [2] = _G.QuestName, | |
| [3] = _G.QuestLevel | |
| } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| end | |
| end) | |
| end | |
| -- [BLOCO 35: SISTEMA BASE - ENCONTRAR O MONSTRO MAIS PRÓXIMO] | |
| local function GetClosestMob() | |
| local closestMob = nil | |
| local shortestDistance = math.huge | |
| pcall(function() | |
| for _, v in pairs(workspace.Enemies:GetChildren()) do | |
| if v:FindFirstChild("Humanoid") and v.Humanoid.Health > 0 and v:FindFirstChild("HumanoidRootPart") then | |
| if v.Name == _G.SelectMob then -- Verifica se é o mob que queremos farmar | |
| local distance = (LocalPlayer.Character.HumanoidRootPart.Position - v.HumanoidRootPart.Position).Magnitude | |
| if distance < shortestDistance then | |
| closestMob = v | |
| shortestDistance = distance | |
| end | |
| end | |
| end | |
| end | |
| end) | |
| return closestMob | |
| end | |
| -- [BLOCO 36: SISTEMA BASE - BRING MOBS (PUXAR INIMIGOS)] | |
| _G.BringMobs = false | |
| _G.BringDistance = 150 | |
| local function BringMobsToTarget(targetPart) | |
| pcall(function() | |
| if _G.BringMobs and targetPart then | |
| for _, v in pairs(workspace.Enemies:GetChildren()) do | |
| if v.Name == _G.SelectMob and v:FindFirstChild("Humanoid") and v.Humanoid.Health > 0 and v:FindFirstChild("HumanoidRootPart") then | |
| local dist = (targetPart.Position - v.HumanoidRootPart.Position).Magnitude | |
| if dist <= _G.BringDistance then | |
| -- Puxa o monstro para a frente do jogador | |
| v.HumanoidRootPart.CFrame = targetPart.CFrame * CFrame.new(0, 0, -5) | |
| -- Stunna o monstro para ele não bater de volta | |
| v.HumanoidRootPart.CanCollide = false | |
| v.Humanoid.WalkSpeed = 0 | |
| v.Humanoid.JumpPower = 0 | |
| end | |
| end | |
| end | |
| end | |
| end) | |
| end | |
| -- [BLOCO 37: SISTEMA BASE - MODO SEGURO (SAFE MODE)] | |
| _G.SafeMode = false | |
| _G.SafeHealth = 30 -- Porcentagem de vida | |
| local function CheckSafeMode() | |
| local isSafe = false | |
| pcall(function() | |
| local health = LocalPlayer.Character.Humanoid.Health | |
| local maxHealth = LocalPlayer.Character.Humanoid.MaxHealth | |
| local healthPercentage = (health / maxHealth) * 100 | |
| if _G.SafeMode and healthPercentage <= _G.SafeHealth then | |
| -- Foge para o céu para se curar | |
| LocalPlayer.Character.HumanoidRootPart.CFrame = LocalPlayer.Character.HumanoidRootPart.CFrame * CFrame.new(0, 500, 0) | |
| isSafe = true | |
| end | |
| end) | |
| return isSafe | |
| end | |
| -- [BLOCO 38: SISTEMA BASE - LOOP PRINCIPAL DO AUTO FARM] | |
| task.spawn(function() | |
| while task.wait() do | |
| if _G.AutoFarm then | |
| local inDanger = CheckSafeMode() | |
| if not inDanger then | |
| if _G.AutoQuest then | |
| CheckQuest() | |
| end | |
| local TargetMob = GetClosestMob() | |
| if TargetMob then | |
| -- Fica em cima do monstro usando a distância definida | |
| local attackPos = TargetMob.HumanoidRootPart.CFrame * CFrame.new(0, _G.AttackDistance, 0) | |
| TweenTo(attackPos) | |
| EquipWeapon() | |
| CheckHaki() | |
| AutoClick() | |
| BringMobsToTarget(LocalPlayer.Character.HumanoidRootPart) | |
| end | |
| end | |
| else | |
| -- Se desligar o Auto Farm, destrói a flutuação do Tween (BodyVelocityFloat) | |
| pcall(function() | |
| if LocalPlayer.Character.HumanoidRootPart:FindFirstChild("BodyVelocityFloat") then | |
| LocalPlayer.Character.HumanoidRootPart.BodyVelocityFloat:Destroy() | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 39: CONECTANDO A UI - LIGAR O AUTO FARM] | |
| -- Aqui nós reescrevemos o botão criado no BLOCO 6 para ativar as funções acima | |
| -- Nota: Isso apenas atualiza a variável global, a função CreateToggle já foi desenhada antes! | |
| -- Mas para facilitar a lógica de conexão no código limpo, vinculamos a variável aqui: | |
| local function UpdateAutoFarmState(state) | |
| _G.AutoFarm = state | |
| end | |
| -- Quando o jogador clica na UI "Auto Farm Level", ele chamará UpdateAutoFarmState(true/false) | |
| -- [BLOCO 40: SISTEMA BASE - AIMBOT LÓGICA DE ALVO (PREPARAÇÃO)] | |
| _G.Aimbot = false | |
| _G.AimbotTargetPart = "Head" | |
| _G.AimbotFOV = 150 | |
| local function GetClosestPlayerAimbot() | |
| local closestPlayer = nil | |
| local shortestDistance = _G.AimbotFOV | |
| local mouse = LocalPlayer:GetMouse() | |
| local center = Vector2.new(mouse.X, mouse.Y) | |
| pcall(function() | |
| for _, player in pairs(Players:GetPlayers()) do | |
| if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild(_G.AimbotTargetPart) then | |
| local pos, onScreen = workspace.CurrentCamera:WorldToViewportPoint(player.Character[_G.AimbotTargetPart].Position) | |
| if onScreen then | |
| local magnitude = (Vector2.new(pos.X, pos.Y) - center).Magnitude | |
| if magnitude < shortestDistance then | |
| closestPlayer = player.Character | |
| shortestDistance = magnitude | |
| end | |
| end | |
| end | |
| end | |
| end) | |
| return closestPlayer | |
| end | |
| -- ========================================================= | |
| -- PARTE 7: AIMBOT, ESP, STATUS E MOVIMENTAÇÃO (MISC) | |
| -- ========================================================= | |
| local Lighting = game:GetService("Lighting") | |
| local UserInputService = game:GetService("UserInputService") | |
| local ReplicatedStorage = game:GetService("ReplicatedStorage") | |
| local RunService = game:GetService("RunService") | |
| -- [BLOCO 41: SISTEMA BASE - AIMBOT (TRAVAMENTO DE CÂMERA)] | |
| -- Usa a função criada no bloco 40 para travar a câmera no jogador mais próximo | |
| RunService.RenderStepped:Connect(function() | |
| pcall(function() | |
| if _G.Aimbot then | |
| local target = GetClosestPlayerAimbot() | |
| if target and target:FindFirstChild(_G.AimbotTargetPart) then | |
| local camera = workspace.CurrentCamera | |
| local targetPos = target[_G.AimbotTargetPart].Position | |
| -- Suavização de câmera no Aimbot | |
| camera.CFrame = CFrame.new(camera.CFrame.Position, targetPos) | |
| end | |
| end | |
| end) | |
| end) | |
| -- [BLOCO 42: SISTEMA BASE - ESP PLAYERS (VER JOGADORES)] | |
| _G.ESPPlayers = false | |
| local function UpdateESP() | |
| for _, player in pairs(game:GetService("Players"):GetPlayers()) do | |
| if player ~= LocalPlayer and player.Character then | |
| local espName = "PaçocaESP_" .. player.Name | |
| if _G.ESPPlayers then | |
| if not player.Character:FindFirstChild(espName) then | |
| -- Usa Highlight para criar o contorno colorido através das paredes | |
| local highlight = Instance.new("Highlight") | |
| highlight.Name = espName | |
| highlight.FillColor = Color3.fromRGB(255, 0, 0) | |
| highlight.OutlineColor = Color3.fromRGB(255, 255, 255) | |
| highlight.FillTransparency = 0.5 | |
| highlight.OutlineTransparency = 0 | |
| highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop | |
| highlight.Parent = player.Character | |
| end | |
| else | |
| if player.Character:FindFirstChild(espName) then | |
| player.Character[espName]:Destroy() | |
| end | |
| end | |
| end | |
| end | |
| end | |
| RunService.Heartbeat:Connect(UpdateESP) | |
| -- [BLOCO 43: SISTEMA BASE - AUTO STATS (UPAR STATUS)] | |
| _G.AutoStats = false | |
| _G.StatPointAmount = 1 | |
| _G.StatTarget = "Melee" -- Pode ser "Melee", "Defense", "Sword", "Gun", "Demon Fruit" | |
| task.spawn(function() | |
| while task.wait(0.5) do | |
| if _G.AutoStats then | |
| pcall(function() | |
| -- Envia requisição para o servidor gastar os pontos acumulados | |
| local args = { | |
| [1] = "AddPoint", | |
| [2] = _G.StatTarget, | |
| [3] = _G.StatPointAmount | |
| } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 44: SISTEMA BASE - AUTO GACHA (COMPRAR FRUTA)] | |
| _G.AutoBuyFruit = false | |
| task.spawn(function() | |
| while task.wait(5) do | |
| if _G.AutoBuyFruit then | |
| pcall(function() | |
| -- Fala com o NPC Cousin (Blox Fruit Dealer Cousin) | |
| local args = { [1] = "Cousin", [2] = "Buy" } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 45: SISTEMA BASE - AUTO STORE FRUIT (GUARDAR FRUTA)] | |
| _G.AutoStoreFruit = false | |
| task.spawn(function() | |
| while task.wait(2) do | |
| if _G.AutoStoreFruit then | |
| pcall(function() | |
| for _, tool in pairs(LocalPlayer.Backpack:GetChildren()) do | |
| if string.match(tool.Name, "Fruit") then | |
| -- Envia requisição para armazenar a fruta no baú | |
| local args = { [1] = "StoreFruit", [2] = tool.Name, [3] = LocalPlayer.Character:FindFirstChild("FruitBag") } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| end | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 46: SISTEMA BASE - FULLBRIGHT & NO FOG (VISUAIS)] | |
| _G.Fullbright = false | |
| _G.NoFog = false | |
| RunService.LightingChanged:Connect(function() | |
| if _G.Fullbright then | |
| Lighting.Brightness = 2 | |
| Lighting.ClockTime = 14 -- Trava no sol do meio-dia | |
| Lighting.GlobalShadows = false | |
| Lighting.OutdoorAmbient = Color3.fromRGB(255, 255, 255) | |
| end | |
| if _G.NoFog then | |
| Lighting.FogEnd = 9e9 -- Joga o fim da neblina para o infinito | |
| end | |
| end) | |
| -- [BLOCO 47: SISTEMA BASE - WALK SPEED & JUMP POWER] | |
| _G.SpeedHack = false | |
| _G.WalkSpeed = 16 | |
| _G.JumpHack = false | |
| _G.JumpPower = 50 | |
| task.spawn(function() | |
| while task.wait() do | |
| pcall(function() | |
| if LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("Humanoid") then | |
| if _G.SpeedHack then | |
| LocalPlayer.Character.Humanoid.WalkSpeed = _G.WalkSpeed | |
| end | |
| if _G.JumpHack then | |
| LocalPlayer.Character.Humanoid.UseJumpPower = true | |
| LocalPlayer.Character.Humanoid.JumpPower = _G.JumpPower | |
| end | |
| end | |
| end) | |
| end | |
| end) | |
| -- [BLOCO 48: SISTEMA BASE - INFINITE JUMP] | |
| _G.InfiniteJump = false | |
| UserInputService.JumpRequest:Connect(function() | |
| if _G.InfiniteJump then | |
| pcall(function() | |
| LocalPlayer.Character.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping) | |
| end) | |
| end | |
| end) | |
| -- [BLOCO 49: SISTEMA BASE - WALK ON WATER (ANDAR NA ÁGUA)] | |
| _G.WaterWalk = false | |
| local WaterPlatform = Instance.new("Part") | |
| WaterPlatform.Name = "PaçocaWaterPlatform" | |
| WaterPlatform.Size = Vector3.new(10, 1, 10) | |
| WaterPlatform.Transparency = 1 -- Transparente para não ser visto | |
| WaterPlatform.Anchored = true | |
| WaterPlatform.CanCollide = true | |
| RunService.RenderStepped:Connect(function() | |
| if _G.WaterWalk and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then | |
| local HRP = LocalPlayer.Character.HumanoidRootPart | |
| -- Mantém a plataforma invisível exatamente abaixo do jogador, travada na altura da água (aprox Y=15 no Blox Fruits) | |
| WaterPlatform.Position = Vector3.new(HRP.Position.X, 14.5, HRP.Position.Z) | |
| if not WaterPlatform.Parent then | |
| WaterPlatform.Parent = workspace | |
| end | |
| else | |
| if WaterPlatform.Parent then | |
| WaterPlatform.Parent = nil | |
| end | |
| end | |
| end) | |
| -- [BLOCO 50: SISTEMA BASE - ESP CHESTS (BAÚS)] | |
| _G.ESPChests = false | |
| task.spawn(function() | |
| while task.wait(1) do | |
| pcall(function() | |
| for _, item in pairs(workspace:GetDescendants()) do | |
| if item.Name:match("Chest") and item:IsA("Part") then | |
| local espName = "PaçocaChestESP_" .. item.Name | |
| if _G.ESPChests then | |
| if not item:FindFirstChild(espName) then | |
| local highlight = Instance.new("Highlight") | |
| highlight.Name = espName | |
| highlight.FillColor = Color3.fromRGB(255, 215, 0) -- Dourado | |
| highlight.OutlineColor = Color3.fromRGB(255, 255, 255) | |
| highlight.FillTransparency = 0.5 | |
| highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop | |
| highlight.Parent = item | |
| end | |
| else | |
| if item:FindFirstChild(espName) then | |
| item[espName]:Destroy() | |
| end | |
| end | |
| end | |
| end | |
| end) | |
| end | |
| end) | |
| -- ========================================================= | |
| -- PARTE 8: HITBOXES, ANTI-LAG, NOCLIP E SISTEMAS AVANÇADOS | |
| -- ========================================================= | |
| local TeleportService = game:GetService("TeleportService") | |
| local HttpService = game:GetService("HttpService") | |
| -- [BLOCO 51: SISTEMA BASE - DICIONÁRIO DE TELEPORTES] | |
| -- (Exemplo reduzido de CFrame para algumas ilhas, você pode expandir depois) | |
| _G.TeleportLocations = { | |
| ["Ilha Inicial"] = CFrame.new(973, 16, 1413), | |
| ["Selva"] = CFrame.new(-1317, 18, 421), | |
| ["Vila dos Piratas"] = CFrame.new(-1147, 14, 3889), | |
| ["Deserto"] = CFrame.new(910, 16, 4310), | |
| ["Vila Congelada"] = CFrame.new(1251, 28, -1296), | |
| ["Fortaleza da Marinha"] = CFrame.new(-4859, 20, 4323) | |
| } | |
| _G.SelectedIsland = "" | |
| -- [BLOCO 52: SISTEMA BASE - EXECUTAR TELEPORTE] | |
| local function TeleportToIsland() | |
| if _G.SelectedIsland ~= "" and _G.TeleportLocations[_G.SelectedIsland] then | |
| -- Usamos a função TweenTo (criada no Bloco 30) para ir voando com segurança | |
| TweenTo(_G.TeleportLocations[_G.SelectedIsland]) | |
| end | |
| end | |
| -- [BLOCO 53: SISTEMA BASE - EXPANDIR HITBOX (MAGNET)] | |
| _G.ExpandHitbox = false | |
| _G.HitboxSize = 15 | |
| task.spawn(function() | |
| while task.wait(1) do | |
| if _G.ExpandHitbox then | |
| pcall(function() | |
| for _, player in pairs(Players:GetPlayers()) do | |
| if player ~= LocalPlayer and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then | |
| local HRP = player.Character.HumanoidRootPart | |
| HRP.Size = Vector3.new(_G.HitboxSize, _G.HitboxSize, _G.HitboxSize) | |
| HRP.Transparency = 0.8 | |
| HRP.BrickColor = BrickColor.new("Bright blue") | |
| HRP.Material = Enum.Material.Neon | |
| HRP.CanCollide = false | |
| end | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 54: SISTEMA BASE - NOCLIP (ATRAVESSAR PAREDES)] | |
| _G.Noclip = false | |
| RunService.Stepped:Connect(function() | |
| if _G.Noclip then | |
| pcall(function() | |
| if LocalPlayer.Character then | |
| for _, part in pairs(LocalPlayer.Character:GetChildren()) do | |
| if part:IsA("BasePart") then | |
| part.CanCollide = false | |
| end | |
| end | |
| end | |
| end) | |
| end | |
| end) | |
| -- [BLOCO 55: SISTEMA BASE - MODO BATATA (MÁXIMO FPS)] | |
| _G.PotatoMode = false | |
| local function EnablePotatoMode() | |
| if _G.PotatoMode then | |
| pcall(function() | |
| for _, v in pairs(workspace:GetDescendants()) do | |
| if v:IsA("BasePart") and not v.Parent:FindFirstChild("Humanoid") then | |
| v.Material = Enum.Material.SmoothPlastic | |
| v.Reflectance = 0 | |
| elseif v:IsA("Decal") or v:IsA("Texture") then | |
| v:Destroy() | |
| end | |
| end | |
| Lighting.GlobalShadows = false | |
| Lighting.FogEnd = 9e9 | |
| sethiddenproperty(Lighting, "Technology", 2) -- Reduz a engine de renderização | |
| end) | |
| end | |
| end | |
| -- [BLOCO 56: SISTEMA BASE - REMOVER NÚMEROS DE DANO] | |
| _G.HideDamage = false | |
| task.spawn(function() | |
| while task.wait(0.5) do | |
| if _G.HideDamage then | |
| pcall(function() | |
| for _, v in pairs(workspace:GetDescendants()) do | |
| if v.Name == "DamageCounter" or (v:IsA("BillboardGui") and v.Name == "Damage") then | |
| v:Destroy() | |
| end | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 57: SISTEMA BASE - AUTO PEGAR FRUTAS NO CHÃO] | |
| _G.AutoCollectFruits = false | |
| task.spawn(function() | |
| while task.wait(1) do | |
| if _G.AutoCollectFruits then | |
| pcall(function() | |
| for _, item in pairs(workspace:GetChildren()) do | |
| -- No Blox Fruits, frutas spawnadas no chão são ferramentas (Tools) com "Fruit" no nome | |
| if item:IsA("Tool") and string.find(item.Name, "Fruit") and item:FindFirstChild("Handle") then | |
| TweenTo(item.Handle.CFrame) | |
| -- Aguarda chegar no local antes de procurar a próxima | |
| task.wait((LocalPlayer.Character.HumanoidRootPart.Position - item.Handle.Position).Magnitude / _G.TweenSpeed) | |
| end | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 58: SISTEMA BASE - SNIPER DE FRUTAS (AUTO BUY)] | |
| _G.SniperFruit = false | |
| _G.TargetSnipeFruit = "Kitsune" | |
| task.spawn(function() | |
| while task.wait(5) do | |
| if _G.SniperFruit then | |
| pcall(function() | |
| -- Envia um Remote simulando que você está falando com o vendedor de frutas | |
| local args = { | |
| [1] = "PurchaseBloxFruit", | |
| [2] = _G.TargetSnipeFruit .. "-Fruit" | |
| } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 59: SISTEMA BASE - SERVER HOP (PULAR SERVIDOR VAZIO)] | |
| local function ServerHop() | |
| local url = "https://games.roblox.com/v1/games/" .. game.PlaceId .. "/servers/Public?sortOrder=Asc&limit=100" | |
| pcall(function() | |
| local request = (syn and syn.request) or (http and http.request) or http_request or request | |
| if request then | |
| local response = request({Url = url, Method = "GET"}) | |
| local data = HttpService:JSONDecode(response.Body) | |
| if data and data.data then | |
| for _, server in pairs(data.data) do | |
| -- Procura um servidor com menos jogadores do que o máximo | |
| if server.playing < server.maxPlayers and server.id ~= game.JobId then | |
| TeleportService:TeleportToPlaceInstance(game.PlaceId, server.id, LocalPlayer) | |
| break | |
| end | |
| end | |
| end | |
| end | |
| end) | |
| end | |
| -- [BLOCO 60: SISTEMA BASE - WEBHOOK DISCORD] | |
| _G.DiscordWebhookURL = "" | |
| local function EnviarWebhookDiscord(mensagem) | |
| if _G.DiscordWebhookURL ~= "" then | |
| pcall(function() | |
| local payload = { | |
| ["content"] = "", | |
| ["embeds"] = {{ | |
| ["title"] = "Notificação - Paçoca Hub", | |
| ["description"] = mensagem, | |
| ["color"] = tonumber(0xFFA500) -- Laranja Paçoca | |
| }} | |
| } | |
| local request = (syn and syn.request) or (http and http.request) or http_request or request | |
| if request then | |
| request({ | |
| Url = _G.DiscordWebhookURL, | |
| Method = "POST", | |
| Headers = {["Content-Type"] = "application/json"}, | |
| Body = HttpService:JSONEncode(payload) | |
| }) | |
| end | |
| end) | |
| end | |
| end | |
| -- ========================================================= | |
| -- PARTE 9: ABAS DE RAIDS, SEA EVENTS E QUESTS + LÓGICA DE EVENTOS | |
| -- ========================================================= | |
| local ReplicatedStorage = game:GetService("ReplicatedStorage") | |
| -- [BLOCO 61: POPULANDO ABA 4 (RAIDS / DUNGEONS) - PARTE 1] | |
| local raidsTab = tabContents[4] | |
| CreateToggle(raidsTab, "Auto Start Raid (Inicia com Chip)", function(val) _G.AutoStartRaid = val end) | |
| CreateDropdown(raidsTab, "Selecionar Raid", {"Flame Raid", "Ice Raid", "Earthquake Raid", "Light Raid", "Dark Raid", "String Raid", "Rumble Raid", "Magma Raid", "Buddha Raid", "Dough Raid"}, function(v) _G.SelectedRaid = v end) | |
| CreateToggle(raidsTab, "Auto Next Island (Avançar Automático)", function(val) _G.AutoNextIslandRaid = val end) | |
| CreateToggle(raidsTab, "Kill Aura na Raid", function(val) _G.KillAuraRaid = val end) | |
| -- [BLOCO 62: POPULANDO ABA 4 (RAIDS / DUNGEONS) - PARTE 2] | |
| CreateToggle(raidsTab, "Auto Buy Fragment Boost", function(val) _G.AutoFragBoost = val end) | |
| CreateToggle(raidsTab, "Auto Awakening Skills", function(val) _G.AutoAwaken = val end) | |
| CreateToggle(raidsTab, "Safe Spot na Raid (Ficar Flutuando)", function(val) _G.SafeSpotRaid = val end) | |
| CreateSlider(raidsTab, "Altura do Safe Spot", 50, 300, function(v) _G.RaidSafeHeight = v end) | |
| -- [BLOCO 63: POPULANDO ABA 5 (SEA EVENTS) - PARTE 1] | |
| local seaTab = tabContents[5] | |
| CreateToggle(seaTab, "Auto Sea Events (Procurar Automático)", function(val) _G.AutoSeaEvents = val end) | |
| CreateDropdown(seaTab, "Alvo Marítimo", {"Terror Shark", "Sea Beast", "Piranha", "Ship Raid", "Ghost Ship", "Leviatã"}, function(v) _G.SeaTarget = v end) | |
| CreateToggle(seaTab, "Auto Avoid Sea Hazards (Desviar)", function(val) _G.AvoidHazards = val end) | |
| CreateToggle(seaTab, "Auto Shoot Sea Monsters", function(val) _G.AutoShootSea = val end) | |
| -- [BLOCO 64: POPULANDO ABA 5 (SEA EVENTS) - PARTE 2] | |
| CreateToggle(seaTab, "Auto Collect Sea Chests (Baús)", function(val) _G.CollectSeaChests = val end) | |
| CreateToggle(seaTab, "Auto Spawn Barco (Monster Hunter)", function(val) _G.AutoSpawnBoat = val end) | |
| CreateToggle(seaTab, "Auto Repair Ship (Consertar Casco)", function(val) _G.AutoRepairShip = val end) | |
| CreateDropdown(seaTab, "Zonas do Tiki Outpost", {"Zona 1", "Zona 2", "Zona 3", "Zona 4", "Zona 5", "Zona do Leviatã"}, function(v) _G.TikiZone = v end) | |
| -- [BLOCO 65: POPULANDO ABA 6 (QUESTS / ITEMS) - PARTE 1] | |
| local questsTab = tabContents[6] | |
| CreateToggle(questsTab, "Auto Get Saber (Puzzle Selva)", function(val) _G.AutoSaber = val end) | |
| CreateToggle(questsTab, "Auto Get Rengoku (Chave de Gelo)", function(val) _G.AutoRengoku = val end) | |
| CreateToggle(questsTab, "Auto Get Yama (30 Elites)", function(val) _G.AutoYama = val end) | |
| CreateToggle(questsTab, "Auto Get Tushita (Puzzle Tochas)", function(val) _G.AutoTushita = val end) | |
| -- [BLOCO 66: POPULANDO ABA 6 (QUESTS / ITEMS) - PARTE 2] | |
| CreateToggle(questsTab, "Auto Craft Cursed Dual Katana", function(val) _G.AutoCDK = val end) | |
| CreateToggle(questsTab, "Auto Get Soul Guitar (Puzzle Lua Cheia)", function(val) _G.AutoSoulGuitar = val end) | |
| CreateToggle(questsTab, "Alerta de Lua Cheia no Servidor", function(val) _G.FullMoonAlert = val end) | |
| CreateToggle(questsTab, "Auto Complete Bartilo Quest", function(val) _G.AutoBartilo = val end) | |
| -- [BLOCO 67: SISTEMA BASE - LÓGICA DE RAIDS (AUTO NEXT ISLAND)] | |
| task.spawn(function() | |
| while task.wait(1) do | |
| if _G.AutoNextIslandRaid then | |
| pcall(function() | |
| -- Verifica se os monstros da ilha atual da Raid morreram | |
| local enemies = workspace:FindFirstChild("Enemies") | |
| if enemies and #enemies:GetChildren() == 0 then | |
| local HRP = LocalPlayer.Character:FindFirstChild("HumanoidRootPart") | |
| if HRP then | |
| -- Simula um salto para a próxima ilha sem cair na água | |
| HRP.CFrame = HRP.CFrame * CFrame.new(0, 50, -500) | |
| end | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 68: SISTEMA BASE - SEA BEAST AUTO SHOOT] | |
| task.spawn(function() | |
| while task.wait(0.5) do | |
| if _G.AutoShootSea then | |
| pcall(function() | |
| local seaBeasts = workspace:FindFirstChild("SeaBeasts") | |
| if seaBeasts then | |
| for _, sb in pairs(seaBeasts:GetChildren()) do | |
| if sb:FindFirstChild("HumanoidRootPart") and sb.Humanoid.Health > 0 then | |
| -- Dispara habilidades no monstro marinho mais próximo | |
| local args = { | |
| [1] = sb.HumanoidRootPart.Position, | |
| [2] = workspace.SeaBeasts | |
| } | |
| -- Disparo usando remotes genéricos do Blox Fruits | |
| ReplicatedStorage.Remotes.CommE_:FireServer("FireGun", unpack(args)) | |
| end | |
| end | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 69: SISTEMA BASE - ALERTA DE LUA CHEIA (FULL MOON)] | |
| task.spawn(function() | |
| while task.wait(10) do | |
| if _G.FullMoonAlert then | |
| pcall(function() | |
| local light = game:GetService("Lighting") | |
| -- Verifica a iluminação ou se o objeto da lua cheia foi renderizado no mapa | |
| if light.ClockTime >= 17.5 or light.ClockTime <= 6 then | |
| if light:GetMinutesAfterMidnight() == 0 or workspace:FindFirstChild("FullMoon") then | |
| -- Envia notificação nativa super imersiva na tela do jogador | |
| game:GetService("StarterGui"):SetCore("SendNotification", { | |
| Title = "PAÇOCA HUB - ALERTA", | |
| Text = "A LUA CHEIA COMEÇOU NO SERVIDOR! HORA DA SOUL GUITAR/V4!", | |
| Duration = 15 | |
| }) | |
| end | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 70: SISTEMA BASE - AUTO PEGAR BAÚS MARÍTIMOS (SEA CHESTS)] | |
| task.spawn(function() | |
| while task.wait(1) do | |
| if _G.CollectSeaChests then | |
| pcall(function() | |
| for _, chest in pairs(workspace:GetChildren()) do | |
| -- Encontra baús de barcos ou eventos marinhos na água | |
| if chest.Name == "SeaChest" or chest.Name == "ShipwreckChest" then | |
| local HRP = LocalPlayer.Character.HumanoidRootPart | |
| local dist = (HRP.Position - chest.Position).Magnitude | |
| -- Se o baú estiver numa distância alcançável sem ser banido, voa até ele | |
| if dist < 1500 then | |
| TweenTo(chest.CFrame) | |
| end | |
| end | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- ========================================================= | |
| -- PARTE 10: AUTO SHOP, AUTO BOUNTY E AUTO RACE V4 | |
| -- ========================================================= | |
| local ReplicatedStorage = game:GetService("ReplicatedStorage") | |
| local Players = game:GetService("Players") | |
| -- [BLOCO 71: POPULANDO ABA 7 (MISC / SHOP) - ESTILOS DE LUTA] | |
| local miscTab = tabContents[7] | |
| CreateDropdown(miscTab, "Comprar Estilo de Luta", {"Black Leg", "Electro", "Fishman Karate", "Dragon Breath", "Superhuman", "Death Step", "Sharkman Karate", "Electric Claw", "Dragon Talon", "Godhuman"}, function(v) _G.BuyMelee = v end) | |
| CreateButton(miscTab, "Comprar Estilo de Luta (Auto Buy)", function() | |
| _G.DoBuyMelee = true | |
| end) | |
| -- [BLOCO 72: POPULANDO ABA 7 (MISC / SHOP) - ESPADAS LENDÁRIAS E HAKI] | |
| CreateToggle(miscTab, "Auto Comprar Espada Lendária (Saddi/Shisui/Wando)", function(val) _G.AutoLegendarySword = val end) | |
| CreateToggle(miscTab, "Auto Comprar Cores de Haki (Aura)", function(val) _G.AutoHakiColor = val end) | |
| CreateButton(miscTab, "Checar Status do Vendedor de Espadas", function() | |
| _G.CheckSwordDealer = true | |
| end) | |
| -- [BLOCO 73: POPULANDO ABA 2 (COMBAT / PLAYERS) - BOUNTY HUNTER] | |
| local combatTab = tabContents[2] | |
| CreateToggle(combatTab, "Auto Caçar Jogadores (Bounty Hunter)", function(val) _G.AutoBounty = val end) | |
| CreateSlider(combatTab, "Ignorar Jogadores Abaixo do Level", 1, 2550, function(v) _G.BountyMinLevel = v end) | |
| CreateToggle(combatTab, "Pular Servidor se não houver alvos", function(val) _G.HopBounty = val end) | |
| CreateToggle(combatTab, "Chat Troll (Spammar 'Ez' ao matar)", function(val) _G.ToxicBounty = val end) | |
| -- [BLOCO 74: POPULANDO ABA 2 (COMBAT / PLAYERS) - RAÇA V3 / V4] | |
| CreateToggle(combatTab, "Auto Usar Habilidade Raça V3", function(val) _G.AutoRaceV3 = val end) | |
| CreateToggle(combatTab, "Auto Ativar Raça V4 (Despertar)", function(val) _G.AutoRaceV4 = val end) | |
| CreateSlider(combatTab, "Ativar V4 em % da Barra", 10, 100, function(v) _G.V4BarPercent = v end) | |
| -- [BLOCO 75: SISTEMA BASE - AUTO COMPRAR ESTILO DE LUTA (MELEE)] | |
| task.spawn(function() | |
| while task.wait(0.5) do | |
| if _G.DoBuyMelee then | |
| pcall(function() | |
| -- Envia requisição para comprar o estilo de luta desejado | |
| local args = { | |
| [1] = "BuyItem", | |
| [2] = _G.BuyMelee | |
| } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| _G.DoBuyMelee = false -- Reseta o botão após tentar comprar | |
| -- Notifica o jogador | |
| game:GetService("StarterGui"):SetCore("SendNotification", { | |
| Title = "PAÇOCA HUB - LOJA", | |
| Text = "Tentativa de compra de " .. _G.BuyMelee .. " enviada ao servidor!", | |
| Duration = 5 | |
| }) | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 76: SISTEMA BASE - AUTO COMPRAR ESPADAS LENDÁRIAS (SWORD DEALER)] | |
| task.spawn(function() | |
| while task.wait(5) do | |
| if _G.AutoLegendarySword then | |
| pcall(function() | |
| -- Fala com o NPC Manager/Legendary Sword Dealer | |
| local args = { [1] = "LegendarySwordDealer", [2] = "1" } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| local args2 = { [1] = "LegendarySwordDealer", [2] = "2" } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args2)) | |
| local args3 = { [1] = "LegendarySwordDealer", [2] = "3" } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args3)) | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 77: SISTEMA BASE - AUTO COMPRAR COR DE HAKI (MASTER OF AURAS)] | |
| task.spawn(function() | |
| while task.wait(5) do | |
| if _G.AutoHakiColor then | |
| pcall(function() | |
| -- Tenta comprar a cor atual sendo vendida pelo Color Specialist | |
| local args = { [1] = "ColorsExpert", [2] = "Buy" } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 78: SISTEMA BASE - MOTOR DO BOUNTY HUNTER (CAÇADOR)] | |
| task.spawn(function() | |
| while task.wait(0.1) do | |
| if _G.AutoBounty then | |
| pcall(function() | |
| local targetPlayer = nil | |
| local maxDistance = math.huge | |
| -- Procura um jogador vivo, fora da zona segura (safezone) e com o level mínimo configurado | |
| for _, p in pairs(Players:GetPlayers()) do | |
| if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("Humanoid") and p.Character.Humanoid.Health > 0 then | |
| local pData = p:FindFirstChild("Data") | |
| if pData and pData:FindFirstChild("Level") and pData.Level.Value >= _G.BountyMinLevel then | |
| -- O Aimbot e Tween vão mirar nele se não estiver protegido | |
| local dist = (LocalPlayer.Character.HumanoidRootPart.Position - p.Character.HumanoidRootPart.Position).Magnitude | |
| if dist < maxDistance then | |
| targetPlayer = p | |
| maxDistance = dist | |
| end | |
| end | |
| end | |
| end | |
| if targetPlayer and targetPlayer.Character then | |
| -- Voa até o alvo e liga o auto-click / auto-skill | |
| TweenTo(targetPlayer.Character.HumanoidRootPart.CFrame * CFrame.new(0, 5, 5)) | |
| EquipWeapon() | |
| AutoClick() | |
| elseif _G.HopBounty then | |
| -- Se não encontrar ninguém válido e a opção estiver ligada, pula de servidor | |
| ServerHop() | |
| end | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 79: SISTEMA BASE - AUTO RACE V3 & V4 (DESPERTAR)] | |
| task.spawn(function() | |
| while task.wait(0.5) do | |
| pcall(function() | |
| -- Auto V3 | |
| if _G.AutoRaceV3 and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("RaceEnergy") then | |
| local args = { [1] = "ActivateRaceV3" } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| end | |
| -- Auto V4 | |
| if _G.AutoRaceV4 and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("AwakeningBar") then | |
| local barValue = LocalPlayer.Character.AwakeningBar.Value | |
| if barValue >= _G.V4BarPercent then | |
| local args = { [1] = "ActivateRaceV4" } | |
| ReplicatedStorage.Remotes.CommF_:InvokeServer(unpack(args)) | |
| end | |
| end | |
| end) | |
| end | |
| end) | |
| -- [BLOCO 80: SISTEMA BASE - INTEGRAÇÃO WEBHOOK (LEVEL & BOUNTY NOTIFIER)] | |
| local lastLevel = 0 | |
| local lastBounty = 0 | |
| task.spawn(function() | |
| while task.wait(10) do | |
| pcall(function() | |
| if _G.DiscordWebhookURL ~= "" then | |
| local currentLevel = LocalPlayer.Data.Level.Value | |
| local currentBounty = LocalPlayer.leaderstats["Bounty/Honor"].Value | |
| -- Se upar de level | |
| if lastLevel ~= 0 and currentLevel > lastLevel then | |
| EnviarWebhookDiscord("🎉 **Level Up!** O jogador " .. LocalPlayer.Name .. " acaba de atingir o nível **" .. currentLevel .. "**!") | |
| end | |
| -- Se ganhar bounty (matar jogador) | |
| if lastBounty ~= 0 and currentBounty > lastBounty then | |
| local ganhou = currentBounty - lastBounty | |
| EnviarWebhookDiscord("☠️ **Bounty Gained!** Você ganhou **+" .. ganhou .. "** de recompensa! Recompensa total: **" .. currentBounty .. "**.") | |
| end | |
| lastLevel = currentLevel | |
| lastBounty = currentBounty | |
| end | |
| end) | |
| end | |
| end) | |
| -- ========================================================= | |
| -- PARTE 11: ANTI-BAN, ANIMAÇÕES DA UI, TROLL E PROTEÇÕES | |
| -- ========================================================= | |
| local UserInputService = game:GetService("UserInputService") | |
| local CoreGui = game:GetService("CoreGui") | |
| -- [BLOCO 81: SISTEMA BASE - ANTI-CHEAT BYPASS (HOOK)] | |
| -- Protege o cliente contra kicks locais disparados por anti-cheats básicos | |
| local mt = getrawmetatable(game) | |
| if mt and setreadonly then | |
| local oldNamecall = mt.__namecall | |
| setreadonly(mt, false) | |
| mt.__namecall = newcclosure(function(self, ...) | |
| local method = getnamecallmethod() | |
| -- Bloqueia a tentativa do jogo de expulsar (Kick) o jogador localmente | |
| if method == "Kick" or method == "kick" then | |
| return nil | |
| end | |
| return oldNamecall(self, ...) | |
| end) | |
| setreadonly(mt, true) | |
| end | |
| -- [BLOCO 82: LÓGICA DA INTERFACE - ARRASTAR A JANELA (DRAGGABLE)] | |
| -- Permite que o jogador clique no topo da janela e a arraste pela tela | |
| local Dragging = false | |
| local DragInput, MousePos, FramePos | |
| TitleBar.InputBegan:Connect(function(input) | |
| if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then | |
| Dragging = true | |
| MousePos = input.Position | |
| FramePos = MainFrame.Position | |
| input.Changed:Connect(function() | |
| if input.UserInputState == Enum.UserInputState.End then | |
| Dragging = false | |
| end | |
| end) | |
| end | |
| end) | |
| TitleBar.InputChanged:Connect(function(input) | |
| if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then | |
| DragInput = input | |
| end | |
| end) | |
| UserInputService.InputChanged:Connect(function(input) | |
| if input == DragInput and Dragging then | |
| local Delta = input.Position - MousePos | |
| -- Suaviza o arrasto usando TweenService | |
| TweenService:Create(MainFrame, TweenInfo.new(0.1), { | |
| Position = UDim2.new(FramePos.X.Scale, FramePos.X.Offset + Delta.X, FramePos.Y.Scale, FramePos.Y.Offset + Delta.Y) | |
| }):Play() | |
| end | |
| end) | |
| -- [BLOCO 83: LÓGICA DA INTERFACE - BOTÃO DE MINIMIZAR (TOGGLE GUI)] | |
| -- Oculta ou mostra o painel principal quando o botão minimizar é clicado | |
| local IsMinimized = false | |
| MinimizeBtn.MouseButton1Click:Connect(function() | |
| IsMinimized = not IsMinimized | |
| if IsMinimized then | |
| TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 500, 0, 40)}):Play() | |
| TweenService:Create(ContentContainer, TweenInfo.new(0.2), {Visible = false}):Play() | |
| TweenService:Create(TabContainer, TweenInfo.new(0.2), {Visible = false}):Play() | |
| else | |
| TweenService:Create(MainFrame, TweenInfo.new(0.3, Enum.EasingStyle.Quint), {Size = UDim2.new(0, 500, 0, 350)}):Play() | |
| task.wait(0.2) | |
| ContentContainer.Visible = true | |
| TabContainer.Visible = true | |
| end | |
| end) | |
| -- [BLOCO 84: SISTEMA BASE - TECLA DE ATALHO (ESCONDER MENU)] | |
| -- Aperte "RightControl" (Ctrl Direito) no teclado para esconder a interface completamente | |
| UserInputService.InputBegan:Connect(function(input, gameProcessed) | |
| if not gameProcessed and input.KeyCode == Enum.KeyCode.RightControl then | |
| MainFrame.Visible = not MainFrame.Visible | |
| end | |
| end) | |
| -- [BLOCO 85: SISTEMA BASE - SPECTATE PLAYER (ASSISTIR)] | |
| _G.SpectatePlayer = false | |
| _G.SpectateTarget = "" | |
| task.spawn(function() | |
| while task.wait(0.5) do | |
| if _G.SpectatePlayer and _G.SpectateTarget ~= "" then | |
| pcall(function() | |
| local target = Players:FindFirstChild(_G.SpectateTarget) | |
| if target and target.Character and target.Character:FindFirstChild("Humanoid") then | |
| workspace.CurrentCamera.CameraSubject = target.Character.Humanoid | |
| end | |
| end) | |
| else | |
| -- Retorna a câmera para o próprio jogador | |
| pcall(function() | |
| workspace.CurrentCamera.CameraSubject = LocalPlayer.Character.Humanoid | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 86: SISTEMA BASE - AUTO RECONNECT (ANTI-QUEDA)] | |
| _G.AutoReconnect = true | |
| CoreGui.RobloxPromptGui.promptOverlay.ChildAdded:Connect(function(child) | |
| if _G.AutoReconnect and child.Name == "ErrorPrompt" then | |
| -- Se o jogo desconectar (erro 277, 268, etc), o script reconecta você no mesmo servidor | |
| TeleportService:TeleportToPlaceInstance(game.PlaceId, game.JobId, LocalPlayer) | |
| end | |
| end) | |
| -- [BLOCO 87: SISTEMA BASE - CHAT TROLL (SPAMMER E TOXIC BOUNTY)] | |
| _G.ChatSpammer = false | |
| _G.SpamMessage = "Paçoca Hub dominando o servidor!" | |
| local ReplicatedStorage = game:GetService("ReplicatedStorage") | |
| task.spawn(function() | |
| while task.wait(3) do | |
| if _G.ChatSpammer then | |
| pcall(function() | |
| ReplicatedStorage.DefaultChatSystemChatEvents.SayMessageRequest:FireServer(_G.SpamMessage, "All") | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 88: SISTEMA BASE - PERSONAGEM INVISÍVEL (GHOST MODE)] | |
| _G.Invisible = false | |
| task.spawn(function() | |
| while task.wait(1) do | |
| pcall(function() | |
| if LocalPlayer.Character then | |
| for _, part in pairs(LocalPlayer.Character:GetDescendants()) do | |
| if part:IsA("BasePart") or part:IsA("Decal") then | |
| if _G.Invisible then | |
| part.Transparency = 1 | |
| else | |
| -- Retorna a visibilidade ao normal (não perfeito para todas as partes, mas funcional) | |
| if part.Name ~= "HumanoidRootPart" then | |
| part.Transparency = 0 | |
| end | |
| end | |
| end | |
| end | |
| -- Esconde o nome do jogador (Nametag) | |
| local head = LocalPlayer.Character:FindFirstChild("Head") | |
| if head and head:FindFirstChild("Nametag") then | |
| head.Nametag.Visible = not _G.Invisible | |
| end | |
| end | |
| end) | |
| end | |
| end) | |
| -- [BLOCO 89: SISTEMA BASE - REMOVER ANIMAÇÕES (T-POSE)] | |
| _G.RemoveAnimations = false | |
| task.spawn(function() | |
| while task.wait(1) do | |
| pcall(function() | |
| if LocalPlayer.Character then | |
| local animate = LocalPlayer.Character:FindFirstChild("Animate") | |
| if animate then | |
| if _G.RemoveAnimations then | |
| animate.Disabled = true | |
| else | |
| animate.Disabled = false | |
| end | |
| end | |
| end | |
| end) | |
| end | |
| end) | |
| -- [BLOCO 90: LÓGICA DA INTERFACE - ANIMAÇÃO DE ABERTURA INICIAL] | |
| -- Faz o menu surgir de forma suave quando o script é executado pela primeira vez | |
| MainFrame.Position = UDim2.new(0.5, -250, 0.5, -200) -- Centralizado | |
| MainFrame.Size = UDim2.new(0, 0, 0, 0) | |
| MainFrame.BackgroundTransparency = 1 | |
| ContentContainer.Visible = false | |
| TabContainer.Visible = false | |
| -- A Mágica de Abertura | |
| TweenService:Create(MainFrame, TweenInfo.new(0.6, Enum.EasingStyle.Elastic, Enum.EasingDirection.Out), {Size = UDim2.new(0, 500, 0, 350)}):Play() | |
| TweenService:Create(MainFrame, TweenInfo.new(0.4), {BackgroundTransparency = 0}):Play() | |
| task.wait(0.5) | |
| ContentContainer.Visible = true | |
| TabContainer.Visible = true | |
| -- ========================================================= | |
| -- PARTE 12: GRAND FINALE - WATERMARK, RGB, SKILLS E NOTIFICAÇÕES | |
| -- ========================================================= | |
| local Stats = game:GetService("Stats") | |
| -- [BLOCO 91: SISTEMA BASE - MARCA D'ÁGUA (WATERMARK)] | |
| -- Cria um pequeno texto no topo da tela mostrando o nome do Hub, FPS e Ping | |
| local Watermark = Instance.new("TextLabel") | |
| Watermark.Name = "PacocaWatermark" | |
| Watermark.Size = UDim2.new(0, 250, 0, 25) | |
| Watermark.Position = UDim2.new(0, 10, 0, 10) | |
| Watermark.BackgroundTransparency = 0.5 | |
| Watermark.BackgroundColor3 = Color3.fromRGB(15, 15, 15) | |
| Watermark.TextColor3 = Color3.fromRGB(255, 255, 255) | |
| Watermark.Font = Enum.Font.Code | |
| Watermark.TextSize = 14 | |
| Watermark.Text = " Paçoca Hub | FPS: 60 | Ping: 50ms" | |
| Watermark.TextXAlignment = Enum.TextXAlignment.Left | |
| Watermark.Parent = ScreenGui | |
| local UICornerWM = Instance.new("UICorner") | |
| UICornerWM.CornerRadius = UDim.new(0, 4) | |
| UICornerWM.Parent = Watermark | |
| -- [BLOCO 92: LÓGICA DA INTERFACE - ATUALIZAR FPS E PING] | |
| local LastTick = tick() | |
| local FrameCount = 0 | |
| RunService.RenderStepped:Connect(function() | |
| FrameCount = FrameCount + 1 | |
| if tick() - LastTick >= 1 then | |
| local ping = math.floor(Stats.Network.ServerStatsItem["Data Ping"]:GetValue()) | |
| Watermark.Text = " 🥜 Paçoca Hub | FPS: " .. FrameCount .. " | Ping: " .. ping .. "ms" | |
| FrameCount = 0 | |
| LastTick = tick() | |
| end | |
| end) | |
| -- [BLOCO 93: LÓGICA DA INTERFACE - RGB RAINBOW (TEMA GLOW)] | |
| -- Faz a linha de baixo do título brilhar mudando de cor | |
| local RainbowLine = Instance.new("Frame") | |
| RainbowLine.Size = UDim2.new(1, 0, 0, 2) | |
| RainbowLine.Position = UDim2.new(0, 0, 1, 0) | |
| RainbowLine.BorderSizePixel = 0 | |
| RainbowLine.Parent = TitleBar | |
| RunService.RenderStepped:Connect(function() | |
| -- Usa matemática de tempo para gerar o espectro de cores RGB | |
| RainbowLine.BackgroundColor3 = Color3.fromHSV(tick() % 5 / 5, 1, 1) | |
| end) | |
| -- [BLOCO 94: SISTEMA BASE - AUTO SKILLS (USAR ATAQUES Z, X, C, V)] | |
| _G.AutoSkills = false | |
| local VirtualInputManager = game:GetService("VirtualInputManager") | |
| task.spawn(function() | |
| while task.wait(2) do -- Dispara skills a cada 2 segundos para não bugar | |
| if _G.AutoSkills and _G.AutoFarm then | |
| pcall(function() | |
| -- Simula o pressionamento das teclas das habilidades | |
| VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.Z, false, game) | |
| task.wait(0.1) | |
| VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.X, false, game) | |
| task.wait(0.1) | |
| VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.C, false, game) | |
| task.wait(0.1) | |
| VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.V, false, game) | |
| end) | |
| end | |
| end | |
| end) | |
| -- [BLOCO 95: LIGANDO O AUTO SKILLS NA UI] | |
| -- Adiciona um Toggle rápido na Aba de Combate | |
| local combatTabFinal = tabContents[2] | |
| CreateToggle(combatTabFinal, "Auto Usar Skills (Z, X, C, V)", function(val) | |
| _G.AutoSkills = val | |
| end) | |
| -- [BLOCO 96: SISTEMA BASE - OTIMIZADOR DE MEMÓRIA (GARBAGE COLLECTOR)] | |
| task.spawn(function() | |
| while task.wait(60) do | |
| -- A cada 60 segundos, limpa a memória não utilizada pelo Roblox para evitar crashes | |
| pcall(function() | |
| if _G.PotatoMode then | |
| gcinfo() -- Força a leitura do Garbage Collector | |
| end | |
| end) | |
| end | |
| end) | |
| -- [BLOCO 97: SISTEMA DE NOTIFICAÇÃO PERSONALIZADA DO HUB] | |
| local function SendPacocaNotification(texto) | |
| game:GetService("StarterGui"):SetCore("SendNotification", { | |
| Title = "🥜 PAÇOCA HUB", | |
| Text = texto, | |
| Icon = "rbxassetid://6023426923", -- Ícone genérico de sucesso | |
| Duration = 5 | |
| }) | |
| end | |
| -- [BLOCO 98: SISTEMA BASE - PANIC BUTTON (KILL SWITCH)] | |
| -- Destrói absolutamente tudo do script se você apertar a tecla "DELETE" | |
| UserInputService.InputBegan:Connect(function(input, gameProcessed) | |
| if not gameProcessed and input.KeyCode == Enum.KeyCode.Delete then | |
| pcall(function() | |
| _G.AutoFarm = false | |
| _G.AutoBounty = false | |
| if CoreGui:FindFirstChild("PacocaHub") then | |
| CoreGui.PacocaHub:Destroy() | |
| end | |
| SendPacocaNotification("Script encerrado de emergência!") | |
| end) | |
| end | |
| end) | |
| -- [BLOCO 99: INICIALIZAÇÃO - BEM-VINDO] | |
| task.wait(1) | |
| SendPacocaNotification("Carregamento concluído! Bem-vindo, " .. LocalPlayer.Name .. "!") | |
| -- [BLOCO 100: MENSAGEM FINAL DE CONSOLE] | |
| print("=========================================") | |
| print("🥜 PAÇOCA HUB CARREGADO COM SUCESSO! 🥜") | |
| print("=========================================") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment