AutoFish OpenSrc
Key Required

AutoFish OpenSrc

Sol's RNG [ Eon 1-29 ]09uu09uu 186 views 616 executesUpdated Aug 3, 2026
Unrated
00
Lua Script•416 lines (24418 chars)
local executorName = "" --make by 09u dont skid
pcall(function() --make by 09u dont skid
    if identifyexecutor then --make by 09u dont skid
        executorName = identifyexecutor() --make by 09u dont skid
    elseif getexecutorname then --make by 09u dont skid
        executorName = getexecutorname() --make by 09u dont skid
    end --make by 09u dont skid
end) --make by 09u dont skid

local lowerExecutorName = string.lower(tostring(executorName)) --make by 09u dont skid
local sharedEnv = getgenv and getgenv() or _G --make by 09u dont skid
local isXeno = lowerExecutorName:find("xeno") ~= nil or sharedEnv.xeno ~= nil or sharedEnv.Xeno ~= nil or sharedEnv.XENO ~= nil --make by 09u dont skid
local isSolara = lowerExecutorName:find("solara") ~= nil or sharedEnv.solara ~= nil or sharedEnv.Solara ~= nil or sharedEnv.SOLARA ~= nil --make by 09u dont skid

if isXeno or isSolara then --make by 09u dont skid
    pcall(function() --make by 09u dont skid
        game:GetService("StarterGui"):SetCore("SendNotification", { --make by 09u dont skid
            Title = "不支持此注入器", --make by 09u dont skid
            Text = "检测到注入器 " .. tostring(executorName) .. ",本脚本不支持 Xeno / Solara,请更换其他注入器", --make by 09u dont skid
            Duration = 10 --make by 09u dont skid
        }) --make by 09u dont skid
    end) --make by 09u dont skid
    return --make by 09u dont skid
end --make by 09u dont skid

getgenv().AutoFish = true --make by 09u dont skid

local Players = game:GetService("Players") --make by 09u dont skid
local ReplicatedStorage = game:GetService("ReplicatedStorage") --make by 09u dont skid
local PathfindingService = game:GetService("PathfindingService") --make by 09u dont skid
local VirtualInputManager = game:GetService("VirtualInputManager") --make by 09u dont skid

for _, module in ReplicatedStorage.Packets:GetChildren() do --make by 09u dont skid
    if module:IsA("ModuleScript") then --make by 09u dont skid
        pcall(require, module) --make by 09u dont skid
    end --make by 09u dont skid
end --make by 09u dont skid

local Fishing = require(ReplicatedStorage.Packets.Fishing) --make by 09u dont skid
local localPlayer = Players.LocalPlayer --make by 09u dont skid

local NPC_POSITION = Vector3.new(100.5, 107.5, -296.75) --make by 09u dont skid

local fishingState = getgenv().AutoFishState --make by 09u dont skid
if not fishingState then --make by 09u dont skid
    fishingState = { --make by 09u dont skid
        inventory = {}, --make by 09u dont skid
        gameEndTime = nil, --make by 09u dont skid
        fishingBegan = false, --make by 09u dont skid
        sellAcknowledged = false, --make by 09u dont skid
        lastSellRequest = nil --make by 09u dont skid
    } --make by 09u dont skid
    getgenv().AutoFishState = fishingState --make by 09u dont skid
end --make by 09u dont skid

local inventoryCountLabel = nil --make by 09u dont skid

local function getCharacter() --make by 09u dont skid
    return localPlayer.Character or localPlayer.CharacterAdded:Wait() --make by 09u dont skid
end --make by 09u dont skid

local function getHumanoid() --make by 09u dont skid
    return getCharacter():WaitForChild("Humanoid") --make by 09u dont skid
end --make by 09u dont skid

local function getRootPart() --make by 09u dont skid
    return getCharacter():WaitForChild("HumanoidRootPart") --make by 09u dont skid
end --make by 09u dont skid

