CCCPaste

Fisch script

-- Fisch Hub by JayRBLX Scripts (Reorganized & Enhanced)
local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))()
local Window = Fluent:CreateWindow({
    Title = "Fisch Hub • by JayRBLX Scripts",
    TabWidth = 160,
    Size = UDim2.fromOffset(620, 500),
    Acrylic = true,
    Theme = "Dark"
})

local Tabs = {
    Home = Window:AddTab({ Title = "Home" }),
    Fishing = Window:AddTab({ Title = "Fishing" }),
    Other = Window:AddTab({ Title = "Other" }),
    Teleport = Window:AddTab({ Title = "Teleport" })
}

-- Home Tab
Tabs.Home:AddParagraph({
    Title = "Fisch Hub",
    Content = "Fully reorganized script by JayRBLX Scripts!\n• Auto Cast + Shake = Infinite Fish\n• All Islands Teleports\n• ESP, Fly, NoClip & More\nEnjoy responsibly!"
})

-- Variables
local AutoCast = false
local AutoShake = false
local NoClip = false
local MapESP = {}

-- AUTO CAST (New - Replaces Reel)
spawn(function()
    local vim = game:GetService("VirtualInputManager")
    while wait(1) do
        if AutoCast then
            local player = game.Players.LocalPlayer
            local pgui = player.PlayerGui
            local castBtn = nil
            -- Smart detection for Cast button
            for _, gui in pairs(pgui:GetDescendants()) do
                if (gui:IsA("TextButton") or gui:IsA("ImageButton")) and 
                   (string.find(gui.Name:lower(), "cast") or string.find(gui.Text:lower(), "cast")) and 
                   gui.Visible and gui.Parent.Visible then
                    castBtn = gui
                    break
                end
            end
            -- Fallback: Fishing GUI Cast
            if not castBtn then
                local fishingGui = pgui:FindFirstChild("Fishing") or pgui:FindFirstChild("FishingGUI") or pgui:FindFirstChild("RodUI")
                if fishingGui then
                    castBtn = fishingGui:FindFirstChild("Cast", true) or fishingGui:FindFirstChild("CastButton", true)
                end
            end
            if castBtn then
                local pos = castBtn.AbsolutePosition + castBtn.AbsoluteSize / 2
                vim:SendMouseButtonEvent(pos.X, pos.Y, 0, true, game, 1)
                wait(0.05)
                vim:SendMouseButtonEvent(pos.X, pos.Y, 0, false, game, 1)
                Fluent:Notify({Title = "Auto Cast", Content = "Cast sent!", Duration = 1})
            end
        end
    end
end)

-- AUTO SHAKE (Perfect)
spawn(function()
    local vim = game:GetService("VirtualInputManager")
    while wait(0.03) do
        if AutoShake then
            local player = game.Players.LocalPlayer
            local pgui = player:WaitForChild("PlayerGui")
            local shakeGui = pgui:FindFirstChild("ShakeMinigame") or pgui:FindFirstChild("ShakeGUI") or pgui:FindFirstChild("Shake")
            if shakeGui and shakeGui.Enabled then
                local button = shakeGui:FindFirstChild("ShakeButton") or shakeGui:FindFirstChildWhichIsA("ImageButton") or shakeGui:FindFirstChildWhichIsA("TextButton")
                if button and button.Visible then
                    local pos = button.AbsolutePosition + button.AbsoluteSize / 2
                    vim:SendMouseButtonEvent(pos.X, pos.Y, 0, true, game, 1)
                    wait(0.02)
                    vim:SendMouseButtonEvent(pos.X, pos.Y, 0, false, game, 1)
                end
            end
        end
    end
end)

-- Fishing Tab
local FishingSection = Tabs.Fishing:AddSection("Fishing Automation")

-- BIG AUTO CATCH TOGGLE
local AutoCatchToggle = FishingSection:AddToggle("AutoCatch", {
    Title = "🚀 Auto Catch (Cast + Shake)",
    Default = false,
    Description = "Full auto fishing - infinite legendaries!",
    Callback = function(v)
        AutoCast = v
        AutoShake = v
        if v then
            Fluent:Notify({Title = "Auto Catch", Content = "ON • Catching fish automatically!", Duration = 4})
        end
    end
})
AutoCatchToggle:AddKeybind()

FishingSection:AddToggle("AutoCastOnly", {Title = "Auto Cast Only", Default = false, Callback = function(v) AutoCast = v end})
FishingSection:AddToggle("AutoShakeOnly", {Title = "Auto Shake Only", Default = false, Callback = function(v) AutoShake = v end})

-- Other Tab
local MovementSec = Tabs.Other:AddSection("Movement")
local VisualSec = Tabs.Other:AddSection("Visuals")

-- Movement
MovementSec:AddSlider("WalkSpeed", {
    Title = "Walk Speed", Min = 16, Max = 300, Default = 16, 
    Callback = function(v)
        local char = game.Players.LocalPlayer.Character
        if char and char:FindFirstChild("Humanoid") then
            char.Humanoid.WalkSpeed = v
        end
    end
})

MovementSec:AddButton({
    Title = "Fly (Mobile/PC)",
    Callback = function()
        loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Gui-Fly-v3-37111"))()
    end
})

