Dark Spawner Script
HomeGamesTrendingExecutors
Dark Spawner Script

The best community driven platform for finding the latest Roblox scripts. Create, share, and discover amazing scripts.

Scripts
130+
Games
64+
Votes cast
1,679+

Quick Links

  • How to Use
  • Games
  • Trending Scripts
  • Executors
  • FAQs

Community

Links coming soon.

Contact

  • [email protected]
  • Report a script

© 2026 Dark Spawner Script. All rights reserved.

About UsPrivacy PolicyDisclaimer
Home›Games›Shogun's Reign

Shogun Tools Script Shogun's Reign [NO KEY]: AFK Auto Fish

Shogun's Reign•6 hours ago
0 views
Shogun Tools Script Shogun's Reign [NO KEY]: AFK Auto Fish
No Key
  • Working
  • updated 6 hours ago
  • No key
  • tested on Delta, Xeno
T

Team Darkspawner

Hub: Shogun Tools

Play Game Game Link

Description

Use this Shogun Tools hub for Shogun's Reign Roblox!! Now you can get features like Auto Sleep When Tired, Instant Bite Reel In, AFK Auto Fishing Loop, Auto Equip Rod and Nearest Fishing Spot Finder, and More!!

Shogun Tools is a tiny panel with a single Auto Fish button, which showed ON in green, and a line under it that counts casts, caught, miss and sleep, all at 0 when it starts. Spawn in as a Fisher, stand next to the water with your rod and switch it on. It picks the closest fishing spot within 12 studs, casts, waits up to 20 seconds for a bite and reels in the moment the bite comes, with a one second pause between casts. When your character says it is tired, the script sends you to sleep, then equips the rod again and carries on, so you can leave it running AFK for a long time. The code is open source and made only for this game. No key on this one, so paste the script and go!!

Features

  • +AFK Auto Fishing Loop
  • +Instant Bite Reel In
  • +Auto Sleep When Tired
  • +Auto Equip Rod
  • +Nearest Fishing Spot Finder
  • +Cast Retry and Timeout Safety
  • +Live Catch Tracker
Shogun's Reign

Shogun's Reign

Explore more scripts for this game (1)

Script

Raw Download
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")

local plr = Players.LocalPlayer
local fishingRemote = ReplicatedStorage:WaitForChild("Events"):WaitForChild("Activities"):WaitForChild("Fishing")

-- Edit config here
local CONFIG = {
    CastRetryDelay = 1.0,    -- pause between casts
    CastTimeout = 20,        -- max seconds to wait for Bite/CastEnded
    SpotMaxDist = 12,        -- max distance to fire prompt from
}

getgenv().AutoFish = false
getgenv().NeedsSleep = false
getgenv().ShogunRunId = (getgenv().ShogunRunId or 0) + 1
local RUN_ID = getgenv().ShogunRunId
local function stillMine() return getgenv().ShogunRunId == RUN_ID end

if type(getgenv().ShogunConns) == "table" then
    for _, c in ipairs(getgenv().ShogunConns) do
        pcall(function() c:Disconnect() end)
    end
end
getgenv().ShogunConns = {}


local function getPrompt()
    local folder = workspace:FindFirstChild("World")
        and workspace.World:FindFirstChild("Interactables")
        and workspace.World.Interactables:FindFirstChild("Fish")
    if not folder then return nil, nil, math.huge end

    local plrChar = plr.Character
    local hrp = plrChar and plrChar:FindFirstChild("HumanoidRootPart")
    if not hrp then return nil, nil, math.huge end

    local best, bestPrompt, bestDist
    for _, spot in ipairs(folder:GetChildren()) do
        if spot:IsA("BasePart") then
            local d = (spot.Position - hrp.Position).Magnitude
            if not bestDist or d < bestDist then
                best = spot
                bestDist = d
                bestPrompt = spot:FindFirstChildOfClass("ProximityPrompt")
            end
        end
    end
    return bestPrompt, best, bestDist
end

