Capybaras vs Plants Script Hub Multiple Features
Key RequiredUniversal

Capybaras vs Plants Script Hub Multiple Features

Universal ScriptJeshScriptsJeshScripts 263 views 1.5K executesUpdated Aug 12, 2026
Unrated
00
Lua Script•1111 lines (39420 chars)
-- ╔══════════════════════════════════════════════════════════════╗
-- ║         CAPYBARA HUB v1.0 — by Axiom                        ║
-- ║         Game: Capybaras VS Plants                           ║
-- ║         Executor: Xeno Compatible                           ║
-- ╚══════════════════════════════════════════════════════════════╝

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local LocalPlayer = Players.LocalPlayer
local PlayerGui = LocalPlayer:WaitForChild("PlayerGui")

-- ══════════════════════════════════════════════
-- STATE
-- ══════════════════════════════════════════════
local Hub = {
    AutoCollect   = false,
    AutoBuyEgg    = false,
    AutoHatch     = false,
    AutoPlaceCapy = false,
    AutoBoss      = false,
    WeatherAlert  = false,
    SpeedHack     = false,
    AutoCode      = false,
    SpeedValue    = 16,
    EggTier       = "Basic",
    Dragging      = false,
    DragStart     = nil,
    StartPos      = nil,
}

local Codes = {"RELEASE", "UPDATE2", "CAPYVIBES"}

-- ══════════════════════════════════════════════
-- GUI CONSTRUCTION
-- ══════════════════════════════════════════════
local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "CapybaraHub"
ScreenGui.ResetOnSpawn = false
ScreenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
ScreenGui.Parent = PlayerGui

-- Main frame
local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Size = UDim2.new(0, 420, 0, 520)
MainFrame.Position = UDim2.new(0.5, -210, 0.5, -260)
MainFrame.BackgroundColor3 = Color3.fromRGB(18, 18, 24)
MainFrame.BorderSizePixel = 0
MainFrame.ClipsDescendants = true
MainFrame.Parent = ScreenGui

-- Rounded corners
local UICorner = Instance.new("UICorner")
UICorner.CornerRadius = UDim.new(0, 12)
UICorner.Parent = MainFrame

-- Outer glow stroke
local UIStroke = Instance.new("UIStroke")
UIStroke.Color = Color3.fromRGB(120, 220, 140)
UIStroke.Thickness = 1.5
UIStroke.Transparency = 0.3
UIStroke.Parent = MainFrame

-- Title bar
local TitleBar = Instance.new("Frame")
TitleBar.Name = "TitleBar"
TitleBar.Size = UDim2.new(1, 0, 0, 48)
TitleBar.BackgroundColor3 = Color3.fromRGB(28, 28, 36)
TitleBar.BorderSizePixel = 0
TitleBar.Parent = MainFrame

local TitleCorner = Instance.new("UICorner")
TitleCorner.CornerRadius = UDim.new(0, 12)
TitleCorner.Parent = TitleBar

-- Title icon + text
local TitleLabel = Instance.new("TextLabel")
TitleLabel.Size = UDim2.new(1, -60, 1, 0)
TitleLabel.Position = UDim2.new(0, 14, 0, 0)
TitleLabel.BackgroundTransparency = 1
TitleLabel.Text = "🐾  CAPYBARA HUB  v1.0"
TitleLabel.TextColor3 = Color3.fromRGB(120, 230, 150)
TitleLabel.TextSize = 16
TitleLabel.Font = Enum.Font.GothamBold
TitleLabel.TextXAlignment = Enum.TextXAlignment.Left
TitleLabel.Parent = TitleBar

-- Minimize button
local MinBtn = Instance.new("TextButton")
MinBtn.Size = UDim2.new(0, 30, 0, 30)
MinBtn.Position = UDim2.new(1, -76, 0, 9)
MinBtn.BackgroundColor3 = Color3.fromRGB(60, 60, 75)
MinBtn.Text = "—"
MinBtn.TextColor3 = Color3.fromRGB(200, 200, 200)
MinBtn.TextSize = 14
MinBtn.Font = Enum.Font.GothamBold
MinBtn.BorderSizePixel = 0
MinBtn.Parent = TitleBar
local MinCorner = Instance.new("UICorner")
MinCorner.CornerRadius = UDim.new(0, 6)
MinCorner.Parent = MinBtn

-- Close button
local CloseBtn = Instance.new("TextButton")
CloseBtn.Size = UDim2.new(0, 30, 0, 30)
CloseBtn.Position = UDim2.new(1, -40, 0, 9)
CloseBtn.BackgroundColor3 = Color3.fromRGB(200, 60, 60)
CloseBtn.Text = "✕"
CloseBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
CloseBtn.TextSize = 14
CloseBtn.Font = Enum.Font.GothamBold
CloseBtn.BorderSizePixel = 0
CloseBtn.Parent = TitleBar
local CloseCorner = Instance.new("UICorner")
CloseCorner.CornerRadius = UDim.new(0, 6)
CloseCorner.Parent = CloseBtn

-- Tab bar
local TabBar = Instance.new("Frame")
TabBar.Size = UDim2.new(1, 0, 0, 38)
TabBar.Position = UDim2.new(0, 0, 0, 48)
TabBar.BackgroundColor3 = Color3.fromRGB(22, 22, 30)
TabBar.BorderSizePixel = 0
TabBar.Parent = MainFrame