MovementSec:AddToggle("NoClip", {
    Title = "No Clip",
    Default = false,
    Callback = function(v)
        NoClip = v
        local char = game.Players.LocalPlayer.Character
        if char then
            for _, part in pairs(char:GetDescendants()) do
                if part:IsA("BasePart") then
                    part.CanCollide = not v
                end
            end
        end
    end
})

spawn(function()
    local rs = game:GetService("RunService")
    rs.Heartbeat:Connect(function()
        if NoClip then
            local char = game.Players.LocalPlayer.Character
            if char then
                for _, part in pairs(char:GetDescendants()) do
                    if part:IsA("BasePart") and part ~= char.HumanoidRootPart then
                        part.CanCollide = false
                    end
                end
            end
        end
    end)
end)

-- Visuals
VisualSec:AddToggle("PlayerESP", {
    Title = "Player ESP",
    Default = false,
    Callback = function(v)
        loadstring(game:HttpGet("https://raw.githubusercontent.com/ic3w0lf22/Unnamed-ESP/main/Unsupported/UnnamedESP.lua"))().load({players = v})
    end
})

VisualSec:AddToggle("MapESP", {
    Title = "Map ESP",
    Default = false,
    Callback = function(v)
        if v then
            -- Clear old
            for _, esp in pairs(MapESP) do esp:Destroy() end
            MapESP = {}
            -- Island names to ESP
            local islands = {"Moosewood", "MushgroveSwamp", "RoslitBay", "SnowcapIsland", "SunstoneIsland", "TerrapinIsland", "ForsakenShores", "AncientIsle", "GrandReef", "StatueOfSovereignty"}
            for _, islandName in pairs(islands) do
                local model = workspace:FindFirstChild(islandName:gsub(" ", ""))
                if model then
                    local head = model:FindFirstChild("Head") or model.PrimaryPart or model:FindFirstChildOfClass("Part")
                    if head then
                        local bb = Instance.new("BillboardGui")
                        bb.Adornee = head
                        bb.Size = UDim2.new(0, 200, 0, 50)
                        bb.StudsOffset = Vector3.new(0, 3, 0)
                        bb.Parent = head
                        local label = Instance.new("TextLabel")
                        label.Size = UDim2.new(1, 0, 1, 0)
                        label.BackgroundTransparency = 1
                        label.Text = islandName
                        label.TextColor3 = Color3.new(0, 1, 0)
                        label.TextStrokeTransparency = 0
                        label.TextScaled = true
                        label.Font = Enum.Font.GothamBold
                        label.Parent = bb
                        table.insert(MapESP, bb)
                    end
                end
            end
        else
            for _, esp in pairs(MapESP) do esp:Destroy() end
            MapESP = {}
        end
    end
})

-- Teleport Tab
local TeleSec = Tabs.Teleport:AddSection("All Islands")
local tpPositions = {
    ["Moosewood"] = Vector3.new(400, 135, 250),
    ["Mushgrove Swamp"] = Vector3.new(2420, 135, -750),
    ["Roslit Bay"] = Vector3.new(-1600, 130, 500),
    ["Snowcap Island"] = Vector3.new(2625, 135, 2370),
    ["Sunstone Island"] = Vector3.new(-870, 135, -1100),
    ["Terrapin Island"] = Vector3.new(-95, 130, 1875),
    ["Statue of Sovereignty"] = Vector3.new(35, 135, -1010),
    ["Forsaken Shores"] = Vector3.new(-2750, 130, 1450),
    ["Harvester's Spike"] = Vector3.new(-1260, 135, 1550),
    ["The Arch"] = Vector3.new(1100, 130, -1250),
    ["Birch Cay"] = Vector3.new(1650, 130, -2350),
    ["Haddock Rock"] = Vector3.new(-500, 125, -505),
    ["Earmark Island"] = Vector3.new(1200, 130, 530),
    ["Desolate Deep"] = Vector3.new(-800, 130, -3100),
    ["Ancient Isle"] = Vector3.new(6000, 200, 300),
    ["Grand Reef"] = Vector3.new(-3555, 150, 510),
    ["Atlantis"] = Vector3.new(-2427, 133, 1557)
}

TeleSec:AddDropdown("TPDropdown", {
    Title = "Teleport to Island",
    Values = {"Moosewood", "Mushgrove Swamp", "Roslit Bay", "Snowcap Island", "Sunstone Island", "Terrapin Island", "Statue of Sovereignty", "Forsaken Shores", "Harvester's Spike", "The Arch", "Birch Cay", "Haddock Rock", "Earmark Island", "Desolate Deep", "Ancient Isle", "Grand Reef", "Atlantis"},
    Multi = false,
    Default = "Moosewood",
    Callback = function(value)
        local char = game.Players.LocalPlayer.Character
        if char and char:FindFirstChild("HumanoidRootPart") then
            char.HumanoidRootPart.CFrame = CFrame.new(tpPositions[value])
            Fluent:Notify({Title = "Teleport", Content = "Teleported to " .. value .. "!", Duration = 3})
        end
    end
})

Fluent:Notify({
    Title = "Fisch Hub Loaded!",
    Content = "All tabs reorganized • Auto Cast added • Enjoy by JayRBLX Scripts!",
    Duration = 8
})