local function pressJump() --make by 09u dont skid
    VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.Space, false, game) --make by 09u dont skid
    task.delay(0.12, function() --make by 09u dont skid
        VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.Space, false, game) --make by 09u dont skid
    end) --make by 09u dont skid
end --make by 09u dont skid

local function findInventoryLabel() --make by 09u dont skid
    if inventoryCountLabel and inventoryCountLabel.Parent then --make by 09u dont skid
        return inventoryCountLabel --make by 09u dont skid
    end --make by 09u dont skid
    inventoryCountLabel = nil --make by 09u dont skid
    for _, descendant in localPlayer.PlayerGui:GetDescendants() do --make by 09u dont skid
        if descendant:IsA("TextLabel") and descendant.Text:match("^Inventory% %[%d+ / %d+%]$") then --make by 09u dont skid
            inventoryCountLabel = descendant --make by 09u dont skid
            break --make by 09u dont skid
        end --make by 09u dont skid
    end --make by 09u dont skid
    return inventoryCountLabel --make by 09u dont skid
end --make by 09u dont skid

local function getInventoryCount() --make by 09u dont skid
    local label = findInventoryLabel() --make by 09u dont skid
    if label then --make by 09u dont skid
        local count, capacity = label.Text:match("^Inventory% %[(%d+) / (%d+)%]$") --make by 09u dont skid
        if count then --make by 09u dont skid
            return tonumber(count), tonumber(capacity) --make by 09u dont skid
        end --make by 09u dont skid
    end --make by 09u dont skid
    local count = 0 --make by 09u dont skid
    for _ in fishingState.inventory do --make by 09u dont skid
        count = count + 1 --make by 09u dont skid
    end --make by 09u dont skid
    return count, 20 --make by 09u dont skid
end --make by 09u dont skid