local TabLayout = Instance.new("UIListLayout")
TabLayout.FillDirection = Enum.FillDirection.Horizontal
TabLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center
TabLayout.VerticalAlignment = Enum.VerticalAlignment.Center
TabLayout.Padding = UDim.new(0, 6)
TabLayout.Parent = TabBar

-- Content area
local ContentArea = Instance.new("Frame")
ContentArea.Size = UDim2.new(1, 0, 1, -86)
ContentArea.Position = UDim2.new(0, 0, 0, 86)
ContentArea.BackgroundTransparency = 1
ContentArea.Parent = MainFrame

-- Status bar
local StatusBar = Instance.new("Frame")
StatusBar.Size = UDim2.new(1, 0, 0, 24)
StatusBar.Position = UDim2.new(0, 0, 1, -24)
StatusBar.BackgroundColor3 = Color3.fromRGB(22, 22, 30)
StatusBar.BorderSizePixel = 0
StatusBar.ZIndex = 10
StatusBar.Parent = MainFrame

local StatusLabel = Instance.new("TextLabel")
StatusLabel.Size = UDim2.new(1, -10, 1, 0)
StatusLabel.Position = UDim2.new(0, 10, 0, 0)
StatusLabel.BackgroundTransparency = 1
StatusLabel.Text = "● Idle"
StatusLabel.TextColor3 = Color3.fromRGB(100, 200, 120)
StatusLabel.TextSize = 11
StatusLabel.Font = Enum.Font.Gotham
StatusLabel.TextXAlignment = Enum.TextXAlignment.Left
StatusLabel.Parent = StatusBar

local function SetStatus(msg, color)
    StatusLabel.Text = "● " .. msg
    StatusLabel.TextColor3 = color or Color3.fromRGB(100, 200, 120)
end

-- ══════════════════════════════════════════════
-- TAB + PANEL SYSTEM
-- ══════════════════════════════════════════════
local Tabs = {}
local Panels = {}
local ActiveTab = nil

local TabNames = {"Farm", "Hatch", "Misc", "Codes"}
local TabColors = {
    Active   = Color3.fromRGB(80, 200, 110),
    Inactive = Color3.fromRGB(45, 45, 58),
    Text     = Color3.fromRGB(240, 240, 240),
    TextDim  = Color3.fromRGB(130, 130, 145),
}

local function SwitchTab(name)
    for tname, panel in pairs(Panels) do
        panel.Visible = (tname == name)
    end
    for tname, btn in pairs(Tabs) do
        if tname == name then
            btn.BackgroundColor3 = TabColors.Active
            btn.TextColor3 = Color3.fromRGB(18, 18, 24)
        else
            btn.BackgroundColor3 = TabColors.Inactive
            btn.TextColor3 = TabColors.TextDim
        end
    end
    ActiveTab = name
end

for _, name in ipairs(TabNames) do
    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 82, 0, 28)
    btn.BackgroundColor3 = TabColors.Inactive
    btn.Text = name
    btn.TextColor3 = TabColors.TextDim
    btn.TextSize = 13
    btn.Font = Enum.Font.GothamBold
    btn.BorderSizePixel = 0
    btn.Parent = TabBar
    local c = Instance.new("UICorner")
    c.CornerRadius = UDim.new(0, 6)
    c.Parent = btn

    local panel = Instance.new("ScrollingFrame")
    panel.Size = UDim2.new(1, 0, 1, -24)
    panel.Position = UDim2.new(0, 0, 0, 0)
    panel.BackgroundTransparency = 1
    panel.BorderSizePixel = 0
    panel.ScrollBarThickness = 4
    panel.ScrollBarImageColor3 = Color3.fromRGB(80, 200, 110)
    panel.Visible = false
    panel.Parent = ContentArea

    local layout = Instance.new("UIListLayout")
    layout.Padding = UDim.new(0, 8)
    layout.HorizontalAlignment = Enum.HorizontalAlignment.Center
    layout.Parent = panel

    local pad = Instance.new("UIPadding")
    pad.PaddingTop = UDim.new(0, 10)
    pad.PaddingBottom = UDim.new(0, 10)
    pad.Parent = panel

    Tabs[name] = btn
    Panels[name] = panel

    btn.MouseButton1Click:Connect(function()
        SwitchTab(name)
    end)
end

SwitchTab("Farm")

