Description

This script is for [将] Shogun's Reign and comes with the tool auto fish to make your game more enjoyable. fully working and keyless.

Features

  • + auto fish
  • + keyless

Supported Executors

Xeno Volt Potassium Wave Delta Solara Opiumware Codex MacSploit Vega X Velocity

Script

Add Xeno Scripts as a preferred source
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 = 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()
Script worked? 🚀 Boost it to #1 so others find it too.

Comments (0)

Log in to add a comment.