local function ensureRodEquipped()
    local ch = plr.Character
    if not ch then return end
    local hum = ch:FindFirstChildOfClass("Humanoid")
    if not hum then return end

    local held = ch:FindFirstChildOfClass("Tool")
    if held and held.Name:lower():find("rod") then return end

    local rod
    for _, tool in ipairs(plr.Backpack:GetChildren()) do
        if tool:IsA("Tool") and tool.Name:lower():find("rod") then
            rod = tool
            break
        end
    end
    if rod then
        hum:EquipTool(rod)
        task.wait(0.4)
        return
    end

    local function countFish()
        local n = 0
        for _, t in ipairs(plr.Backpack:GetChildren()) do
            if t.Name == "Fish" then n = n + 1 end
        end
        return n
    end
    local fishN = countFish()
    if fishN >= 8 then
        pcall(function()
            ReplicatedStorage.Events.Economy.Shop:FireServer("Sell", "Takeshi", { Fish = fishN })
        end)
        task.wait(0.5)
    end

    rod = nil
    for _, tool in ipairs(plr.Backpack:GetChildren()) do
        if tool:IsA("Tool") and tool.Name:lower():find("rod") then rod = tool break end
    end
    if not rod and not (ch:FindFirstChildOfClass("Tool") and ch:FindFirstChildOfClass("Tool").Name:lower():find("rod")) then
        pcall(function()
            ReplicatedStorage.Events.Economy.Shop:FireServer("Buy", "Takeshi", { ["Best Fishing Rod"] = 1 })
        end)
        task.wait(1.0)
        for _, tool in ipairs(plr.Backpack:GetChildren()) do
            if tool:IsA("Tool") and tool.Name:lower():find("rod") then rod = tool break end
        end
        if not rod then
            for _, tool in ipairs(ch:GetChildren()) do
                if tool:IsA("Tool") and tool.Name:lower():find("rod") then return end
            end
        end
    end

    if rod then
        hum:EquipTool(rod)
        task.wait(0.4)
    end
end