local function walkTo(targetPosition) --make by 09u dont skid
    for _ = 1, 5 do --make by 09u dont skid
        if not getgenv().AutoFish then --make by 09u dont skid
            return false --make by 09u dont skid
        end --make by 09u dont skid
        local humanoid = getHumanoid() --make by 09u dont skid
        local rootPart = getRootPart() --make by 09u dont skid
        local path = PathfindingService:CreatePath({AgentRadius = 2, AgentHeight = 5, AgentCanJump = true, WaypointSpacing = 3}) --make by 09u dont skid
        local computed = pcall(function() --make by 09u dont skid
            path:ComputeAsync(rootPart.Position, targetPosition) --make by 09u dont skid
        end) --make by 09u dont skid
        if computed and path.Status == Enum.PathStatus.Success then --make by 09u dont skid
            local waypoints = path:GetWaypoints() --make by 09u dont skid
            local pathFailed = false --make by 09u dont skid
            for waypointIndex, waypoint in ipairs(waypoints) do --make by 09u dont skid
                if not getgenv().AutoFish then --make by 09u dont skid
                    return false --make by 09u dont skid
                end --make by 09u dont skid
                local waypointStartTime = tick() --make by 09u dont skid
                local lastPosition = rootPart.Position --make by 09u dont skid
                local jumpPressed = false --make by 09u dont skid
                local waypointReached = false --make by 09u dont skid
                local climbRetries = 0 --make by 09u dont skid
                local isJumpWaypoint = waypoint.Action == Enum.PathWaypointAction.Jump --make by 09u dont skid
                while tick() - waypointStartTime < 6 do --make by 09u dont skid
                    humanoid:MoveTo(waypoint.Position) --make by 09u dont skid
                    task.wait(0.15) --make by 09u dont skid
                    local offset = rootPart.Position - waypoint.Position --make by 09u dont skid
                    local horizontalDistance = (Vector3.new(offset.X, 0, offset.Z)).Magnitude --make by 09u dont skid
                    local tolerance = waypointIndex == #waypoints and 2.5 or 4 --make by 09u dont skid
                    if isJumpWaypoint then --make by 09u dont skid
                        if horizontalDistance < 2.5 and offset.Y > -1.5 then --make by 09u dont skid
                            waypointReached = true --make by 09u dont skid
                            break --make by 09u dont skid
                        end --make by 09u dont skid
                        if not jumpPressed and horizontalDistance < 3 then --make by 09u dont skid
                            pressJump() --make by 09u dont skid
                            jumpPressed = true --make by 09u dont skid
                        end --make by 09u dont skid
                        if offset.Y < -1.5 and horizontalDistance < 3.5 and tick() - waypointStartTime > 1.2 and climbRetries < 4 then --make by 09u dont skid
                            climbRetries = climbRetries + 1 --make by 09u dont skid
                            local horizontalOffset = Vector3.new(offset.X, 0, offset.Z) --make by 09u dont skid
                            local backDirection = horizontalOffset.Magnitude > 0.5 and horizontalOffset.Unit or Vector3.new(0, 0, 1) --make by 09u dont skid
                            humanoid:MoveTo(waypoint.Position + backDirection * 5) --make by 09u dont skid
                            task.wait(0.5) --make by 09u dont skid
                            humanoid:MoveTo(waypoint.Position) --make by 09u dont skid
                            local approachStart = tick() --make by 09u dont skid
                            while tick() - approachStart < 0.7 do --make by 09u dont skid
                                task.wait(0.1) --make by 09u dont skid
                                local approachOffset = rootPart.Position - waypoint.Position --make by 09u dont skid
                                if (Vector3.new(approachOffset.X, 0, approachOffset.Z)).Magnitude < 2.8 then --make by 09u dont skid
                                    pressJump() --make by 09u dont skid
                                    break --make by 09u dont skid
                                end --make by 09u dont skid
                            end --make by 09u dont skid
                            waypointStartTime = tick() --make by 09u dont skid
                        end --make by 09u dont skid
                    elseif (horizontalDistance < tolerance and math.abs(offset.Y) < 4) or (horizontalDistance < 2 and offset.Y > -1.5) then --make by 09u dont skid
                        waypointReached = true --make by 09u dont skid
                        break --make by 09u dont skid
                    end --make by 09u dont skid
                    if (rootPart.Position - lastPosition).Magnitude < 0.3 then --make by 09u dont skid
                        pressJump() --make by 09u dont skid
                        task.wait(0.3) --make by 09u dont skid
                    end --make by 09u dont skid
                    lastPosition = rootPart.Position --make by 09u dont skid
                end --make by 09u dont skid
                if not waypointReached then --make by 09u dont skid
                    pathFailed = true --make by 09u dont skid
                    break --make by 09u dont skid
                end --make by 09u dont skid
            end --make by 09u dont skid
            if not pathFailed and (rootPart.Position - targetPosition).Magnitude < 7 then --make by 09u dont skid
                humanoid:MoveTo(rootPart.Position) --make by 09u dont skid
                return true --make by 09u dont skid
            end --make by 09u dont skid
        end --make by 09u dont skid
        task.wait(0.5) --make by 09u dont skid
    end --make by 09u dont skid
    return (getRootPart().Position - targetPosition).Magnitude < 8 --make by 09u dont skid
end --make by 09u dont skid

local function getFishingSpot() --make by 09u dont skid
    local bestSpot = nil --make by 09u dont skid
    local bestDistance = nil --make by 09u dont skid
    for _, child in workspace.Map.Miscs.FishingPoints:GetChildren() do --make by 09u dont skid
        if child:IsA("Model") and not child:GetAttribute("occupied") and child:GetAttribute("spotId") then --make by 09u dont skid
            local playerLocation = child:GetAttribute("plrLoc") --make by 09u dont skid
            if playerLocation then --make by 09u dont skid
                local distance = (playerLocation.Position - NPC_POSITION).Magnitude --make by 09u dont skid
                if not bestDistance or distance < bestDistance then --make by 09u dont skid
                    bestSpot = child --make by 09u dont skid
                    bestDistance = distance --make by 09u dont skid
                end --make by 09u dont skid
            end --make by 09u dont skid
        end --make by 09u dont skid
    end --make by 09u dont skid
    return bestSpot --make by 09u dont skid