-- ══════════════════════════════════════════════
-- WIDGET BUILDERS
-- ══════════════════════════════════════════════
local function MakeToggle(parent, label, desc, callback)
    local row = Instance.new("Frame")
    row.Size = UDim2.new(0, 390, 0, 56)
    row.BackgroundColor3 = Color3.fromRGB(28, 28, 36)
    row.BorderSizePixel = 0
    row.Parent = parent
    local rc = Instance.new("UICorner")
    rc.CornerRadius = UDim.new(0, 8)
    rc.Parent = row

    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(0, 270, 0, 24)
    lbl.Position = UDim2.new(0, 12, 0, 6)
    lbl.BackgroundTransparency = 1
    lbl.Text = label
    lbl.TextColor3 = Color3.fromRGB(230, 230, 230)
    lbl.TextSize = 13
    lbl.Font = Enum.Font.GothamBold
    lbl.TextXAlignment = Enum.TextXAlignment.Left
    lbl.Parent = row

    local sub = Instance.new("TextLabel")
    sub.Size = UDim2.new(0, 270, 0, 18)
    sub.Position = UDim2.new(0, 12, 0, 30)
    sub.BackgroundTransparency = 1
    sub.Text = desc
    sub.TextColor3 = Color3.fromRGB(110, 110, 130)
    sub.TextSize = 11
    sub.Font = Enum.Font.Gotham
    sub.TextXAlignment = Enum.TextXAlignment.Left
    sub.Parent = row

    -- Toggle pill
    local pill = Instance.new("Frame")
    pill.Size = UDim2.new(0, 46, 0, 24)
    pill.Position = UDim2.new(1, -58, 0.5, -12)
    pill.BackgroundColor3 = Color3.fromRGB(55, 55, 68)
    pill.BorderSizePixel = 0
    pill.Parent = row
    local pc = Instance.new("UICorner")
    pc.CornerRadius = UDim.new(0, 12)
    pc.Parent = pill

    local knob = Instance.new("Frame")
    knob.Size = UDim2.new(0, 18, 0, 18)
    knob.Position = UDim2.new(0, 3, 0.5, -9)
    knob.BackgroundColor3 = Color3.fromRGB(160, 160, 175)
    knob.BorderSizePixel = 0
    knob.Parent = pill
    local kc = Instance.new("UICorner")
    kc.CornerRadius = UDim.new(0, 9)
    kc.Parent = knob

    local state = false

    local function SetToggle(val)
        state = val
        local goal = val and UDim2.new(0, 25, 0.5, -9) or UDim2.new(0, 3, 0.5, -9)
        local col  = val and Color3.fromRGB(80, 200, 110) or Color3.fromRGB(55, 55, 68)
        local kcol = val and Color3.fromRGB(255, 255, 255) or Color3.fromRGB(160, 160, 175)
        TweenService:Create(knob, TweenInfo.new(0.15), {Position = goal, BackgroundColor3 = kcol}):Play()
        TweenService:Create(pill, TweenInfo.new(0.15), {BackgroundColor3 = col}):Play()
        callback(state)
    end

    pill.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            SetToggle(not state)
        end
    end)

    return row, function() return state end, SetToggle
end

local function MakeButton(parent, label, desc, callback)
    local row = Instance.new("Frame")
    row.Size = UDim2.new(0, 390, 0, 46)
    row.BackgroundColor3 = Color3.fromRGB(28, 28, 36)
    row.BorderSizePixel = 0
    row.Parent = parent
    local rc = Instance.new("UICorner")
    rc.CornerRadius = UDim.new(0, 8)
    rc.Parent = row

    local btn = Instance.new("TextButton")
    btn.Size = UDim2.new(0, 100, 0, 28)
    btn.Position = UDim2.new(1, -112, 0.5, -14)
    btn.BackgroundColor3 = Color3.fromRGB(60, 180, 90)
    btn.Text = label
    btn.TextColor3 = Color3.fromRGB(255, 255, 255)
    btn.TextSize = 12
    btn.Font = Enum.Font.GothamBold
    btn.BorderSizePixel = 0
    btn.Parent = row
    local bc = Instance.new("UICorner")
    bc.CornerRadius = UDim.new(0, 6)
    bc.Parent = btn

    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(0, 260, 1, 0)
    lbl.Position = UDim2.new(0, 12, 0, 0)
    lbl.BackgroundTransparency = 1
    lbl.Text = desc
    lbl.TextColor3 = Color3.fromRGB(180, 180, 200)
    lbl.TextSize = 12
    lbl.Font = Enum.Font.Gotham
    lbl.TextXAlignment = Enum.TextXAlignment.Left
    lbl.Parent = row

    btn.MouseButton1Click:Connect(callback)

    btn.MouseEnter:Connect(function()
        TweenService:Create(btn, TweenInfo.new(0.1), {BackgroundColor3 = Color3.fromRGB(80, 210, 110)}):Play()
    end)
    btn.MouseLeave:Connect(function()
        TweenService:Create(btn, TweenInfo.new(0.1), {BackgroundColor3 = Color3.fromRGB(60, 180, 90)}):Play()
    end)

    return row
end

local function MakeSectionLabel(parent, text)
    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(0, 390, 0, 22)
    lbl.BackgroundTransparency = 1
    lbl.Text = "  " .. text
    lbl.TextColor3 = Color3.fromRGB(80, 200, 110)
    lbl.TextSize = 11
    lbl.Font = Enum.Font.GothamBold
    lbl.TextXAlignment = Enum.TextXAlignment.Left
    lbl.Parent = parent
end

