Open source fish and chests esp
Key Required

Open source fish and chests esp

AbyssGodOfThePurpleGodOfThePurple 1.2K views 14 executesUpdated Feb 11, 2026
5.0/ 5(1 votes)
10100% Positive
Lua Script•574 lines (18425 chars)
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")

local CONFIG = {
    Colors = {
        Background = Color3.fromRGB(25, 25, 35),
        BackgroundSecondary = Color3.fromRGB(35, 35, 45),
        Accent = Color3.fromRGB(0, 170, 255),
        ChestT1 = Color3.fromRGB(169, 169, 169),
        ChestT2 = Color3.fromRGB(255, 215, 0),
        ChestT3 = Color3.fromRGB(255, 140, 0),
        Text = Color3.fromRGB(255, 255, 255),
        TextSecondary = Color3.fromRGB(200, 200, 200),
        ToggleOn = Color3.fromRGB(0, 255, 100),
        ToggleOff = Color3.fromRGB(255, 50, 50),
    },
    Font = Enum.Font.GothamBold,
    TextSize = 14
}

local screenGui = Instance.new("ScreenGui")
screenGui.Name = "FishESP"
screenGui.Parent = playerGui
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling

local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 320, 0, 280)
mainFrame.Position = UDim2.new(0.5, -160, 0.5, -140)
mainFrame.BackgroundColor3 = CONFIG.Colors.Background
mainFrame.BorderSizePixel = 0
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui

local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, 12)
uiCorner.Parent = mainFrame

local titleFrame = Instance.new("Frame")
titleFrame.Name = "TitleFrame"
titleFrame.Size = UDim2.new(1, 0, 0, 40)
titleFrame.BackgroundColor3 = CONFIG.Colors.BackgroundSecondary
titleFrame.BorderSizePixel = 0
titleFrame.Parent = mainFrame

local titleCorner = Instance.new("UICorner")
titleCorner.CornerRadius = UDim.new(0, 12)
titleCorner.Parent = titleFrame

local title = Instance.new("TextLabel")
title.Name = "Title"
title.Size = UDim2.new(1, -20, 1, 0)
title.Position = UDim2.new(0, 10, 0, 0)
title.BackgroundTransparency = 1
title.Text = "🎣 ESP Control"
title.TextColor3 = CONFIG.Colors.Text
title.Font = CONFIG.Font
title.TextSize = 16
title.TextXAlignment = Enum.TextXAlignment.Left
title.Parent = titleFrame

local closeBtn = Instance.new("TextButton")
closeBtn.Name = "CloseButton"
closeBtn.Size = UDim2.new(0, 30, 0, 30)
closeBtn.Position = UDim2.new(1, -35, 0, 5)
closeBtn.BackgroundColor3 = CONFIG.Colors.Background
closeBtn.BorderSizePixel = 0
closeBtn.Text = "✕"
closeBtn.TextColor3 = CONFIG.Colors.Text
closeBtn.Font = CONFIG.Font
closeBtn.TextSize = 18
closeBtn.Parent = titleFrame

local closeCorner = Instance.new("UICorner")
closeCorner.CornerRadius = UDim.new(0, 8)
closeCorner.Parent = closeBtn

local contentFrame = Instance.new("Frame")
contentFrame.Name = "ContentFrame"
contentFrame.Size = UDim2.new(1, -20, 1, -50)
contentFrame.Position = UDim2.new(0, 10, 0, 45)
contentFrame.BackgroundTransparency = 1
contentFrame.Parent = mainFrame

local uiListLayout = Instance.new("UIListLayout")
uiListLayout.Padding = UDim.new(0, 12)
uiListLayout.SortOrder = Enum.SortOrder.LayoutOrder
uiListLayout.Parent = contentFrame

local ESPState = {
    FishHighlight = true,
    FishName = true,
    FishMutation = true,
    ChestHighlight = true,
    ChestName = true
}