end --make by 09u dont skid

if not getgenv().AutoFishHooked4 then --make by 09u dont skid
    getgenv().AutoFishHooked4 = true --make by 09u dont skid
    Fishing.addFish.listen(function(fish) --make by 09u dont skid
        getgenv().AutoFishState.inventory[fish.uid] = fish.id --make by 09u dont skid
    end) --make by 09u dont skid
    Fishing.removeFish.listen(function(uid) --make by 09u dont skid
        getgenv().AutoFishState.inventory[uid] = nil --make by 09u dont skid
    end) --make by 09u dont skid
    Fishing.sellAllFish.listen(function(fishId) --make by 09u dont skid
        getgenv().AutoFishState.lastSellRequest = fishId --make by 09u dont skid
        Fishing.sellAllFishConfirm.send(true) --make by 09u dont skid
    end) --make by 09u dont skid
    Fishing.sellFish.listen(function() --make by 09u dont skid
        Fishing.sellConfirm.send(true) --make by 09u dont skid
    end) --make by 09u dont skid
    Fishing.sellAllFishConfirm.listen(function() --make by 09u dont skid
        getgenv().AutoFishState.sellAcknowledged = true --make by 09u dont skid
    end) --make by 09u dont skid
    Fishing.beginFishing.listen(function() --make by 09u dont skid
        getgenv().AutoFishState.fishingBegan = true --make by 09u dont skid
    end) --make by 09u dont skid
    Fishing.playGame.listen(function(params) --make by 09u dont skid
        getgenv().AutoFishState.gameEndTime = tonumber(params.endTimestamp) --make by 09u dont skid
    end) --make by 09u dont skid
end --make by 09u dont skid

local notFishNames = {Frame = true, ImageButton = true, ImageLabel = true, TextLabel = true, TextButton = true, ScrollingFrame = true, CanvasGroup = true, ViewportFrame = true, Inventory = true, Index = true, GearIndex = true, ItemIndex = true, Dialog = true, Speaking = true, Speaker = true} --make by 09u dont skid

local function findShopWindow() --make by 09u dont skid
    local playerGui = localPlayer.PlayerGui --make by 09u dont skid
    local shopLabel = nil --make by 09u dont skid
    for _, descendant in playerGui:GetDescendants() do --make by 09u dont skid
        if descendant:IsA("TextLabel") and descendant.Text:find("Fishing Shop") then --make by 09u dont skid
            shopLabel = descendant --make by 09u dont skid
            break --make by 09u dont skid
        end --make by 09u dont skid
    end --make by 09u dont skid
    if not shopLabel then --make by 09u dont skid
        return nil --make by 09u dont skid
    end --make by 09u dont skid
    local node = shopLabel --make by 09u dont skid
    for _ = 1, 10 do --make by 09u dont skid
        node = node.Parent --make by 09u dont skid
        if not node then --make by 09u dont skid
            return nil --make by 09u dont skid
        end --make by 09u dont skid
        for _, descendant in node:GetDescendants() do --make by 09u dont skid
            if descendant:IsA("GuiButton") then --make by 09u dont skid
                local text = "" --make by 09u dont skid
                if descendant:IsA("TextButton") then --make by 09u dont skid
                    text = descendant.Text --make by 09u dont skid
                else --make by 09u dont skid
                    local textLabel = descendant:FindFirstChildWhichIsA("TextLabel", true) --make by 09u dont skid
                    text = textLabel and textLabel.Text or "" --make by 09u dont skid
                end --make by 09u dont skid
                if text == "Sell All" then --make by 09u dont skid
                    return node --make by 09u dont skid
                end --make by 09u dont skid
            end --make by 09u dont skid
        end --make by 09u dont skid
    end --make by 09u dont skid
    return nil --make by 09u dont skid
end --make by 09u dont skid

