
Keyless

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()No comments yet for this script.