local function createToggle(parent, text, setting, order)
    local toggleFrame = Instance.new("Frame")
    toggleFrame.Name = setting .. "Toggle"
    toggleFrame.Size = UDim2.new(1, 0, 0, 35)
    toggleFrame.BackgroundColor3 = CONFIG.Colors.BackgroundSecondary
    toggleFrame.BorderSizePixel = 0
    toggleFrame.LayoutOrder = order
    toggleFrame.Parent = parent
    
    local frameCorner = Instance.new("UICorner")
    frameCorner.CornerRadius = UDim.new(0, 8)
    frameCorner.Parent = toggleFrame
    
    local label = Instance.new("TextLabel")
    label.Name = "Label"
    label.Size = UDim2.new(1, -60, 1, 0)
    label.Position = UDim2.new(0, 12, 0, 0)
    label.BackgroundTransparency = 1
    label.Text = text
    label.TextColor3 = CONFIG.Colors.Text
    label.Font = CONFIG.Font
    label.TextSize = 13
    label.TextXAlignment = Enum.TextXAlignment.Left
    label.Parent = toggleFrame
    
    local toggleBtn = Instance.new("TextButton")
    toggleBtn.Name = "ToggleButton"
    toggleBtn.Size = UDim2.new(0, 40, 0, 24)
    toggleBtn.Position = UDim2.new(1, -50, 0.5, -12)
    toggleBtn.BackgroundColor3 = ESPState[setting] and CONFIG.Colors.ToggleOn or CONFIG.Colors.ToggleOff
    toggleBtn.BorderSizePixel = 0
    toggleBtn.Text = ESPState[setting] and "ON" or "OFF"
    toggleBtn.TextColor3 = CONFIG.Colors.Text
    toggleBtn.Font = CONFIG.Font
    toggleBtn.TextSize = 12
    toggleBtn.Parent = toggleFrame
    
    local toggleCorner = Instance.new("UICorner")
    toggleCorner.CornerRadius = UDim.new(1, 0)
    toggleCorner.Parent = toggleBtn
    
    toggleBtn.MouseButton1Click:Connect(function()
        ESPState[setting] = not ESPState[setting]
        toggleBtn.BackgroundColor3 = ESPState[setting] and CONFIG.Colors.ToggleOn or CONFIG.Colors.ToggleOff
        toggleBtn.Text = ESPState[setting] and "ON" or "OFF"
        updateAllESP()
    end)
end

local fishSection = Instance.new("Frame")
fishSection.Name = "FishSection"
fishSection.Size = UDim2.new(1, 0, 0, 120)
fishSection.BackgroundTransparency = 1
fishSection.LayoutOrder = 1
fishSection.Parent = contentFrame

local fishLabel = Instance.new("TextLabel")
fishLabel.Name = "FishLabel"
fishLabel.Size = UDim2.new(1, 0, 0, 20)
fishLabel.BackgroundTransparency = 1
fishLabel.Text = "🐟 FISH"
fishLabel.TextColor3 = CONFIG.Colors.Accent
fishLabel.Font = CONFIG.Font
fishLabel.TextSize = 14
fishLabel.TextXAlignment = Enum.TextXAlignment.Left
fishLabel.Parent = fishSection

local fishLayout = Instance.new("UIListLayout")
fishLayout.Padding = UDim.new(0, 8)
fishLayout.SortOrder = Enum.SortOrder.LayoutOrder
fishLayout.Parent = fishSection

createToggle(fishSection, "  🎨 Highlight", "FishHighlight", 1)
createToggle(fishSection, "  🐟 Name", "FishName", 2)
createToggle(fishSection, "  🧬 Mutations", "FishMutation", 3)

local chestSection = Instance.new("Frame")
chestSection.Name = "ChestSection"
chestSection.Size = UDim2.new(1, 0, 0, 100)
chestSection.BackgroundTransparency = 1
chestSection.LayoutOrder = 2
chestSection.Parent = contentFrame

local chestLabel = Instance.new("TextLabel")
chestLabel.Name = "ChestLabel"
chestLabel.Size = UDim2.new(1, 0, 0, 20)
chestLabel.BackgroundTransparency = 1
chestLabel.Text = "📦 CHESTS"
chestLabel.TextColor3 = CONFIG.Colors.ChestT3
chestLabel.Font = CONFIG.Font
chestLabel.TextSize = 14
chestLabel.TextXAlignment = Enum.TextXAlignment.Left
chestLabel.Parent = chestSection

local chestLayout = Instance.new("UIListLayout")
chestLayout.Padding = UDim.new(0, 8)
chestLayout.SortOrder = Enum.SortOrder.LayoutOrder
chestLayout.Parent = chestSection