local function collectOwnedFishIds() --make by 09u dont skid
    local fishIds = {} --make by 09u dont skid
    for _, fishId in fishingState.inventory do --make by 09u dont skid
        fishIds[fishId] = true --make by 09u dont skid
    end --make by 09u dont skid
    local shopWindow = findShopWindow() --make by 09u dont skid
    if shopWindow then --make by 09u dont skid
        for _, descendant in shopWindow:GetDescendants() do --make by 09u dont skid
            if descendant:IsA("Frame") and not notFishNames[descendant.Name] and descendant:FindFirstChildWhichIsA("ViewportFrame", true) then --make by 09u dont skid
                fishIds[descendant.Name] = true --make by 09u dont skid
            end --make by 09u dont skid
        end --make by 09u dont skid
    end --make by 09u dont skid
    if not next(fishIds) then --make by 09u dont skid
        for _, descendant in localPlayer.PlayerGui:GetDescendants() do --make by 09u dont skid
            if descendant:IsA("Frame") and not notFishNames[descendant.Name] and descendant:FindFirstChildWhichIsA("ViewportFrame", true) then --make by 09u dont skid
                fishIds[descendant.Name] = true --make by 09u dont skid
            end --make by 09u dont skid
        end --make by 09u dont skid
    end --make by 09u dont skid
    return fishIds --make by 09u dont skid
end --make by 09u dont skid

local function sellAllFish() --make by 09u dont skid
    while getgenv().AutoFish do --make by 09u dont skid
        local count = getInventoryCount() --make by 09u dont skid
        if count == 0 then --make by 09u dont skid
            return true --make by 09u dont skid
        end --make by 09u dont skid
        if not walkTo(NPC_POSITION) then --make by 09u dont skid
            task.wait(1) --make by 09u dont skid
        else --make by 09u dont skid
            for fishId in collectOwnedFishIds() do --make by 09u dont skid
                if not getgenv().AutoFish then --make by 09u dont skid
                    return false --make by 09u dont skid
                end --make by 09u dont skid
                for _ = 1, 3 do --make by 09u dont skid
                    local countBefore = getInventoryCount() --make by 09u dont skid
                    fishingState.sellAcknowledged = false --make by 09u dont skid
                    Fishing.sellAllFish.send(fishId) --make by 09u dont skid
                    local sendTime = tick() --make by 09u dont skid
                    while not fishingState.sellAcknowledged and tick() - sendTime < 1 do --make by 09u dont skid
                        task.wait(0.05) --make by 09u dont skid
                    end --make by 09u dont skid
                    if getInventoryCount() < countBefore then --make by 09u dont skid
                        break --make by 09u dont skid
                    end --make by 09u dont skid
                end --make by 09u dont skid
            end --make by 09u dont skid
            task.wait(0.3) --make by 09u dont skid
        end --make by 09u dont skid
    end --make by 09u dont skid
    return false --make by 09u dont skid
end --make by 09u dont skid

local function fishOnce(spot) --make by 09u dont skid
    fishingState.gameEndTime = nil --make by 09u dont skid
    fishingState.fishingBegan = false --make by 09u dont skid
    Fishing.start.send(spot:GetAttribute("spotId")) --make by 09u dont skid
    local startTime = tick() --make by 09u dont skid
    while getgenv().AutoFish and not fishingState.fishingBegan and tick() - startTime < 8 do --make by 09u dont skid
        task.wait(0.1) --make by 09u dont skid
    end --make by 09u dont skid
    if not fishingState.fishingBegan then --make by 09u dont skid
        Fishing.quit.send() --make by 09u dont skid
        task.wait(0.5) --make by 09u dont skid
        return --make by 09u dont skid
    end --make by 09u dont skid
    startTime = tick() --make by 09u dont skid
    while getgenv().AutoFish and not fishingState.gameEndTime and tick() - startTime < 60 do --make by 09u dont skid
        task.wait(0.1) --make by 09u dont skid
    end --make by 09u dont skid
    if not fishingState.gameEndTime then --make by 09u dont skid
        Fishing.quit.send() --make by 09u dont skid
        task.wait(0.5) --make by 09u dont skid
        return --make by 09u dont skid
    end --make by 09u dont skid
    while getgenv().AutoFish and workspace:GetServerTimeNow() < fishingState.gameEndTime - 0.35 do --make by 09u dont skid
        task.wait(0.02) --make by 09u dont skid
    end --make by 09u dont skid
    Fishing.gameResult.send(true) --make by 09u dont skid
    task.wait(1) --make by 09u dont skid