local events = {}
local eventsDirty = false
table.insert(getgenv().ShogunConns, fishingRemote.OnClientEvent:Connect(function(action, data)
    if not stillMine() then return end
    local token = type(data) == "table" and data.token or nil
    events[#events + 1] = { action = action, token = token }
    eventsDirty = true
    if action == "Bite" and token then
        pcall(function()
            fishingRemote:FireServer("Result", true, token)
        end)
    end
end))

do
    local thoughtRemote
    for _, d in ipairs(ReplicatedStorage.Events:GetDescendants()) do
        if d.Name == "CreateThought" and d:IsA("RemoteEvent") then
            thoughtRemote = d
            break
        end
    end
    if thoughtRemote then
        table.insert(getgenv().ShogunConns, thoughtRemote.OnClientEvent:Connect(function(msg)
            if not stillMine() then return end
            if type(msg) == "string" and msg:lower():find("tired") then
                getgenv().NeedsSleep = true
            end
        end))
    end
end

task.spawn(function()
    if not stillMine() then return end
    local stats = { casts = 0, caught = 0, misses = 0, sleeps = 0 }
    getgenv().FishStats = stats

    while stillMine() do
        if not getgenv().AutoFish then
            eventsDirty = false
            task.wait(0.1)
            continue
        end

        if getgenv().NeedsSleep then
            goToSleep()
            stats.sleeps = stats.sleeps + 1
        end

        ensureRodEquipped()

        local prompt, spot, dist = getPrompt()
        if prompt and dist <= CONFIG.SpotMaxDist then
            events = {}
            eventsDirty = false
            local ok = pcall(fireproximityprompt, prompt)
            if ok then
                stats.casts = stats.casts + 1
            end

            local t0 = os.clock()
            local gotBite, resolved = false, false
            while os.clock() - t0 < CONFIG.CastTimeout
                and stillMine() and getgenv().AutoFish
                and not resolved and not getgenv().NeedsSleep do
                if eventsDirty then
                    eventsDirty = false
                    for _, e in ipairs(events) do
                        if e.action == "Bite" then gotBite = true end
                        if e.action == "CastEnded" then resolved = true end
                    end
                end
                task.wait(0.05)
            end

            if gotBite then
                stats.caught = stats.caught + 1
            elseif resolved then
                stats.misses = stats.misses + 1
            end
        else
            if not prompt then
                warn("[AutoFish] no fishing spot found")
            else
                warn("[AutoFish] no prompt in range (dist=" .. tostring(dist) .. ")")
            end
            task.wait(CONFIG.CastRetryDelay)
        end

        task.wait(CONFIG.CastRetryDelay)
    end
end)

local function buildUI()
    local guiName = "ShogunToggleUI"
    local old = plr:FindFirstChild("PlayerGui") and plr.PlayerGui:FindFirstChild(guiName)
    if old then old:Destroy() end

    local pg = plr:WaitForChild("PlayerGui")
    local gui = Instance.new("ScreenGui")
    gui.Name = guiName
    gui.ResetOnSpawn = false
    gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
    gui.Parent = pg

    local frame = Instance.new("Frame")
    frame.Name = "Main"
    frame.Size = UDim2.fromOffset(200, 110)
    frame.Position = UDim2.new(0, 16, 0.5, -55)
    frame.BackgroundColor3 = Color3.fromRGB(22, 22, 28)
    frame.BorderSizePixel = 0
    frame.Active = true
    frame.Draggable = true
    frame.Parent = gui

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 8)
    corner.Parent = frame

    local stroke = Instance.new("UIStroke")
    stroke.Color = Color3.fromRGB(70, 70, 90)
    stroke.Thickness = 1
    stroke.Parent = frame

    local title = Instance.new("TextLabel")
    title.Name = "Title"
    title.Size = UDim2.new(1, 0, 0, 32)
    title.BackgroundColor3 = Color3.fromRGB(32, 32, 42)
    title.BorderSizePixel = 0
    title.Font = Enum.Font.GothamBold
    title.Text = "Shogun Tools"
    title.TextColor3 = Color3.fromRGB(235, 235, 245)
    title.TextSize = 14
    title.Parent = frame

    local titleCorner = Instance.new("UICorner")
    titleCorner.CornerRadius = UDim.new(0, 8)
    titleCorner.Parent = title

    local titleFix = Instance.new("Frame")
    titleFix.Size = UDim2.new(1, 0, 0, 10)
    titleFix.Position = UDim2.new(0, 0, 1, -10)
    titleFix.BackgroundColor3 = title.BackgroundColor3
    titleFix.BorderSizePixel = 0
    titleFix.Parent = title

    local function makeToggle(name, labelText, y, getFlag)
        local btn = Instance.new("TextButton")
        btn.Name = name
        btn.Size = UDim2.new(1, -24, 0, 36)
        btn.Position = UDim2.new(0, 12, 0, y)
        btn.BackgroundColor3 = Color3.fromRGB(40, 40, 52)
        btn.BorderSizePixel = 0
        btn.Font = Enum.Font.GothamSemibold
        btn.TextSize = 13
        btn.TextColor3 = Color3.fromRGB(235, 235, 245)
        btn.AutoButtonColor = true
        btn.Parent = frame

        local c = Instance.new("UICorner")
        c.CornerRadius = UDim.new(0, 6)
        c.Parent = btn

        local stateLabel = Instance.new("TextLabel")
        stateLabel.Name = "State"
        stateLabel.Size = UDim2.new(0, 52, 1, 0)
        stateLabel.Position = UDim2.new(1, -60, 0, 0)
        stateLabel.BackgroundTransparency = 1
        stateLabel.Font = Enum.Font.GothamBold
        stateLabel.TextSize = 12
        stateLabel.TextXAlignment = Enum.TextXAlignment.Right
        stateLabel.Parent = btn

        local function refresh()
            local on = getFlag() == true
            btn.Text = labelText
            btn.TextXAlignment = Enum.TextXAlignment.Left
            btn.TextTransparency = on and 0 or 0.35
            stateLabel.Text = on and "ON" or "OFF"
            stateLabel.TextColor3 = on and Color3.fromRGB(90, 220, 130) or Color3.fromRGB(220, 90, 90)
        end

        refresh()
        return btn, refresh
    end

    local btnFish, refreshFish = makeToggle("FishBtn", "Auto Fish", 44, function()
        return getgenv().AutoFish
    end)

    btnFish.Activated:Connect(function()
        getgenv().AutoFish = not getgenv().AutoFish
        refreshFish()
    end)

    local statsLabel = Instance.new("TextLabel")
    statsLabel.Name = "Stats"
    statsLabel.Size = UDim2.new(1, -24, 0, 24)
    statsLabel.Position = UDim2.new(0, 12, 1, -30)
    statsLabel.BackgroundTransparency = 1
    statsLabel.Font = Enum.Font.Gotham
    statsLabel.TextSize = 11
    statsLabel.TextColor3 = Color3.fromRGB(160, 160, 180)
    statsLabel.TextXAlignment = Enum.TextXAlignment.Left
    statsLabel.Text = "casts 0 | caught 0"
    statsLabel.Parent = frame

    task.spawn(function()
        while gui.Parent and stillMine() do
            refreshFish()
            local s = getgenv().FishStats
            if s then
                statsLabel.Text = string.format(
                    "casts %d | caught %d | miss %d | sleep %d",
                    s.casts or 0, s.caught or 0, s.misses or 0, s.sleeps or 0
                )
            end
            task.wait(0.5)
        end
    end)

    return gui
end

buildUI()

Similar Scripts

GirlMaker Script Antpocalypse: Silent Aim, Infinite Ammo

Key System • 6 hours ago

BARRAGE Script Superb Upgrade Tree: Auto Upgrade, Supernova

Key System • 6 hours ago

BARRAGE Script Piano Tiles Rush: Auto Play, Humanized Taps

Key System • 6 hours ago

Hidevin Script Hamster Village [NO KEY]: Auto Merge, Loot

No Key • 6 hours ago

Ouroboros Script Collect 1 Million Items [NO KEY]: Pusher

No Key • 6 hours ago