local function MakeSlider(parent, label, min, max, default, callback)
    local row = Instance.new("Frame")
    row.Size = UDim2.new(0, 390, 0, 60)
    row.BackgroundColor3 = Color3.fromRGB(28, 28, 36)
    row.BorderSizePixel = 0
    row.Parent = parent
    local rc = Instance.new("UICorner")
    rc.CornerRadius = UDim.new(0, 8)
    rc.Parent = row

    local lbl = Instance.new("TextLabel")
    lbl.Size = UDim2.new(1, -60, 0, 22)
    lbl.Position = UDim2.new(0, 12, 0, 6)
    lbl.BackgroundTransparency = 1
    lbl.Text = label
    lbl.TextColor3 = Color3.fromRGB(220, 220, 220)
    lbl.TextSize = 12
    lbl.Font = Enum.Font.GothamBold
    lbl.TextXAlignment = Enum.TextXAlignment.Left
    lbl.Parent = row

    local valLabel = Instance.new("TextLabel")
    valLabel.Size = UDim2.new(0, 50, 0, 22)
    valLabel.Position = UDim2.new(1, -58, 0, 6)
    valLabel.BackgroundTransparency = 1
    valLabel.Text = tostring(default)
    valLabel.TextColor3 = Color3.fromRGB(80, 200, 110)
    valLabel.TextSize = 12
    valLabel.Font = Enum.Font.GothamBold
    valLabel.TextXAlignment = Enum.TextXAlignment.Right
    valLabel.Parent = row

    local track = Instance.new("Frame")
    track.Size = UDim2.new(0, 362, 0, 6)
    track.Position = UDim2.new(0, 14, 0, 40)
    track.BackgroundColor3 = Color3.fromRGB(50, 50, 65)
    track.BorderSizePixel = 0
    track.Parent = row
    local tc = Instance.new("UICorner")
    tc.CornerRadius = UDim.new(0, 3)
    tc.Parent = track

    local fill = Instance.new("Frame")
    fill.Size = UDim2.new((default - min) / (max - min), 0, 1, 0)
    fill.BackgroundColor3 = Color3.fromRGB(80, 200, 110)
    fill.BorderSizePixel = 0
    fill.Parent = track
    local fc = Instance.new("UICorner")
    fc.CornerRadius = UDim.new(0, 3)
    fc.Parent = fill

    local handle = Instance.new("Frame")
    handle.Size = UDim2.new(0, 14, 0, 14)
    handle.Position = UDim2.new((default - min) / (max - min), -7, 0.5, -7)
    handle.BackgroundColor3 = Color3.fromRGB(255, 255, 255)
    handle.BorderSizePixel = 0
    handle.Parent = track
    local hc = Instance.new("UICorner")
    hc.CornerRadius = UDim.new(0, 7)
    hc.Parent = handle

    local dragging = false
    local currentVal = default

    local function UpdateSlider(x)
        local relX = math.clamp((x - track.AbsolutePosition.X) / track.AbsoluteSize.X, 0, 1)
        currentVal = math.floor(min + relX * (max - min))
        fill.Size = UDim2.new(relX, 0, 1, 0)
        handle.Position = UDim2.new(relX, -7, 0.5, -7)
        valLabel.Text = tostring(currentVal)
        callback(currentVal)
    end

    track.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            UpdateSlider(input.Position.X)
        end
    end)
    UserInputService.InputChanged:Connect(function(input)
        if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
            UpdateSlider(input.Position.X)
        end
    end)
    UserInputService.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = false
        end
    end)

    return row
end

-- ══════════════════════════════════════════════
-- TAB: FARM
-- ══════════════════════════════════════════════
local FarmPanel = Panels["Farm"]

MakeSectionLabel(FarmPanel, "MONEY & COLLECTION")

MakeToggle(FarmPanel, "⚡ Auto Collect Money", "Grabs cash drops from your plot automatically", function(val)
    Hub.AutoCollect = val
    SetStatus(val and "Auto Collect ON" or "Idle", val and Color3.fromRGB(80, 220, 100) or Color3.fromRGB(100, 200, 120))
end)

MakeToggle(FarmPanel, "🌿 Auto Buy Best Egg", "Purchases the highest tier egg you can afford", function(val)
    Hub.AutoBuyEgg = val
    SetStatus(val and "Auto Buy Egg ON" or "Idle")
end)

MakeToggle(FarmPanel, "📦 Auto Place Capybara", "Places hatched capybaras onto plot slots", function(val)
    Hub.AutoPlaceCapy = val
    SetStatus(val and "Auto Place ON" or "Idle")
end)

MakeSectionLabel(FarmPanel, "BOSS EVENTS")

MakeToggle(FarmPanel, "👾 Auto Boss Fight", "Targets and attacks boss when it spawns", function(val)
    Hub.AutoBoss = val
    SetStatus(val and "Boss Hunter ON" or "Idle")
end)

MakeButton(FarmPanel, "Attack Now", "Manually trigger a boss attack this cycle", function()
    local boss = workspace:FindFirstChild("Boss") or workspace:FindFirstChildWhichIsA("Model", true)
    if boss then
        SetStatus("Boss targeted!", Color3.fromRGB(220, 180, 60))
        -- Fire toward boss position
        local char = LocalPlayer.Character
        if char and char:FindFirstChild("HumanoidRootPart") then
            char.HumanoidRootPart.CFrame = CFrame.new(boss:GetPivot().Position + Vector3.new(0, 0, 5))
        end
    else
        SetStatus("No boss found", Color3.fromRGB(200, 80, 80))
    end
end)

MakeSectionLabel(FarmPanel, "MOVEMENT")

MakeSlider(FarmPanel, "Walk Speed", 16, 100, 16, function(val)
    Hub.SpeedValue = val
    if Hub.SpeedHack then
        local char = LocalPlayer.Character
        if char and char:FindFirstChild("Humanoid") then
            char.Humanoid.WalkSpeed = val
        end
    end
end)

MakeToggle(FarmPanel, "🏃 Speed Hack", "Apply custom walk speed to character", function(val)
    Hub.SpeedHack = val
    local char = LocalPlayer.Character
    if char and char:FindFirstChild("Humanoid") then
        char.Humanoid.WalkSpeed = val and Hub.SpeedValue or 16
    end
    SetStatus(val and "Speed: " .. Hub.SpeedValue or "Idle")
end)