end --make by 09u dont skid

local resultScreenTexts = {["Fish Caught!"] = true, ["Fishing Failed"] = true, ["Fish Caught...?"] = true} --make by 09u dont skid

task.spawn(function() --make by 09u dont skid
    local watchedPanel = nil --make by 09u dont skid
    local watchConnection = nil --make by 09u dont skid
    while getgenv().AutoFish do --make by 09u dont skid
        local mainInterface = localPlayer.PlayerGui:FindFirstChild("MainInterface") --make by 09u dont skid
        local resultPanel = nil --make by 09u dont skid
        if mainInterface then --make by 09u dont skid
            for _, descendant in mainInterface:GetDescendants() do --make by 09u dont skid
                if descendant:IsA("TextLabel") and resultScreenTexts[descendant.Text] then --make by 09u dont skid
                    resultPanel = descendant.Parent --make by 09u dont skid
                    break --make by 09u dont skid
                end --make by 09u dont skid
            end --make by 09u dont skid
        end --make by 09u dont skid
        if resultPanel and resultPanel:IsA("ImageLabel") then --make by 09u dont skid
            if resultPanel.Visible then --make by 09u dont skid
                resultPanel.Visible = false --make by 09u dont skid
            end --make by 09u dont skid
            if resultPanel ~= watchedPanel then --make by 09u dont skid
                if watchConnection then --make by 09u dont skid
                    watchConnection:Disconnect() --make by 09u dont skid
                end --make by 09u dont skid
                watchedPanel = resultPanel --make by 09u dont skid
                watchConnection = resultPanel:GetPropertyChangedSignal("Visible"):Connect(function() --make by 09u dont skid
                    if watchedPanel.Visible then --make by 09u dont skid
                        watchedPanel.Visible = false --make by 09u dont skid
                    end --make by 09u dont skid
                end) --make by 09u dont skid
            end --make by 09u dont skid
        end --make by 09u dont skid
        task.wait(1) --make by 09u dont skid
    end --make by 09u dont skid
    if watchConnection then --make by 09u dont skid
        watchConnection:Disconnect() --make by 09u dont skid
    end --make by 09u dont skid
end) --make by 09u dont skid

task.spawn(function() --make by 09u dont skid
    while getgenv().AutoFish do --make by 09u dont skid
        local count, capacity = getInventoryCount() --make by 09u dont skid
        if count >= capacity then --make by 09u dont skid
            sellAllFish() --make by 09u dont skid
        else --make by 09u dont skid
            local spot = getFishingSpot() --make by 09u dont skid
            if spot then --make by 09u dont skid
                local playerLocation = spot:GetAttribute("plrLoc") --make by 09u dont skid
                if (getRootPart().Position - playerLocation.Position).Magnitude > 7 then --make by 09u dont skid
                    walkTo(playerLocation.Position) --make by 09u dont skid
                end --make by 09u dont skid
                if (getRootPart().Position - playerLocation.Position).Magnitude <= 10 then --make by 09u dont skid
                    fishOnce(spot) --make by 09u dont skid
                else --make by 09u dont skid
                    task.wait(1) --make by 09u dont skid
                end --make by 09u dont skid
            else --make by 09u dont skid
                task.wait(2) --make by 09u dont skid
            end --make by 09u dont skid
        end --make by 09u dont skid
        task.wait(0.3) --make by 09u dont skid
    end --make by 09u dont skid
end) --make by 09u dont skid

Features & Information

wegonbeback

Community Comments (0)

No comments yet for this script.

More Scripts for Sol's RNG [ Eon 1-29 ]