createToggle(chestSection, "  🎨 Highlight", "ChestHighlight", 1)
createToggle(chestSection, "  📝 Name", "ChestName", 2)

local fishCountFrame = Instance.new("Frame")
fishCountFrame.Name = "FishCount"
fishCountFrame.Size = UDim2.new(1, 0, 0, 30)
fishCountFrame.BackgroundColor3 = CONFIG.Colors.BackgroundSecondary
fishCountFrame.BorderSizePixel = 0
fishCountFrame.LayoutOrder = 3
fishCountFrame.Parent = contentFrame

local countCorner = Instance.new("UICorner")
countCorner.CornerRadius = UDim.new(0, 8)
countCorner.Parent = fishCountFrame

local fishCountLabel = Instance.new("TextLabel")
fishCountLabel.Name = "CountLabel"
fishCountLabel.Size = UDim2.new(1, -12, 1, 0)
fishCountLabel.Position = UDim2.new(0, 6, 0, 0)
fishCountLabel.BackgroundTransparency = 1
fishCountLabel.Text = "🐟 Fish: 0  |  📦 Chests: 0"
fishCountLabel.TextColor3 = CONFIG.Colors.Text
fishCountLabel.Font = CONFIG.Font
fishCountLabel.TextSize = 13
fishCountLabel.Parent = fishCountFrame

local espContainer = Instance.new("Folder")
espContainer.Name = "ESPObjects"
espContainer.Parent = screenGui

local fishESP = {}
local chestESP = {}

local function getFishName(fish)
    local success, result = pcall(function()
        return fish.Head.stats.Fish.Text
    end)
    return success and result or "Unknown Fish"
end

local function getFishMutation(fish)
    local success, result = pcall(function()
        return fish.Head.stats.Mutation.Label.Text
    end)
    return success and result or ""
end

local function createFishNameBillboard(fish)
    local billboard = Instance.new("BillboardGui")
    billboard.Name = "FishESP_" .. fish.Name
    billboard.Size = UDim2.new(0, 160, 0, 22)
    billboard.StudsOffset = Vector3.new(0, 3, 0)
    billboard.AlwaysOnTop = true
    billboard.LightInfluence = 0
    billboard.Adornee = fish.Head
    billboard.Parent = espContainer
    
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, 0, 1, 0)
    frame.BackgroundTransparency = 0.15
    frame.BackgroundColor3 = CONFIG.Colors.Accent
    frame.BorderSizePixel = 0
    frame.Parent = billboard
    
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 6)
    corner.Parent = frame
    
    local textLabel = Instance.new("TextLabel")
    textLabel.Size = UDim2.new(1, -8, 1, 0)
    textLabel.Position = UDim2.new(0, 4, 0, 0)
    textLabel.BackgroundTransparency = 1
    textLabel.Text = getFishName(fish)
    textLabel.TextColor3 = CONFIG.Colors.Text
    textLabel.Font = CONFIG.Font
    textLabel.TextSize = 13
    textLabel.TextStrokeTransparency = 0.3
    textLabel.TextXAlignment = Enum.TextXAlignment.Left
    textLabel.Parent = frame
    
    return billboard
end

local function createFishMutationBillboard(fish)
    local mutation = getFishMutation(fish)
    if mutation == "" then return nil end
    
    local billboard = Instance.new("BillboardGui")
    billboard.Name = "MutationESP_" .. fish.Name
    billboard.Size = UDim2.new(0, 160, 0, 20)
    billboard.StudsOffset = Vector3.new(0, -8, 0)
    billboard.AlwaysOnTop = true
    billboard.LightInfluence = 0
    billboard.Adornee = fish.Head
    billboard.Parent = espContainer
    
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, 0, 1, 0)
    frame.BackgroundTransparency = 0.15
    frame.BackgroundColor3 = Color3.fromRGB(255, 70, 200)
    frame.BorderSizePixel = 0
    frame.Parent = billboard
    
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 6)
    corner.Parent = frame
    
    local textLabel = Instance.new("TextLabel")
    textLabel.Size = UDim2.new(1, -8, 1, 0)
    textLabel.Position = UDim2.new(0, 5, 0, 0)
    textLabel.BackgroundTransparency = 1
    textLabel.Text = "🧬 " .. mutation
    textLabel.TextColor3 = CONFIG.Colors.Text
    textLabel.Font = CONFIG.Font
    textLabel.TextSize = 12
    textLabel.TextStrokeTransparency = 0.3
    textLabel.TextXAlignment = Enum.TextXAlignment.Left
    textLabel.Parent = frame
    
    return billboard
end

local function createFishHighlight(fish)
    local highlight = Instance.new("Highlight")
    highlight.Name = "FishHighlight"
    highlight.FillColor = CONFIG.Colors.Accent
    highlight.OutlineColor = Color3.new(1, 1, 1)
    highlight.FillTransparency = 0.6
    highlight.OutlineTransparency = 0.4
    highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
    highlight.Adornee = fish
    highlight.Parent = espContainer
    return highlight
end

local function getChestColor(tier)
    if tier == "Tier 3" then
        return CONFIG.Colors.ChestT3
    elseif tier == "Tier 2" then
        return CONFIG.Colors.ChestT2
    else
        return CONFIG.Colors.ChestT1
    end
end

local function createChestBillboard(chest, tier)
    local billboard = Instance.new("BillboardGui")
    billboard.Name = "ChestESP_" .. chest.Name
    billboard.Size = UDim2.new(0, 120, 0, 25)
    billboard.StudsOffset = Vector3.new(0, 2, 0)
    billboard.AlwaysOnTop = true
    billboard.LightInfluence = 0
    billboard.Adornee = chest
    billboard.Parent = espContainer
    
    local frame = Instance.new("Frame")
    frame.Size = UDim2.new(1, 0, 1, 0)
    frame.BackgroundTransparency = 0.15
    frame.BackgroundColor3 = getChestColor(tier)
    frame.BorderSizePixel = 0
    frame.Parent = billboard
    
    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 6)
    corner.Parent = frame
    
    local textLabel = Instance.new("TextLabel")
    textLabel.Size = UDim2.new(1, -8, 1, 0)
    textLabel.Position = UDim2.new(0, 4, 0, 0)
    textLabel.BackgroundTransparency = 1
    textLabel.Text = "📦 " .. tier
    textLabel.TextColor3 = CONFIG.Colors.Text
    textLabel.Font = CONFIG.Font
    textLabel.TextSize = 13
    textLabel.TextStrokeTransparency = 0.3
    textLabel.TextXAlignment = Enum.TextXAlignment.Left
    textLabel.Parent = frame
    
    return billboard
end

local function createChestHighlight(chest, tier)
    local highlight = Instance.new("Highlight")
    highlight.Name = "ChestHighlight"
    highlight.FillColor = getChestColor(tier)
    highlight.OutlineColor = Color3.new(1, 1, 1)
    highlight.FillTransparency = 0.5
    highlight.OutlineTransparency = 0.3
    highlight.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
    highlight.Adornee = chest
    highlight.Parent = espContainer
    return highlight
end

function updateAllESP()
    for _, esp in pairs(fishESP) do
        if esp.Highlight then esp.Highlight:Destroy() end
        if esp.NameBillboard then esp.NameBillboard:Destroy() end
        if esp.MutationBillboard then esp.MutationBillboard:Destroy() end
    end
    fishESP = {}
    
    for _, esp in pairs(chestESP) do
        if esp.Highlight then esp.Highlight:Destroy() end
        if esp.Billboard then esp.Billboard:Destroy() end
    end
    chestESP = {}
    
    local fishFolder = workspace:FindFirstChild("Game") and 
                      workspace.Game:FindFirstChild("Fish") and 
                      workspace.Game.Fish:FindFirstChild("client")
    
    if fishFolder then
        for _, fish in pairs(fishFolder:GetChildren()) do
            addFishESP(fish)
        end
    end
    
    local chestsFolder = workspace:FindFirstChild("Game") and workspace.Game:FindFirstChild("Chests")
    if chestsFolder then
        for _, tier in pairs({"Tier 1", "Tier 2", "Tier 3"}) do
            local tierFolder = chestsFolder:FindFirstChild(tier)
            if tierFolder then
                for _, chest in pairs(tierFolder:GetChildren()) do
                    addChestESP(chest, tier)
                end
            end
        end
    end
    
    updateCount()
end

function addFishESP(fish)
    if not fish:FindFirstChild("Head") then return end
    if not fish.Head:FindFirstChild("stats") then return end
    if fishESP[fish] then return end
    
    local espData = {}
    
    if ESPState.FishHighlight then
        espData.Highlight = createFishHighlight(fish)
    end
    
    if ESPState.FishName then
        espData.NameBillboard = createFishNameBillboard(fish)
    end
    
    if ESPState.FishMutation then
        espData.MutationBillboard = createFishMutationBillboard(fish)
    end
    
    fishESP[fish] = espData
end

function addChestESP(chest, tier)
    if chestESP[chest] then return end
    
    local espData = {}
    
    if ESPState.ChestHighlight then
        espData.Highlight = createChestHighlight(chest, tier)
    end
    
    if ESPState.ChestName then
        espData.Billboard = createChestBillboard(chest, tier)
    end
    
    chestESP[chest] = espData
end

function removeFishESP(fish)
    local esp = fishESP[fish]
    if esp then
        if esp.Highlight then esp.Highlight:Destroy() end
        if esp.NameBillboard then esp.NameBillboard:Destroy() end
        if esp.MutationBillboard then esp.MutationBillboard:Destroy() end
        fishESP[fish] = nil
    end
end

function removeChestESP(chest)
    local esp = chestESP[chest]
    if esp then
        if esp.Highlight then esp.Highlight:Destroy() end
        if esp.Billboard then esp.Billboard:Destroy() end
        chestESP[chest] = nil
    end
end

function updateCount()
    local fishCount = 0
    for _ in pairs(fishESP) do
        fishCount = fishCount + 1
    end
    
    local chestCount = 0
    for _ in pairs(chestESP) do
        chestCount = chestCount + 1
    end
    
    fishCountLabel.Text = "🐟 Fish: " .. fishCount .. "  |  📦 Chests: " .. chestCount
end

local function watchFish()
    local fishFolder = workspace:FindFirstChild("Game") and 
                      workspace.Game:FindFirstChild("Fish") and 
                      workspace.Game.Fish:FindFirstChild("client")
    
    if not fishFolder then
        workspace.Game.Fish:WaitForChild("client")
        fishFolder = workspace.Game.Fish.client
    end
    
    fishFolder.ChildAdded:Connect(function(fish)
        task.wait(0.1)
        addFishESP(fish)
        updateCount()
    end)
    
    fishFolder.ChildRemoved:Connect(function(fish)
        removeFishESP(fish)
        updateCount()
    end)
end

local function watchChests()
    local chestsFolder = workspace:FindFirstChild("Game") and workspace.Game:FindFirstChild("Chests")
    if not chestsFolder then return end
    
    for _, tier in pairs({"Tier 1", "Tier 2", "Tier 3"}) do
        local tierFolder = chestsFolder:FindFirstChild(tier)
        if tierFolder then
            tierFolder.ChildAdded:Connect(function(chest)
                task.wait(0.1)
                addChestESP(chest, tier)
                updateCount()
            end)
            
            tierFolder.ChildRemoved:Connect(function(chest)
                removeChestESP(chest)
                updateCount()
            end)
        end
    end
end

closeBtn.MouseButton1Click:Connect(function()
    for _, esp in pairs(fishESP) do
        if esp.Highlight then esp.Highlight:Destroy() end
        if esp.NameBillboard then esp.NameBillboard:Destroy() end
        if esp.MutationBillboard then esp.MutationBillboard:Destroy() end
    end
    for _, esp in pairs(chestESP) do
        if esp.Highlight then esp.Highlight:Destroy() end
        if esp.Billboard then esp.Billboard:Destroy() end
    end
    fishESP = {}
    chestESP = {}
    screenGui:Destroy()
end)

task.spawn(function()
    watchFish()
    watchChests()
    updateAllESP()
end)

mainFrame.Size = UDim2.new(0, 0, 0, 0)
mainFrame.Position = UDim2.new(0.5, 0, 0.5, 0)

local tweenInfo = TweenInfo.new(0.3, Enum.EasingStyle.Back, Enum.EasingDirection.Out)
local sizeTween = TweenService:Create(mainFrame, tweenInfo, {Size = UDim2.new(0, 320, 0, 280), Position = UDim2.new(0.5, -160, 0.5, -140)})
sizeTween:Play()

Features & Information

Fish esp Chest esp
#Abyss#esp#fish esp#chest esp#open source

Community Comments (0)

No comments yet for this script.

More Scripts for Abyss