MakeButton(FarmPanel, "Teleport Plot", "Teleport to your own plot instantly", function()
    local char = LocalPlayer.Character
    if not char then return end
    -- Scan for plot tagged with player name
    for _, obj in ipairs(workspace:GetDescendants()) do
        if (obj.Name == "Plot" or obj.Name == "PlayerPlot") and obj:IsA("BasePart") then
            local root = char:FindFirstChild("HumanoidRootPart")
            if root then
                root.CFrame = obj.CFrame + Vector3.new(0, 5, 0)
                SetStatus("Teleported to plot", Color3.fromRGB(80, 180, 220))
                return
            end
        end
    end
    -- Fallback: find plot by proximity
    local plotFolder = workspace:FindFirstChild("Plots") or workspace:FindFirstChild("PlayerPlots")
    if plotFolder then
        local myPlot = plotFolder:FindFirstChild(LocalPlayer.Name) or plotFolder:GetChildren()[1]
        if myPlot then
            local part = myPlot:FindFirstChildWhichIsA("BasePart")
            local root = char:FindFirstChild("HumanoidRootPart")
            if part and root then
                root.CFrame = part.CFrame + Vector3.new(0, 5, 0)
                SetStatus("Teleported!", Color3.fromRGB(80, 180, 220))
            end
        end
    end
end)

-- ══════════════════════════════════════════════
-- TAB: HATCH
-- ══════════════════════════════════════════════
local HatchPanel = Panels["Hatch"]

MakeSectionLabel(HatchPanel, "EGG MANAGEMENT")

MakeToggle(HatchPanel, "🥚 Auto Hatch Eggs", "Automatically hatches all eggs on your plot", function(val)
    Hub.AutoHatch = val
    SetStatus(val and "Auto Hatch ON" or "Idle")
end)

MakeToggle(HatchPanel, "⚙️ Weather Alert", "Notifies when weather mutation event triggers", function(val)
    Hub.WeatherAlert = val
    SetStatus(val and "Weather Watch ON" or "Idle")
end)

MakeButton(HatchPanel, "Collect All", "Attempt to collect all hatched capybaras now", function()
    SetStatus("Collecting...", Color3.fromRGB(220, 180, 60))
    -- Scan workspace for interactable collect prompts
    for _, obj in ipairs(workspace:GetDescendants()) do
        if obj:IsA("ProximityPrompt") and (obj.ActionText:lower():find("collect") or obj.ActionText:lower():find("hatch")) then
            fireproximityprompt(obj)
        end
    end
    task.delay(1.5, function()
        SetStatus("Collection sweep done", Color3.fromRGB(80, 200, 110))
    end)
end)

MakeSectionLabel(HatchPanel, "MUTATION TRACKER")

