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()