MakeButton(HatchPanel, "Scan Mutations", "Scan all plot objects for active mutations", function()
    SetStatus("Scanning mutations...", Color3.fromRGB(220, 180, 60))
    local found = {}
    for _, obj in ipairs(workspace:GetDescendants()) do
        if obj:IsA("StringValue") and obj.Name == "Mutation" and obj.Value ~= "" then
            table.insert(found, obj.Parent.Name .. ": " .. obj.Value)
        end
        if obj:IsA("Model") and obj:FindFirstChild("Mutation") then
            local m = obj:FindFirstChild("Mutation")
            if m and m.Value ~= "" then
                table.insert(found, obj.Name .. " → " .. m.Value)
            end
        end
    end
    if #found > 0 then
        SetStatus("Mutations: " .. #found .. " found", Color3.fromRGB(180, 130, 255))
    else
        SetStatus("No active mutations detected", Color3.fromRGB(150, 150, 170))
    end
end)

MakeButton(HatchPanel, "Instant Hatch", "Fire hatch prompt on all eggs in proximity", function()
    local char = LocalPlayer.Character
    if not char then return end
    local root = char:FindFirstChild("HumanoidRootPart")
    if not root then return end
    local count = 0
    for _, obj in ipairs(workspace:GetDescendants()) do
        if obj:IsA("ProximityPrompt") then
            local dist = (obj.Parent:IsA("BasePart") and (obj.Parent.Position - root.Position).Magnitude) or 999
            if dist < 50 then
                pcall(function() fireproximityprompt(obj) end)
                count = count + 1
            end
        end
    end
    SetStatus("Fired " .. count .. " prompts", Color3.fromRGB(80, 200, 110))
end)

MakeSectionLabel(HatchPanel, "REMOTE TOOLS")

MakeButton(HatchPanel, "Dump Remotes", "Print all ReplicatedStorage remote names to console", function()
    local remotes = {}
    for _, v in ipairs(ReplicatedStorage:GetDescendants()) do
        if v:IsA("RemoteEvent") or v:IsA("RemoteFunction") then
            table.insert(remotes, v.ClassName .. ": " .. v:GetFullName())
        end
    end
    if #remotes > 0 then
        print("=== CAPYBARA HUB: REMOTE DUMP ===")
        for _, r in ipairs(remotes) do print(r) end
        print("=== TOTAL: " .. #remotes .. " ===")
        SetStatus("Dumped " .. #remotes .. " remotes → console", Color3.fromRGB(100, 180, 255))
    else
        SetStatus("No remotes found in ReplicatedStorage", Color3.fromRGB(200, 80, 80))
    end
end)

-- ══════════════════════════════════════════════
-- TAB: MISC
-- ══════════════════════════════════════════════
local MiscPanel = Panels["Misc"]

MakeSectionLabel(MiscPanel, "VISUAL")

MakeButton(MiscPanel, "Fullbright", "Set ambient and fog to maximum visibility", function()
    game:GetService("Lighting").Ambient        = Color3.fromRGB(255, 255, 255)
    game:GetService("Lighting").OutdoorAmbient = Color3.fromRGB(255, 255, 255)
    game:GetService("Lighting").Brightness     = 5
    game:GetService("Lighting").FogEnd         = 100000
    SetStatus("Fullbright ON", Color3.fromRGB(255, 230, 80))
end)

MakeButton(MiscPanel, "Reset Lighting", "Restore default lighting values", function()
    game:GetService("Lighting").Ambient        = Color3.fromRGB(70, 70, 70)
    game:GetService("Lighting").OutdoorAmbient = Color3.fromRGB(140, 140, 140)
    game:GetService("Lighting").Brightness     = 2
    game:GetService("Lighting").FogEnd         = 100000
    SetStatus("Lighting reset", Color3.fromRGB(100, 200, 120))
end)

MakeSectionLabel(MiscPanel, "PLAYER")

MakeButton(MiscPanel, "Rejoin", "Rejoin the same game server", function()
    SetStatus("Rejoining...", Color3.fromRGB(220, 130, 60))
    task.delay(0.5, function()
        game:GetService("TeleportService"):Teleport(game.PlaceId, LocalPlayer)
    end)
end)

MakeButton(MiscPanel, "No Clip", "Toggle noclip — walk through all parts", function()
    Hub._noclip = not Hub._noclip
    SetStatus(Hub._noclip and "No Clip ON" or "No Clip OFF", Hub._noclip and Color3.fromRGB(255, 180, 60) or Color3.fromRGB(100, 200, 120))
end)

MakeButton(MiscPanel, "Inf Jump", "Enable infinite jump", function()
    Hub._infjump = not Hub._infjump
    if Hub._infjump then
        UserInputService.JumpRequest:Connect(function()
            if Hub._infjump then
                local char = LocalPlayer.Character
                if char and char:FindFirstChild("Humanoid") then
                    char.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
                end
            end
        end)
        SetStatus("Inf Jump ON", Color3.fromRGB(80, 200, 255))
    else
        SetStatus("Inf Jump OFF", Color3.fromRGB(100, 200, 120))
    end
end)

MakeSectionLabel(MiscPanel, "SERVER")

MakeButton(MiscPanel, "Server Hop", "Hop to a new server instance of this game", function()
    SetStatus("Hopping server...", Color3.fromRGB(220, 130, 60))
    local TeleportService = game:GetService("TeleportService")
    local HttpService = game:GetService("HttpService")
    local placeId = game.PlaceId
    local currentServerId = game.JobId
    local found = false

    -- Attempt server hop via public server list
    pcall(function()
        local url = "https://games.roblox.com/v1/games/" .. placeId .. "/servers/Public?sortOrder=Asc&limit=100"
        local response = game:HttpGetAsync(url)
        local data = HttpService:JSONDecode(response)
        for _, server in ipairs(data.data or {}) do
            if server.id ~= currentServerId and server.playing < server.maxPlayers then
                TeleportService:TeleportToPlaceInstance(placeId, server.id, LocalPlayer)
                found = true
                break
            end
        end
    end)

    if not found then
        SetStatus("No open server found", Color3.fromRGB(200, 80, 80))
    end
end)

-- ══════════════════════════════════════════════
-- TAB: CODES
-- ══════════════════════════════════════════════
local CodesPanel = Panels["Codes"]

MakeSectionLabel(CodesPanel, "AUTO REDEEM")

MakeToggle(CodesPanel, "🎁 Auto Redeem Codes", "Automatically redeems all known active codes", function(val)
    Hub.AutoCode = val
    SetStatus(val and "Code Redeemer ON" or "Idle")
end)

MakeButton(CodesPanel, "Redeem All", "Redeem all known active codes right now", function()
    SetStatus("Redeeming codes...", Color3.fromRGB(220, 180, 60))
    local redeemed = 0
    -- Try to find the code input via PlayerGui
    local function TryRedeem(code)
        -- Method 1: Find TextBox in GUI and submit
        for _, gui in ipairs(PlayerGui:GetDescendants()) do
            if gui:IsA("TextBox") and (gui.PlaceholderText:lower():find("code") or gui.Name:lower():find("code")) then
                gui.Text = code
                -- Find nearby submit button
                local parent = gui.Parent
                for _, child in ipairs(parent:GetDescendants()) do
                    if child:IsA("TextButton") and (child.Text:lower():find("enter") or child.Text:lower():find("redeem") or child.Text:lower():find("submit")) then
                        child:Activate()
                        task.wait(0.8)
                        redeemed = redeemed + 1
                        return true
                    end
                end
            end
        end
        -- Method 2: Fire RemoteEvent directly
        for _, re in ipairs(ReplicatedStorage:GetDescendants()) do
            if re:IsA("RemoteEvent") and (re.Name:lower():find("code") or re.Name:lower():find("redeem")) then
                re:FireServer(code)
                task.wait(0.5)
                redeemed = redeemed + 1
                return true
            end
        end
        return false
    end

    for _, code in ipairs(Codes) do
        TryRedeem(code)
    end

    task.delay(0.5, function()
        SetStatus("Redeemed " .. redeemed .. " codes", Color3.fromRGB(80, 200, 110))
    end)
end)

MakeSectionLabel(CodesPanel, "KNOWN ACTIVE CODES")

for _, code in ipairs(Codes) do
    MakeButton(CodesPanel, "Copy", code, function()
        setclipboard(code)
        SetStatus("Copied: " .. code, Color3.fromRGB(100, 180, 255))
    end)
end

MakeSectionLabel(CodesPanel, "CUSTOM CODE")

-- Custom code input row
local inputRow = Instance.new("Frame")
inputRow.Size = UDim2.new(0, 390, 0, 46)
inputRow.BackgroundColor3 = Color3.fromRGB(28, 28, 36)
inputRow.BorderSizePixel = 0
inputRow.Parent = CodesPanel
local irc = Instance.new("UICorner")
irc.CornerRadius = UDim.new(0, 8)
irc.Parent = inputRow

local codeBox = Instance.new("TextBox")
codeBox.Size = UDim2.new(0, 240, 0, 28)
codeBox.Position = UDim2.new(0, 10, 0.5, -14)
codeBox.BackgroundColor3 = Color3.fromRGB(40, 40, 54)
codeBox.PlaceholderText = "Enter custom code..."
codeBox.PlaceholderColor3 = Color3.fromRGB(100, 100, 120)
codeBox.Text = ""
codeBox.TextColor3 = Color3.fromRGB(220, 220, 220)
codeBox.TextSize = 12
codeBox.Font = Enum.Font.Gotham
codeBox.BorderSizePixel = 0
codeBox.ClearTextOnFocus = false
codeBox.Parent = inputRow
local cbc = Instance.new("UICorner")
cbc.CornerRadius = UDim.new(0, 6)
cbc.Parent = codeBox

local sendBtn = Instance.new("TextButton")
sendBtn.Size = UDim2.new(0, 80, 0, 28)
sendBtn.Position = UDim2.new(1, -90, 0.5, -14)
sendBtn.BackgroundColor3 = Color3.fromRGB(60, 150, 220)
sendBtn.Text = "Redeem"
sendBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
sendBtn.TextSize = 12
sendBtn.Font = Enum.Font.GothamBold
sendBtn.BorderSizePixel = 0
sendBtn.Parent = inputRow
local sbc = Instance.new("UICorner")
sbc.CornerRadius = UDim.new(0, 6)
sbc.Parent = sendBtn

sendBtn.MouseButton1Click:Connect(function()
    local code = codeBox.Text
    if code == "" then return end
    SetStatus("Trying: " .. code, Color3.fromRGB(220, 180, 60))
    -- Try GUI submission
    for _, gui in ipairs(PlayerGui:GetDescendants()) do
        if gui:IsA("TextBox") and gui ~= codeBox and gui.PlaceholderText:lower():find("code") then
            gui.Text = code
            local parent = gui.Parent
            for _, child in ipairs(parent:GetDescendants()) do
                if child:IsA("TextButton") and child.Text:lower():find("enter") then
                    child:Activate()
                    break
                end
            end
        end
    end
    -- Try remote
    for _, re in ipairs(ReplicatedStorage:GetDescendants()) do
        if re:IsA("RemoteEvent") and re.Name:lower():find("code") then
            re:FireServer(code)
        end
    end
    task.delay(0.6, function()
        SetStatus("Sent code: " .. code, Color3.fromRGB(80, 200, 110))
    end)
end)

-- ══════════════════════════════════════════════
-- LOOPS
-- ══════════════════════════════════════════════

-- Auto Collect loop
task.spawn(function()
    while true do
        task.wait(2)
        if Hub.AutoCollect then
            pcall(function()
                local char = LocalPlayer.Character
                if not char then return end
                for _, obj in ipairs(workspace:GetDescendants()) do
                    if obj:IsA("ProximityPrompt") then
                        local pp = obj.Parent
                        if pp and pp:IsA("BasePart") then
                            local root = char:FindFirstChild("HumanoidRootPart")
                            if root and (pp.Position - root.Position).Magnitude < 35 then
                                fireproximityprompt(obj)
                            end
                        end
                    end
                end
            end)
        end
    end
end)

-- Auto Hatch loop
task.spawn(function()
    while true do
        task.wait(3)
        if Hub.AutoHatch then
            pcall(function()
                for _, obj in ipairs(workspace:GetDescendants()) do
                    if obj:IsA("ProximityPrompt") and obj.ActionText:lower():find("hatch") then
                        fireproximityprompt(obj)
                    end
                end
            end)
        end
    end
end)

-- Auto Buy Egg loop
task.spawn(function()
    while true do
        task.wait(4)
        if Hub.AutoBuyEgg then
            pcall(function()
                for _, re in ipairs(ReplicatedStorage:GetDescendants()) do
                    if re:IsA("RemoteEvent") and (re.Name:lower():find("buy") or re.Name:lower():find("egg") or re.Name:lower():find("purchase")) then
                        re:FireServer()
                        break
                    end
                end
                -- Also try proximity prompts tagged as shops
                for _, obj in ipairs(workspace:GetDescendants()) do
                    if obj:IsA("ProximityPrompt") and (obj.ActionText:lower():find("buy") or obj.ObjectText:lower():find("egg")) then
                        fireproximityprompt(obj)
                    end
                end
            end)
        end
    end
end)

-- Auto Boss loop
task.spawn(function()
    while true do
        task.wait(1)
        if Hub.AutoBoss then
            pcall(function()
                local char = LocalPlayer.Character
                if not char then return end
                local root = char:FindFirstChild("HumanoidRootPart")
                if not root then return end
                for _, obj in ipairs(workspace:GetDescendants()) do
                    if obj.Name:lower():find("boss") and obj:IsA("Model") then
                        local bossRoot = obj:FindFirstChild("HumanoidRootPart") or obj:FindFirstChildWhichIsA("BasePart")
                        if bossRoot then
                            root.CFrame = CFrame.new(bossRoot.Position + Vector3.new(0, 0, 4))
                        end
                        -- Try to fire attack remotes
                        for _, re in ipairs(ReplicatedStorage:GetDescendants()) do
                            if re:IsA("RemoteEvent") and (re.Name:lower():find("attack") or re.Name:lower():find("boss") or re.Name:lower():find("hit")) then
                                re:FireServer(obj)
                                break
                            end
                        end
                    end
                end
            end)
        end
    end
end)

-- Speed hack persistence
task.spawn(function()
    while true do
        task.wait(0.5)
        if Hub.SpeedHack then
            local char = LocalPlayer.Character
            if char and char:FindFirstChild("Humanoid") then
                char.Humanoid.WalkSpeed = Hub.SpeedValue
            end
        end
    end
end)

-- No clip loop
task.spawn(function()
    while true do
        task.wait(0.1)
        if Hub._noclip then
            local char = LocalPlayer.Character
            if char then
                for _, part in ipairs(char:GetDescendants()) do
                    if part:IsA("BasePart") then
                        part.CanCollide = false
                    end
                end
            end
        end
    end
end)

-- Weather alert detector
task.spawn(function()
    while true do
        task.wait(5)
        if Hub.WeatherAlert then
            pcall(function()
                local lighting = game:GetService("Lighting")
                for _, obj in ipairs(workspace:GetDescendants()) do
                    if obj.Name:lower():find("weather") or obj.Name:lower():find("rain") or obj.Name:lower():find("storm") or obj.Name:lower():find("snow") then
                        SetStatus("⚠ Weather event detected!", Color3.fromRGB(255, 200, 60))
                        return
                    end
                end
            end)
        end
    end
end)

-- Auto code redeemer (periodic)
task.spawn(function()
    while true do
        task.wait(60)
        if Hub.AutoCode then
            for _, re in ipairs(ReplicatedStorage:GetDescendants()) do
                if re:IsA("RemoteEvent") and re.Name:lower():find("code") then
                    for _, code in ipairs(Codes) do
                        re:FireServer(code)
                        task.wait(0.5)
                    end
                end
            end
        end
    end
end)

-- ══════════════════════════════════════════════
-- DRAGGABLE WINDOW
-- ══════════════════════════════════════════════
local function MakeDraggable(frame, handle)
    local dragging, dragInput, mousePos, framePos = false, nil, nil, nil
    handle.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
            dragging = true
            mousePos = input.Position
            framePos = frame.Position
            input.Changed:Connect(function()
                if input.UserInputState == Enum.UserInputState.End then
                    dragging = false
                end
            end)
        end
    end)
    handle.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
            frame.Position = UDim2.new(
                framePos.X.Scale,
                framePos.X.Offset + delta.X,
                framePos.Y.Scale,
                framePos.Y.Offset + delta.Y
            )
        end
    end)
end

MakeDraggable(MainFrame, TitleBar)

-- ══════════════════════════════════════════════
-- MINIMIZE / CLOSE
-- ══════════════════════════════════════════════
local minimized = false
MinBtn.MouseButton1Click:Connect(function()
    minimized = not minimized
    if minimized then
        TweenService:Create(MainFrame, TweenInfo.new(0.25, Enum.EasingStyle.Quart), {Size = UDim2.new(0, 420, 0, 48)}):Play()
        MinBtn.Text = "▲"
    else
        TweenService:Create(MainFrame, TweenInfo.new(0.25, Enum.EasingStyle.Quart), {Size = UDim2.new(0, 420, 0, 520)}):Play()
        MinBtn.Text = "—"
    end
end)

CloseBtn.MouseButton1Click:Connect(function()
    TweenService:Create(MainFrame, TweenInfo.new(0.2), {BackgroundTransparency = 1}):Play()
    task.delay(0.2, function() ScreenGui:Destroy() end)
end)

-- ══════════════════════════════════════════════
-- KEYBIND: RSHIFT to toggle visibility
-- ══════════════════════════════════════════════
UserInputService.InputBegan:Connect(function(input, processed)
    if not processed and input.KeyCode == Enum.KeyCode.RightShift then
        MainFrame.Visible = not MainFrame.Visible
    end
end)

-- ══════════════════════════════════════════════
-- OPEN ANIMATION
-- ══════════════════════════════════════════════
MainFrame.BackgroundTransparency = 1
MainFrame.Size = UDim2.new(0, 420, 0, 0)
TweenService:Create(MainFrame, TweenInfo.new(0.35, Enum.EasingStyle.Back, Enum.EasingDirection.Out), {
    BackgroundTransparency = 0,
    Size = UDim2.new(0, 420, 0, 520)
}):Play()

SetStatus("Capybara Hub loaded — RShift to toggle", Color3.fromRGB(80, 200, 110))
print("[CAPYBARA HUB] Loaded. RShift = toggle UI.")

Features & Information

Amazing Script Hub For Capybaras Vs Plants. Jesh Capybara Hub v1.0 _______________________________ Farm _____________ Auto Collect Money Auto Buy Best Egg Auto Place Capybara Auto Boss Fight Speed Hack 16 - 100 _____________ Hatch Auto Hatch Eggs Weather Alert Scan for Active Mutations __________________ Misc Fullbright Reset Lighting Rejoin No Clip Infinite Jump Server Hop __________ Codes Auto Redeem Newest Codes Custom Code Redeem Redeem All Button __________________ Jesh Capybara Hub v.1.0 Completly Free!

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts