if not game:IsLoaded() then game.Loaded:Wait() end
if getgenv and getgenv().IdenticalHeavyweightFishingUnload then
pcall(getgenv().IdenticalHeavyweightFishingUnload)
end
local Players = game:GetService("Players")
local Workspace = game:GetService("Workspace")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RunService = game:GetService("RunService")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local HttpService = game:GetService("HttpService")
local TeleportService = game:GetService("TeleportService")
local Lighting = game:GetService("Lighting")
local CoreGui = game:GetService("CoreGui")
local LocalPlayer = Players.LocalPlayer
local Camera = Workspace.CurrentCamera
local isRunning = true
local activeConnections = {}
local cleanUpInstances = {}
local Events = ReplicatedStorage:WaitForChild("Events", 10)
local Config = {
AutoCast = false,
CastDelay = 1.0,
CastPower = 100,
AnchorBar = true,
AutoSlam = true,
AutoCharge = true,
InstantCatch = true,
AutoSkills = false,
SelectedSkill = "One-Strike Heaven Gate",
AutoEquipBestBait = false,
AutoEquipBestRod = false,
AutoEquipBestOrb = false,
Loadout1_Rod = "Wooden Rod",
Loadout1_Bait = "Basic Bait",
Loadout2_Rod = "Wooden Rod",
Loadout2_Bait = "Basic Bait",
AutoSell = false,
SellInterval = 30,
AutoFavouriteFish = false,
FavouriteFishName = "Colossal Tigerfish",
MaterialFarming = false,
OctoAutoMinigame = false,
AutoFarmBoss = false,
AutoFarmSecretBoss = false,
SelectedBoss = "Enzo",
AutoGodSpiritCheck = false,
AutoPrayGodSpirit = false,
AutoServerHopGod = false,
AutoServerHopMaoshan = false,
AutoServerHopTaoist = false,
AutoTicketQuest = false,
TicketDifficulty = "Easy",
AutoClaimDaily = false,
DailyClaimDelay = 0.5,
AutoCraftBait = false,
CraftBaitName = "Nameless Bait",
CraftAmount = 1,
AutoBuyBait = false,
BuyBaitName = "Ancestral Bait",
BuyBaitAmount = 5,
BuyBaitThreshold = 10,
BuyBaitDelay = 1.0,
AutoGacha = false,
GachaBanner = "Taiji Banner",
GachaPullsPerAction = 1,
WalkSpeedEnabled = false,
WalkSpeedValue = 16,
FlyEnabled = false,
FlySpeed = 50,
InfiniteJump = false,
WalkOnWater = false,
Noclip = false,
ESP_GodSpirit = false,
ESP_SecretRod = false,
ESP_Boats = false,
ESP_Maoshan = false,
ESP_Taoist = false,
ESP_Boss = false,
ESP_Players = false,
FishRedRing = true,
NoFog = false,
Fullbright = false,
PerformanceMode = false,
HideGameUI = false,
AntiAFK = true,
AutoRejoin = false,
AutoExecuteOnJoin = false,
UIKeybind = Enum.KeyCode.RightControl,
StopKeybind = Enum.KeyCode.End,
ActiveProfile = "default",
AutoLoadProfile = true
}
if hookmetamethod and newcclosure then
local fmRemote = Events and Events:FindFirstChild("FishingMinigame")
local oldNamecall
oldNamecall = hookmetamethod(game, "__namecall", newcclosure(function(self, ...)
local method = getnamecallmethod()
if (self == fmRemote or (typeof(self) == "Instance" and self.Name == "FishingMinigame")) and method == "FireServer" and not checkcaller() then
if isRunning and Config and Config.AnchorBar then
local args = {...}
local action = tostring(args[1])
if action == "Out of bar" or action == "Out of bar (overpull)" or action:find("Out of bar") then
return oldNamecall(self, "In bar", unpack(args, 2))
end
end
end
return oldNamecall(self, ...)
end))
end
local PROFILE_DIR = "Identical/HeavyweightFishing"
local function EnsureProfileDir()
if makefolder then
pcall(function()
if not isfolder("Identical") then makefolder("Identical") end
if not isfolder(PROFILE_DIR) then makefolder(PROFILE_DIR) end
end)
end
end
local function SaveProfile(name)
EnsureProfileDir()
local path = PROFILE_DIR .. "/" .. (name or Config.ActiveProfile) .. ".json"
local data = {}
for k, v in pairs(Config) do
if typeof(v) == "EnumItem" then
data[k] = {__enum = tostring(v)}
else
data[k] = v
end
end
local ok, encoded = pcall(function() return HttpService:JSONEncode(data) end)
if ok and writefile then
pcall(function() writefile(path, encoded) end)
return true
end
return false
end
local function LoadProfile(name)
local path = PROFILE_DIR .. "/" .. (name or Config.ActiveProfile) .. ".json"
if readfile then
local ok, content = pcall(function() return readfile(path) end)
if ok and content and #content > 0 then
local decOk, decoded = pcall(function() return HttpService:JSONDecode(content) end)
if decOk and type(decoded) == "table" then
for k, v in pairs(decoded) do
if type(v) == "table" and v.__enum then
local enumType, enumName = v.__enum:match("Enum%.(%w+)%.(%w+)")
if enumType and enumName and Enum[enumType] and Enum[enumType][enumName] then
Config[k] = Enum[enumType][enumName]
end
elseif Config[k] ~= nil then
Config[k] = v
end
end
return true
end
end
end
return false
end
if Config.AutoLoadProfile then pcall(LoadProfile, "default") end
local Colors = {
Background = Color3.fromRGB(15, 12, 22),
SidebarBg = Color3.fromRGB(11, 9, 17),
BorderPurple = Color3.fromRGB(168, 85, 247),
BorderSubtle = Color3.fromRGB(45, 33, 66),
Divider = Color3.fromRGB(36, 26, 54),
PurplePrimary = Color3.fromRGB(216, 160, 255),
PurpleAccent = Color3.fromRGB(168, 85, 247),
PurpleMuted = Color3.fromRGB(147, 112, 196),
PurpleDark = Color3.fromRGB(72, 45, 107),
PurpleGlow = Color3.fromRGB(192, 132, 252),
RowNormal = Color3.fromRGB(20, 16, 30),
RowHover = Color3.fromRGB(30, 22, 46),
ControlBg = Color3.fromRGB(28, 20, 44),
InputBg = Color3.fromRGB(18, 14, 26),
TextWhite = Color3.fromRGB(245, 243, 255),
TextSubtle = Color3.fromRGB(168, 150, 200),
TextMuted = Color3.fromRGB(110, 95, 138),
AccentGreen = Color3.fromRGB(52, 211, 153),
AccentRed = Color3.fromRGB(248, 113, 113),
AccentOrange = Color3.fromRGB(251, 146, 60),
AccentYellow = Color3.fromRGB(250, 204, 21),
AccentBlue = Color3.fromRGB(96, 165, 250),
DropdownSelected = Color3.fromRGB(36, 26, 56)
}
local function getGuiParent()
if gethui then
local ok, h = pcall(gethui)
if ok and h then return h end
end
local ok, gui = pcall(function() return CoreGui end)
if ok and gui then return gui end
return LocalPlayer:WaitForChild("PlayerGui", 5) or LocalPlayer:FindFirstChild("PlayerGui")
end
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "IdenticalHeavyweightFishing"
screenGui.ResetOnSpawn = false
screenGui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
screenGui.Parent = getGuiParent()
table.insert(cleanUpInstances, screenGui)
local function UnloadScript()
isRunning = false
for _, conn in ipairs(activeConnections) do pcall(function() conn:Disconnect() end) end
table.clear(activeConnections)
for _, inst in ipairs(cleanUpInstances) do
pcall(function()
if inst and inst.Parent then inst:Destroy() end
end)
end
table.clear(cleanUpInstances)
pcall(function()
local leftover = Workspace:FindFirstChild("IdenticalESP")
if leftover then leftover:Destroy() end
end)
pcall(function()
local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if hum then hum.WalkSpeed = 16 end
Lighting.FogEnd = 100000
Lighting.Brightness = 2
Lighting.ClockTime = 14
Lighting.Ambient = Color3.fromRGB(70, 70, 70)
Lighting.OutdoorAmbient = Color3.fromRGB(70, 70, 70)
Lighting.GlobalShadows = true
end)
if getgenv then getgenv().IdenticalHeavyweightFishingUnload = nil end
end
if getgenv then getgenv().IdenticalHeavyweightFishingUnload = UnloadScript end
local notifContainer = Instance.new("Frame")
notifContainer.Name = "Notifications"
notifContainer.Size = UDim2.new(0, 300, 1, -40)
notifContainer.Position = UDim2.new(1, -315, 0, 20)
notifContainer.BackgroundTransparency = 1
notifContainer.ZIndex = 1000
notifContainer.Parent = screenGui
table.insert(cleanUpInstances, notifContainer)
local notifLayout = Instance.new("UIListLayout")
notifLayout.SortOrder = Enum.SortOrder.LayoutOrder
notifLayout.VerticalAlignment = Enum.VerticalAlignment.Bottom
notifLayout.Padding = UDim.new(0, 8)
notifLayout.Parent = notifContainer
local function ShowNotification(title, text, notifType, duration)
if not isRunning then return end
duration = duration or 3.5
local accentColor = Colors.PurpleAccent
if notifType == "SUCCESS" then accentColor = Colors.AccentGreen
elseif notifType == "WARN" then accentColor = Colors.AccentYellow
elseif notifType == "ERROR" then accentColor = Colors.AccentRed end
local card = Instance.new("Frame")
card.Size = UDim2.new(1, 0, 0, 60)
card.BackgroundColor3 = Colors.Background
card.BackgroundTransparency = 0.05
card.BorderSizePixel = 0
card.ClipsDescendants = true
card.Parent = notifContainer
local stroke = Instance.new("UIStroke"); stroke.Color = accentColor; stroke.Thickness = 1.2; stroke.Parent = card
local corner = Instance.new("UICorner"); corner.CornerRadius = UDim.new(0, 6); corner.Parent = card
local topBar = Instance.new("Frame"); topBar.Size = UDim2.new(1, 0, 0, 20); topBar.BackgroundTransparency = 1; topBar.Position = UDim2.new(0, 10, 0, 6); topBar.Parent = card
local tLabel = Instance.new("TextLabel"); tLabel.Size = UDim2.new(1, -20, 1, 0); tLabel.BackgroundTransparency = 1; tLabel.Font = Enum.Font.GothamBold; tLabel.Text = title; tLabel.TextColor3 = Colors.PurplePrimary; tLabel.TextSize = 13; tLabel.TextXAlignment = Enum.TextXAlignment.Left; tLabel.Parent = topBar
local mLabel = Instance.new("TextLabel"); mLabel.Size = UDim2.new(1, -20, 0, 26); mLabel.Position = UDim2.new(0, 10, 0, 26); mLabel.BackgroundTransparency = 1; mLabel.Font = Enum.Font.Gotham; mLabel.Text = text; mLabel.TextColor3 = Colors.TextSubtle; mLabel.TextSize = 11; mLabel.TextXAlignment = Enum.TextXAlignment.Left; mLabel.TextWrapped = true; mLabel.Parent = card
task.delay(duration, function()
if card and card.Parent then
TweenService:Create(card, TweenInfo.new(0.35, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
BackgroundTransparency = 1, Position = card.Position + UDim2.new(1, 20, 0, 0)
}):Play()
task.wait(0.35); card:Destroy()
end
end)
end
local ToggleUiVisibility
local floatingCrescent = Instance.new("ImageButton")
floatingCrescent.Name = "FloatingCrescent"
floatingCrescent.Size = UDim2.new(0, 44, 0, 44)
floatingCrescent.Position = UDim2.new(0, 20, 0, 20)
floatingCrescent.BackgroundColor3 = Colors.Background
floatingCrescent.BorderSizePixel = 0
floatingCrescent.Visible = false
floatingCrescent.ZIndex = 1000
floatingCrescent.Parent = screenGui
table.insert(cleanUpInstances, floatingCrescent)
do
local fcCorner = Instance.new("UICorner"); fcCorner.CornerRadius = UDim.new(1, 0); fcCorner.Parent = floatingCrescent
local fcStroke = Instance.new("UIStroke"); fcStroke.Color = Colors.PurpleAccent; fcStroke.Thickness = 1.5; fcStroke.Parent = floatingCrescent
local fcIconContainer = Instance.new("Frame"); fcIconContainer.Size = UDim2.new(0, 24, 0, 24); fcIconContainer.Position = UDim2.new(0.5, -12, 0.5, -12); fcIconContainer.BackgroundTransparency = 1; fcIconContainer.ClipsDescendants = true; fcIconContainer.Parent = floatingCrescent
local fcOuter = Instance.new("Frame"); fcOuter.Size = UDim2.new(0, 24, 0, 24); fcOuter.BackgroundColor3 = Colors.PurplePrimary; fcOuter.BorderSizePixel = 0; fcOuter.Parent = fcIconContainer
local fcOC = Instance.new("UICorner"); fcOC.CornerRadius = UDim.new(1, 0); fcOC.Parent = fcOuter
local fcCutout = Instance.new("Frame"); fcCutout.Size = UDim2.new(0, 20, 0, 20); fcCutout.Position = UDim2.new(0, 6, 0, -3); fcCutout.BackgroundColor3 = Colors.Background; fcCutout.BorderSizePixel = 0; fcCutout.Parent = fcOuter
local fcCC = Instance.new("UICorner"); fcCC.CornerRadius = UDim.new(1, 0); fcCC.Parent = fcCutout
local fcDragging, fcDragInput, fcDragStart, fcStartPos = false, nil, nil, nil
floatingCrescent.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
fcDragging = true; fcDragStart = input.Position; fcStartPos = floatingCrescent.Position
input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then fcDragging = false end end)
end
end)
floatingCrescent.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then fcDragInput = input end end)
table.insert(activeConnections, UserInputService.InputChanged:Connect(function(input)
if input == fcDragInput and fcDragging then
local delta = input.Position - fcDragStart
floatingCrescent.Position = UDim2.new(fcStartPos.X.Scale, fcStartPos.X.Offset + delta.X, fcStartPos.Y.Scale, fcStartPos.Y.Offset + delta.Y)
end
end))
floatingCrescent.MouseEnter:Connect(function()
TweenService:Create(floatingCrescent, TweenInfo.new(0.15), {BackgroundColor3 = Colors.PurpleDark}):Play()
TweenService:Create(fcStroke, TweenInfo.new(0.15), {Color = Colors.PurpleGlow}):Play()
fcCutout.BackgroundColor3 = Colors.PurpleDark
end)
floatingCrescent.MouseLeave:Connect(function()
TweenService:Create(floatingCrescent, TweenInfo.new(0.15), {BackgroundColor3 = Colors.Background}):Play()
TweenService:Create(fcStroke, TweenInfo.new(0.15), {Color = Colors.PurpleAccent}):Play()
fcCutout.BackgroundColor3 = Colors.Background
end)
floatingCrescent.MouseButton1Click:Connect(function() if ToggleUiVisibility then ToggleUiVisibility() end end)
end
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 700, 0, 480)
mainFrame.Position = UDim2.new(0.5, -350, 0.5, -240)
mainFrame.BackgroundColor3 = Colors.Background
mainFrame.BorderSizePixel = 0
mainFrame.ClipsDescendants = true
mainFrame.Parent = screenGui
table.insert(cleanUpInstances, mainFrame)
do
local mc = Instance.new("UICorner"); mc.CornerRadius = UDim.new(0, 8); mc.Parent = mainFrame
local ms = Instance.new("UIStroke"); ms.Color = Colors.BorderPurple; ms.Thickness = 1.5; ms.Parent = mainFrame
end
local titleBar = Instance.new("Frame")
titleBar.Name = "TitleBar"
titleBar.Size = UDim2.new(1, 0, 0, 38)
titleBar.BackgroundColor3 = Colors.SidebarBg
titleBar.BorderSizePixel = 0
titleBar.Parent = mainFrame
do
local tc = Instance.new("UICorner"); tc.CornerRadius = UDim.new(0, 8); tc.Parent = titleBar
local tbf = Instance.new("Frame"); tbf.Size = UDim2.new(1, 0, 0, 10); tbf.Position = UDim2.new(0, 0, 1, -10); tbf.BackgroundColor3 = Colors.SidebarBg; tbf.BorderSizePixel = 0; tbf.Parent = titleBar
local tdiv = Instance.new("Frame"); tdiv.Size = UDim2.new(1, 0, 0, 1); tdiv.Position = UDim2.new(0, 0, 1, -1); tdiv.BackgroundColor3 = Colors.Divider; tdiv.BorderSizePixel = 0; tdiv.Parent = titleBar
end
do
local cc = Instance.new("Frame"); cc.Size = UDim2.new(0, 16, 0, 16); cc.Position = UDim2.new(0, 14, 0.5, -8); cc.BackgroundTransparency = 1; cc.ClipsDescendants = true; cc.Parent = titleBar
local co = Instance.new("Frame"); co.Size = UDim2.new(0, 16, 0, 16); co.BackgroundColor3 = Colors.PurpleAccent; co.BorderSizePixel = 0; co.Parent = cc
Instance.new("UICorner", co).CornerRadius = UDim.new(1, 0)
local cut = Instance.new("Frame"); cut.Size = UDim2.new(0, 13, 0, 13); cut.Position = UDim2.new(0, 4, 0, -2); cut.BackgroundColor3 = Colors.SidebarBg; cut.BorderSizePixel = 0; cut.Parent = co
Instance.new("UICorner", cut).CornerRadius = UDim.new(1, 0)
end
local brandTitle = Instance.new("TextLabel")
brandTitle.Size = UDim2.new(0, 150, 1, 0); brandTitle.Position = UDim2.new(0, 36, 0, 0)
brandTitle.BackgroundTransparency = 1; brandTitle.Font = Enum.Font.GothamBold
brandTitle.Text = "IDENTICAL"; brandTitle.TextColor3 = Colors.PurplePrimary
brandTitle.TextSize = 14; brandTitle.TextXAlignment = Enum.TextXAlignment.Left
brandTitle.Parent = titleBar
local gameSubtitle = Instance.new("TextLabel")
gameSubtitle.Size = UDim2.new(0, 200, 1, 0); gameSubtitle.Position = UDim2.new(0, 118, 0, 0)
gameSubtitle.BackgroundTransparency = 1; gameSubtitle.Font = Enum.Font.Gotham
gameSubtitle.Text = "HEAVYWEIGHT FISHING V1.0"; gameSubtitle.TextColor3 = Colors.PurpleMuted
gameSubtitle.TextSize = 10; gameSubtitle.TextXAlignment = Enum.TextXAlignment.Left
gameSubtitle.Parent = titleBar
local winControls = Instance.new("Frame"); winControls.Size = UDim2.new(0, 60, 1, 0); winControls.Position = UDim2.new(1, -65, 0, 0); winControls.BackgroundTransparency = 1; winControls.Parent = titleBar
local minBtn = Instance.new("TextButton"); minBtn.Size = UDim2.new(0, 24, 0, 24); minBtn.Position = UDim2.new(0, 4, 0.5, -12); minBtn.BackgroundColor3 = Colors.ControlBg; minBtn.Font = Enum.Font.GothamBold; minBtn.Text = "[-]"; minBtn.TextColor3 = Colors.PurplePrimary; minBtn.TextSize = 11; minBtn.BorderSizePixel = 0; minBtn.Parent = winControls
Instance.new("UICorner", minBtn).CornerRadius = UDim.new(0, 4)
local closeBtn = Instance.new("TextButton"); closeBtn.Size = UDim2.new(0, 24, 0, 24); closeBtn.Position = UDim2.new(0, 32, 0.5, -12); closeBtn.BackgroundColor3 = Colors.ControlBg; closeBtn.Font = Enum.Font.GothamBold; closeBtn.Text = "[X]"; closeBtn.TextColor3 = Colors.AccentRed; closeBtn.TextSize = 11; closeBtn.BorderSizePixel = 0; closeBtn.Parent = winControls
Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 4)
do
local dragging, dragInput, dragStart, startPos = false, nil, nil, nil
titleBar.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1 then
dragging = true; dragStart = input.Position; startPos = mainFrame.Position
input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end)
end
end)
titleBar.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end)
table.insert(activeConnections, UserInputService.InputChanged:Connect(function(input)
if input == dragInput and dragging then
local delta = input.Position - dragStart
mainFrame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end
end))
end
local bodyFrame = Instance.new("Frame"); bodyFrame.Name = "Body"; bodyFrame.Size = UDim2.new(1, 0, 1, -62); bodyFrame.Position = UDim2.new(0, 0, 0, 38); bodyFrame.BackgroundTransparency = 1; bodyFrame.Parent = mainFrame
local sidebar = Instance.new("Frame"); sidebar.Name = "Sidebar"; sidebar.Size = UDim2.new(0, 140, 1, 0); sidebar.BackgroundColor3 = Colors.SidebarBg; sidebar.BorderSizePixel = 0; sidebar.Parent = bodyFrame
do local d = Instance.new("Frame"); d.Size = UDim2.new(0, 1, 1, 0); d.Position = UDim2.new(1, -1, 0, 0); d.BackgroundColor3 = Colors.Divider; d.BorderSizePixel = 0; d.Parent = sidebar end
local searchBox = Instance.new("TextBox")
searchBox.Name = "SearchBar"; searchBox.Size = UDim2.new(1, -16, 0, 26); searchBox.Position = UDim2.new(0, 8, 0, 8)
searchBox.BackgroundColor3 = Colors.InputBg; searchBox.Font = Enum.Font.Gotham; searchBox.PlaceholderText = "Search..."
searchBox.PlaceholderColor3 = Colors.TextMuted; searchBox.Text = ""; searchBox.TextColor3 = Colors.TextWhite
searchBox.TextSize = 11; searchBox.TextXAlignment = Enum.TextXAlignment.Left; searchBox.BorderSizePixel = 0; searchBox.ClearTextOnFocus = false; searchBox.Parent = sidebar
do local p = Instance.new("UIPadding"); p.PaddingLeft = UDim.new(0, 8); p.Parent = searchBox end
Instance.new("UICorner", searchBox).CornerRadius = UDim.new(0, 4)
local rowSearchIndex = {}
searchBox:GetPropertyChangedSignal("Text"):Connect(function()
local q = searchBox.Text:lower()
for _, item in ipairs(rowSearchIndex) do
if q == "" or item.query:find(q, 1, true) then
item.frame.Visible = true
else
item.frame.Visible = false
end
end
end)
local navList = Instance.new("ScrollingFrame"); navList.Name = "NavList"; navList.Size = UDim2.new(1, 0, 1, -44); navList.Position = UDim2.new(0, 0, 0, 42); navList.BackgroundTransparency = 1; navList.BorderSizePixel = 0; navList.ScrollBarThickness = 2; navList.ScrollBarImageColor3 = Colors.BorderSubtle; navList.CanvasSize = UDim2.new(0, 0, 0, 0); navList.AutomaticCanvasSize = Enum.AutomaticSize.Y; navList.Parent = sidebar
do
local nl = Instance.new("UIListLayout"); nl.SortOrder = Enum.SortOrder.LayoutOrder; nl.Padding = UDim.new(0, 4); nl.Parent = navList
local np = Instance.new("UIPadding"); np.PaddingTop = UDim.new(0, 6); np.PaddingLeft = UDim.new(0, 8); np.PaddingRight = UDim.new(0, 8); np.Parent = navList
end
local contentArea = Instance.new("Frame"); contentArea.Name = "ContentArea"; contentArea.Size = UDim2.new(1, -140, 1, 0); contentArea.Position = UDim2.new(0, 140, 0, 0); contentArea.BackgroundTransparency = 1; contentArea.Parent = bodyFrame
local tabFrames = {}
local tabButtons = {}
local function SwitchTab(tabName)
for name, frame in pairs(tabFrames) do frame.Visible = (name == tabName) end
for name, btn in pairs(tabButtons) do
if name == tabName then
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Colors.PurpleDark, TextColor3 = Colors.TextWhite}):Play()
local pill = btn:FindFirstChild("ActivePill"); if pill then pill.Visible = true end
else
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Colors.SidebarBg, TextColor3 = Colors.TextSubtle}):Play()
local pill = btn:FindFirstChild("ActivePill"); if pill then pill.Visible = false end
end
end
end
local function CreateTab(name)
local btn = Instance.new("TextButton"); btn.Name = "TabBtn_" .. name; btn.Size = UDim2.new(1, 0, 0, 30); btn.BackgroundColor3 = Colors.SidebarBg; btn.Font = Enum.Font.GothamBold; btn.Text = name; btn.TextColor3 = Colors.TextSubtle; btn.TextSize = 12; btn.TextXAlignment = Enum.TextXAlignment.Left; btn.BorderSizePixel = 0; btn.Parent = navList
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
do local p = Instance.new("UIPadding"); p.PaddingLeft = UDim.new(0, 12); p.Parent = btn end
local pill = Instance.new("Frame"); pill.Name = "ActivePill"; pill.Size = UDim2.new(0, 3, 0, 16); pill.Position = UDim2.new(0, -9, 0.5, -8); pill.BackgroundColor3 = Colors.PurpleAccent; pill.BorderSizePixel = 0; pill.Visible = false; pill.Parent = btn
Instance.new("UICorner", pill).CornerRadius = UDim.new(0, 2)
btn.MouseButton1Click:Connect(function() SwitchTab(name) end)
local page = Instance.new("ScrollingFrame"); page.Name = "TabPage_" .. name; page.Size = UDim2.new(1, 0, 1, 0); page.BackgroundTransparency = 1; page.BorderSizePixel = 0; page.ScrollBarThickness = 3; page.ScrollBarImageColor3 = Colors.BorderPurple; page.CanvasSize = UDim2.new(0, 0, 0, 0); page.AutomaticCanvasSize = Enum.AutomaticSize.Y; page.Visible = false; page.Parent = contentArea
do
local pl = Instance.new("UIListLayout"); pl.SortOrder = Enum.SortOrder.LayoutOrder; pl.Padding = UDim.new(0, 10); pl.Parent = page
local pp = Instance.new("UIPadding"); pp.PaddingTop = UDim.new(0, 12); pp.PaddingBottom = UDim.new(0, 16); pp.PaddingLeft = UDim.new(0, 14); pp.PaddingRight = UDim.new(0, 14); pp.Parent = page
end
tabFrames[name] = page; tabButtons[name] = btn
return page
end
local footerBar = Instance.new("Frame"); footerBar.Name = "FooterBar"; footerBar.Size = UDim2.new(1, 0, 0, 24); footerBar.Position = UDim2.new(0, 0, 1, -24); footerBar.BackgroundColor3 = Colors.SidebarBg; footerBar.BorderSizePixel = 0; footerBar.Parent = mainFrame
Instance.new("UICorner", footerBar).CornerRadius = UDim.new(0, 8)
do
local tf = Instance.new("Frame"); tf.Size = UDim2.new(1, 0, 0, 10); tf.BackgroundColor3 = Colors.SidebarBg; tf.BorderSizePixel = 0; tf.Parent = footerBar
local fd = Instance.new("Frame"); fd.Size = UDim2.new(1, 0, 0, 1); fd.BackgroundColor3 = Colors.Divider; fd.BorderSizePixel = 0; fd.Parent = footerBar
end
local footerBrand = Instance.new("TextLabel"); footerBrand.Size = UDim2.new(0, 260, 1, 0); footerBrand.Position = UDim2.new(0, 12, 0, 0); footerBrand.BackgroundTransparency = 1; footerBrand.Font = Enum.Font.Gotham; footerBrand.Text = "Heavyweight Fishing | V1.0"; footerBrand.TextColor3 = Colors.TextMuted; footerBrand.TextSize = 10; footerBrand.TextXAlignment = Enum.TextXAlignment.Left; footerBrand.Parent = footerBar
local footerKey = Instance.new("TextLabel"); footerKey.Size = UDim2.new(0, 280, 1, 0); footerKey.Position = UDim2.new(1, -292, 0, 0); footerKey.BackgroundTransparency = 1; footerKey.Font = Enum.Font.Gotham; footerKey.Text = "[R-CTRL] Menu | [END] Stop"; footerKey.TextColor3 = Colors.TextMuted; footerKey.TextSize = 10; footerKey.TextXAlignment = Enum.TextXAlignment.Right; footerKey.Parent = footerBar
ToggleUiVisibility = function()
mainFrame.Visible = not mainFrame.Visible
floatingCrescent.Visible = not mainFrame.Visible
end
minBtn.MouseButton1Click:Connect(ToggleUiVisibility)
closeBtn.MouseButton1Click:Connect(UnloadScript)
local function createCategoryHeader(parent, text)
local hdr = Instance.new("Frame"); hdr.Size = UDim2.new(1, 0, 0, 22); hdr.BackgroundTransparency = 1; hdr.Parent = parent
local lbl = Instance.new("TextLabel"); lbl.Size = UDim2.new(1, 0, 1, 0); lbl.BackgroundTransparency = 1; lbl.Font = Enum.Font.GothamBold; lbl.Text = string.upper(text); lbl.TextColor3 = Colors.PurplePrimary; lbl.TextSize = 11; lbl.TextXAlignment = Enum.TextXAlignment.Left; lbl.Parent = hdr
return hdr
end
local function createCardGroup(parent)
local group = Instance.new("Frame"); group.Size = UDim2.new(1, 0, 0, 0); group.AutomaticSize = Enum.AutomaticSize.Y; group.BackgroundColor3 = Colors.RowNormal; group.BorderSizePixel = 0; group.Parent = parent
local s = Instance.new("UIStroke"); s.Color = Colors.BorderSubtle; s.Thickness = 1; s.Parent = group
Instance.new("UICorner", group).CornerRadius = UDim.new(0, 6)
local l = Instance.new("UIListLayout"); l.SortOrder = Enum.SortOrder.LayoutOrder; l.Padding = UDim.new(0, 0); l.Parent = group
return group
end
local function createBaseRow(parent, labelText, descText, indexSearch)
local row = Instance.new("Frame"); row.Size = UDim2.new(1, 0, 0, 42); row.BackgroundColor3 = Colors.RowNormal; row.BorderSizePixel = 0; row.Parent = parent
local pad = Instance.new("UIPadding"); pad.PaddingLeft = UDim.new(0, 10); pad.PaddingRight = UDim.new(0, 10); pad.Parent = row
local tf = Instance.new("Frame"); tf.Size = UDim2.new(1, -190, 1, 0); tf.BackgroundTransparency = 1; tf.Parent = row
local tl = Instance.new("TextLabel"); tl.Size = UDim2.new(1, 0, 0, 18); tl.Position = UDim2.new(0, 0, 0, 4); tl.BackgroundTransparency = 1; tl.Font = Enum.Font.GothamBold; tl.Text = labelText; tl.TextColor3 = Colors.TextWhite; tl.TextSize = 12; tl.TextXAlignment = Enum.TextXAlignment.Left; tl.Parent = tf
local dl = Instance.new("TextLabel"); dl.Size = UDim2.new(1, 0, 0, 14); dl.Position = UDim2.new(0, 0, 0, 22); dl.BackgroundTransparency = 1; dl.Font = Enum.Font.Gotham; dl.Text = descText or ""; dl.TextColor3 = Colors.TextMuted; dl.TextSize = 10; dl.TextXAlignment = Enum.TextXAlignment.Left; dl.Parent = tf
row.MouseEnter:Connect(function() TweenService:Create(row, TweenInfo.new(0.15), {BackgroundColor3 = Colors.RowHover}):Play() end)
row.MouseLeave:Connect(function() TweenService:Create(row, TweenInfo.new(0.15), {BackgroundColor3 = Colors.RowNormal}):Play() end)
if indexSearch ~= false then
table.insert(rowSearchIndex, {frame = row, query = (labelText .. " " .. (descText or "")):lower()})
end
return row
end
local function createToggleRow(parent, labelText, descText, initialVal, callback, indexSearch)
if type(initialVal) == "function" then
indexSearch = callback
callback = initialVal
initialVal = false
end
local row = createBaseRow(parent, labelText, descText, indexSearch)
local state = initialVal or false
local btn = Instance.new("TextButton"); btn.Size = UDim2.new(0, 40, 0, 20); btn.Position = UDim2.new(1, -40, 0.5, -10); btn.BackgroundColor3 = state and Colors.PurpleAccent or Colors.ControlBg; btn.Text = ""; btn.BorderSizePixel = 0; btn.Parent = row
Instance.new("UICorner", btn).CornerRadius = UDim.new(1, 0)
local knob = Instance.new("Frame"); knob.Size = UDim2.new(0, 14, 0, 14); knob.Position = state and UDim2.new(1, -17, 0.5, -7) or UDim2.new(0, 3, 0.5, -7); knob.BackgroundColor3 = Colors.TextWhite; knob.BorderSizePixel = 0; knob.Parent = btn
Instance.new("UICorner", knob).CornerRadius = UDim.new(1, 0)
local function updateVisuals()
TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = state and Colors.PurpleAccent or Colors.ControlBg}):Play()
TweenService:Create(knob, TweenInfo.new(0.15), {Position = state and UDim2.new(1, -17, 0.5, -7) or UDim2.new(0, 3, 0.5, -7)}):Play()
end
btn.MouseButton1Click:Connect(function()
state = not state
updateVisuals()
if type(callback) == "function" then callback(state) end
end)
return {frame = row, Set = function(val) state = val; updateVisuals() end, Get = function() return state end}
end
local function createSliderRow(parent, labelText, descText, minVal, maxVal, initialVal, isFloat, suffix, callback, indexSearch)
local row = createBaseRow(parent, labelText, descText, indexSearch)
local currentVal = initialVal or minVal; suffix = suffix or ""
local container = Instance.new("Frame"); container.Size = UDim2.new(0, 180, 0, 24); container.Position = UDim2.new(1, -180, 0.5, -12); container.BackgroundTransparency = 1; container.Parent = row
local valLabel = Instance.new("TextLabel"); valLabel.Size = UDim2.new(0, 68, 1, 0); valLabel.Position = UDim2.new(1, -68, 0, 0); valLabel.BackgroundTransparency = 1; valLabel.Font = Enum.Font.GothamBold; valLabel.TextColor3 = Colors.PurplePrimary; valLabel.TextSize = 11; valLabel.TextXAlignment = Enum.TextXAlignment.Right; valLabel.Parent = container
valLabel.Text = isFloat and string.format("%.2f", currentVal)..suffix or tostring(math.floor(currentVal))..suffix
local track = Instance.new("Frame"); track.Size = UDim2.new(1, -74, 0, 6); track.Position = UDim2.new(0, 0, 0.5, -3); track.BackgroundColor3 = Colors.ControlBg; track.BorderSizePixel = 0; track.Parent = container
Instance.new("UICorner", track).CornerRadius = UDim.new(1, 0)
local pct = math.clamp((currentVal - minVal) / (maxVal - minVal), 0, 1)
local fill = Instance.new("Frame"); fill.Size = UDim2.new(pct, 0, 1, 0); fill.BackgroundColor3 = Colors.PurpleAccent; fill.BorderSizePixel = 0; fill.Parent = track
Instance.new("UICorner", fill).CornerRadius = UDim.new(1, 0)
local sliding = false
local function updateFromX(x)
local rel = math.clamp((x - track.AbsolutePosition.X) / track.AbsoluteSize.X, 0, 1)
local val = minVal + (maxVal - minVal) * rel
if not isFloat then val = math.floor(val + 0.5) end
currentVal = val; fill.Size = UDim2.new(rel, 0, 1, 0)
valLabel.Text = isFloat and string.format("%.2f", val)..suffix or tostring(val)..suffix
if type(callback) == "function" then callback(val) end
end
track.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then sliding = true; updateFromX(input.Position.X) end end)
UserInputService.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then sliding = false end end)
table.insert(activeConnections, UserInputService.InputChanged:Connect(function(input) if sliding and input.UserInputType == Enum.UserInputType.MouseMovement then updateFromX(input.Position.X) end end))
return {
frame = row,
Set = function(val)
currentVal = math.clamp(val, minVal, maxVal)
local p2 = (currentVal - minVal) / (maxVal - minVal)
fill.Size = UDim2.new(p2, 0, 1, 0)
valLabel.Text = isFloat and string.format("%.2f", currentVal)..suffix or tostring(math.floor(currentVal))..suffix
end
}
end
local function createDropdownRow(parent, labelText, descText, options, initialVal, callback, indexSearch)
if type(options) == "table" and type(initialVal) == "function" then
indexSearch = callback
callback = initialVal
initialVal = options[1]
end
local selected = initialVal or options[1]
local row = Instance.new("Frame"); row.Size = UDim2.new(1, 0, 0, 42); row.AutomaticSize = Enum.AutomaticSize.Y; row.BackgroundColor3 = Colors.RowNormal; row.BorderSizePixel = 0; row.ClipsDescendants = true; row.Parent = parent
local rl = Instance.new("UIListLayout"); rl.SortOrder = Enum.SortOrder.LayoutOrder; rl.Padding = UDim.new(0, 4); rl.Parent = row
local header = Instance.new("Frame"); header.Size = UDim2.new(1, 0, 0, 42); header.BackgroundTransparency = 1; header.Parent = row
local pad = Instance.new("UIPadding"); pad.PaddingLeft = UDim.new(0, 10); pad.PaddingRight = UDim.new(0, 10); pad.Parent = header
local tf = Instance.new("Frame"); tf.Size = UDim2.new(1, -145, 1, 0); tf.BackgroundTransparency = 1; tf.Parent = header
local tl = Instance.new("TextLabel"); tl.Size = UDim2.new(1, 0, 0, 18); tl.Position = UDim2.new(0, 0, 0, 4); tl.BackgroundTransparency = 1; tl.Font = Enum.Font.GothamBold; tl.Text = labelText; tl.TextColor3 = Colors.TextWhite; tl.TextSize = 12; tl.TextXAlignment = Enum.TextXAlignment.Left; tl.Parent = tf
local dl = Instance.new("TextLabel"); dl.Size = UDim2.new(1, 0, 0, 14); dl.Position = UDim2.new(0, 0, 0, 22); dl.BackgroundTransparency = 1; dl.Font = Enum.Font.Gotham; dl.Text = descText or ""; dl.TextColor3 = Colors.TextMuted; dl.TextSize = 10; dl.TextXAlignment = Enum.TextXAlignment.Left; dl.Parent = tf
local ddBtn = Instance.new("TextButton"); ddBtn.Size = UDim2.new(0, 130, 0, 24); ddBtn.Position = UDim2.new(1, -130, 0.5, -12); ddBtn.BackgroundColor3 = Colors.ControlBg; ddBtn.Font = Enum.Font.GothamBold; ddBtn.Text = tostring(selected) .. " v"; ddBtn.TextColor3 = Colors.PurplePrimary; ddBtn.TextSize = 11; ddBtn.BorderSizePixel = 0; ddBtn.Parent = header
Instance.new("UICorner", ddBtn).CornerRadius = UDim.new(0, 4)
local optC = Instance.new("Frame"); optC.Size = UDim2.new(1, 0, 0, 0); optC.AutomaticSize = Enum.AutomaticSize.Y; optC.BackgroundTransparency = 1; optC.Visible = false; optC.Parent = row
do local p = Instance.new("UIPadding"); p.PaddingLeft = UDim.new(0, 10); p.PaddingRight = UDim.new(0, 10); p.PaddingBottom = UDim.new(0, 8); p.Parent = optC end
Instance.new("UIListLayout", optC).SortOrder = Enum.SortOrder.LayoutOrder
local optButtons = {}
local function populate(opts)
for _, c in ipairs(optC:GetChildren()) do if c:IsA("TextButton") then c:Destroy() end end
table.clear(optButtons)
for _, opt in ipairs(opts) do
local ob = Instance.new("TextButton"); ob.Size = UDim2.new(1, 0, 0, 26); ob.BackgroundColor3 = (opt == selected) and Colors.DropdownSelected or Colors.InputBg; ob.Font = Enum.Font.Gotham; ob.Text = (opt == selected and "> " or " ") .. tostring(opt); ob.TextColor3 = (opt == selected) and Colors.PurplePrimary or Colors.TextWhite; ob.TextSize = 11; ob.TextXAlignment = Enum.TextXAlignment.Left; ob.BorderSizePixel = 0; ob.Parent = optC
Instance.new("UICorner", ob).CornerRadius = UDim.new(0, 4)
do local p = Instance.new("UIPadding"); p.PaddingLeft = UDim.new(0, 10); p.Parent = ob end
optButtons[opt] = ob
ob.MouseEnter:Connect(function() if opt ~= selected then TweenService:Create(ob, TweenInfo.new(0.15), {BackgroundColor3 = Colors.RowHover}):Play() end end)
ob.MouseLeave:Connect(function() if opt ~= selected then TweenService:Create(ob, TweenInfo.new(0.15), {BackgroundColor3 = Colors.InputBg}):Play() end end)
ob.MouseButton1Click:Connect(function()
selected = opt; ddBtn.Text = tostring(opt) .. " v"; optC.Visible = false
for oN, b in pairs(optButtons) do b.BackgroundColor3 = (oN == opt) and Colors.DropdownSelected or Colors.InputBg; b.TextColor3 = (oN == opt) and Colors.PurplePrimary or Colors.TextWhite; b.Text = (oN == opt and "> " or " ") .. tostring(oN) end
if type(callback) == "function" then callback(opt) end
end)
end
end
populate(options)
ddBtn.MouseButton1Click:Connect(function() optC.Visible = not optC.Visible; ddBtn.Text = tostring(selected) .. (optC.Visible and " ^" or " v") end)
header.MouseEnter:Connect(function() TweenService:Create(row, TweenInfo.new(0.15), {BackgroundColor3 = Colors.RowHover}):Play() end)
header.MouseLeave:Connect(function() TweenService:Create(row, TweenInfo.new(0.15), {BackgroundColor3 = Colors.RowNormal}):Play() end)
if indexSearch ~= false then table.insert(rowSearchIndex, {frame = row, query = (labelText .. " " .. (descText or "")):lower()}) end
return {
frame = row,
Set = function(opt)
selected = opt; ddBtn.Text = tostring(opt) .. " v"
for oN, b in pairs(optButtons) do b.BackgroundColor3 = (oN == opt) and Colors.DropdownSelected or Colors.InputBg; b.TextColor3 = (oN == opt) and Colors.PurplePrimary or Colors.TextWhite; b.Text = (oN == opt and "> " or " ") .. tostring(oN) end
end,
Get = function() return selected end
}
end
local function createButtonRow(parent, labelText, descText, btnText, callback, indexSearch)
if type(descText) == "function" then
indexSearch = btnText
callback = descText
btnText = "Execute"
descText = ""
elseif type(btnText) == "function" then
indexSearch = callback
callback = btnText
btnText = descText
descText = ""
end
local row = createBaseRow(parent, labelText, descText, indexSearch)
local btn = Instance.new("TextButton"); btn.Size = UDim2.new(0, 90, 0, 24); btn.Position = UDim2.new(1, -90, 0.5, -12); btn.BackgroundColor3 = Colors.ControlBg; btn.Font = Enum.Font.GothamBold; btn.Text = btnText or "Execute"; btn.TextColor3 = Colors.PurplePrimary; btn.TextSize = 11; btn.BorderSizePixel = 0; btn.Parent = row
Instance.new("UICorner", btn).CornerRadius = UDim.new(0, 4)
btn.MouseEnter:Connect(function() TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Colors.PurpleDark, TextColor3 = Colors.TextWhite}):Play() end)
btn.MouseLeave:Connect(function() TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Colors.ControlBg, TextColor3 = Colors.PurplePrimary}):Play() end)
btn.MouseButton1Click:Connect(function()
if type(callback) == "function" then pcall(callback) end
end)
return btn
end
local function createInfoRow(parent, labelText, valueText, indexSearch)
local row = createBaseRow(parent, labelText, "", indexSearch)
local vl = Instance.new("TextLabel"); vl.Size = UDim2.new(0, 140, 1, 0); vl.Position = UDim2.new(1, -140, 0, 0); vl.BackgroundTransparency = 1; vl.Font = Enum.Font.GothamBold; vl.Text = valueText; vl.TextColor3 = Colors.PurplePrimary; vl.TextSize = 11; vl.TextXAlignment = Enum.TextXAlignment.Right; vl.Parent = row
return {frame = row, Set = function(nv) vl.Text = nv end}
end
local tabFishing = CreateTab("Fishing")
local tabBoss = CreateTab("Bosses")
local tabGod = CreateTab("God Spirits")
local tabQuests = CreateTab("Quests")
local tabShop = CreateTab("Shop & Craft")
local tabTeleports = CreateTab("Teleports")
local tabVisuals = CreateTab("Visuals")
local tabPlayer = CreateTab("Movement")
local tabProfiles = CreateTab("Profiles")
SwitchTab("Fishing")
local allRods = {
{name = "Wooden Rod", price = 0, power = 8, luck = 1},
{name = "Bamboo Rod", price = 100, power = 11, luck = 5},
{name = "Iron Hook Rod", price = 500, power = 13, luck = 10},
{name = "Steel Rod", price = 1000, power = 17, luck = 11},
{name = "Enchanted Steel Rod", price = 2000, power = 19, luck = 12},
{name = "Alloy Rod", price = 5000, power = 22, luck = 5},
{name = "Emerald Rod", price = 10000, power = 25, luck = 10},
{name = "Bloodfire Rod", price = 20000, power = 27, luck = 10},
{name = "Shadow Rod", price = 60000, power = 29, luck = 22},
{name = "Triple Steel Rod", price = 100000, power = 32, luck = 20},
{name = "Golden Rod", price = 200000, power = 35, luck = 22},
{name = "Grandmaster Steel Rod", price = 250000, power = 37, luck = 10},
{name = "Grandmaster Golden Rod", price = 1000000, power = 45, luck = 30},
{name = "Steel Spine Rod", price = 1500000, power = 48, luck = 20},
{name = "Inferno Rod", price = 1500000, power = 48, luck = 18},
{name = "Golden Spine Rod", price = 2000000, power = 51, luck = 21},
{name = "Platinum Spine Rod", price = 3000000, power = 54, luck = 25},
{name = "Diamond Spine Rod", price = 4000000, power = 56, luck = 25},
{name = "Gravisteel Rod", price = 5000000, power = 58, luck = 15},
{name = "Auric Gravity Rod", price = 6000000, power = 60, luck = 10},
{name = "Inferno Gravity Rod", price = 7000000, power = 62, luck = 20},
{name = "Cryo Gravity Rod", price = 8000000, power = 65, luck = 36},
{name = "Thunder Thorn Rod", price = 10000000, power = 67, luck = 30},
{name = "Starlight Rod", price = 60000000, power = 83, luck = 15},
}
createCategoryHeader(tabFishing, "Live Account & Fishing Stats")
local statsCard = createCardGroup(tabFishing)
local infoEquippedRod = createInfoRow(statsCard, "Equipped Rod", "None")
local infoEquippedBait = createInfoRow(statsCard, "Equipped Bait", "None")
local infoFishCaught = createInfoRow(statsCard, "Total Fish Caught", "0")
local infoCash = createInfoRow(statsCard, "Current Cash", "$0")
createCategoryHeader(tabFishing, "Core Fishing Automation")
local fishCard = createCardGroup(tabFishing)
createToggleRow(fishCard, "Auto Cast", "Automatically starts fishing & casts rod", Config.AutoCast, function(v) Config.AutoCast = v end)
createSliderRow(fishCard, "Cast Delay", "Frequency to check/cast", 0.5, 5.0, Config.CastDelay, true, "s", function(v) Config.CastDelay = v end)
createToggleRow(fishCard, "Anchor Bar (Minigame)", "Auto centers bar & guarantees catch progression", Config.AnchorBar, function(v) Config.AnchorBar = v end)
createToggleRow(fishCard, "Auto Skills (Burst DPS)", "Uses rod & minigame skills while reeling", Config.AutoSkills, function(v) Config.AutoSkills = v end)
createToggleRow(fishCard, "Auto Slam / Crits", "Auto-clicks Slam button when prompted for huge damage", Config.AutoSlam, function(v) Config.AutoSlam = v end)
createToggleRow(fishCard, "Auto Charge Durability", "Auto-charges line durability when prompted", Config.AutoCharge, function(v) Config.AutoCharge = v end)
createCategoryHeader(tabFishing, "Smart Auto-Equip Engine")
local equipCard = createCardGroup(tabFishing)
createToggleRow(equipCard, "Auto Equip Best Bait", "Equips highest luck bait in inventory", Config.AutoEquipBestBait, function(v) Config.AutoEquipBestBait = v end)
createToggleRow(equipCard, "Auto Equip Best Rod", "Equips highest power rod that you OWN", Config.AutoEquipBestRod, function(v) Config.AutoEquipBestRod = v end)
createToggleRow(equipCard, "Auto Equip Best Orb", "Equips best grade essence orb", Config.AutoEquipBestOrb, function(v) Config.AutoEquipBestOrb = v end)
local rodNameList = {}
for _, r in ipairs(allRods) do table.insert(rodNameList, r.name) end
local baitNameList = {"Basic Bait", "Crude Mash Bait", "Corrupted Essence Bait", "Elite Bait", "Ancestral Bait", "Nameless Bait"}
createDropdownRow(equipCard, "Loadout 1: Rod", "Rod for Loadout #1", rodNameList, Config.Loadout1_Rod, function(v) Config.Loadout1_Rod = v end)
createDropdownRow(equipCard, "Loadout 1: Bait", "Bait for Loadout #1", baitNameList, Config.Loadout1_Bait, function(v) Config.Loadout1_Bait = v end)
createButtonRow(equipCard, "Instant Equip Loadout 1", "Equip selected Rod & Bait for Loadout #1", "Equip #1", function()
local pData = ReplicatedStorage:FindFirstChild("Data") and ReplicatedStorage.Data:FindFirstChild(LocalPlayer.UserId)
if pData then
local rFolder = pData.FishingRodInventory:FindFirstChild(Config.Loadout1_Rod)
local isOwned = rFolder and rFolder:FindFirstChild("Owned") and rFolder.Owned.Value == true
if isOwned then
if Events:FindFirstChild("EquipFishingRod") then Events.EquipFishingRod:InvokeServer(Config.Loadout1_Rod) end
ShowNotification("Loadout #1", "Equipped rod: " .. Config.Loadout1_Rod, "SUCCESS")
else
ShowNotification("Loadout #1", "You do not own " .. Config.Loadout1_Rod .. " yet!", "WARN")
end
local bFolder = pData.Bait:FindFirstChild(Config.Loadout1_Bait)
if bFolder and bFolder.Value > 0 then
if Events:FindFirstChild("EquipBait") then Events.EquipBait:InvokeServer(Config.Loadout1_Bait) end
ShowNotification("Loadout #1", "Equipped bait: " .. Config.Loadout1_Bait, "SUCCESS")
else
ShowNotification("Loadout #1", "You have 0 of " .. Config.Loadout1_Bait .. " in inventory.", "WARN")
end
end
end)
createDropdownRow(equipCard, "Loadout 2: Rod", "Rod for Loadout #2", rodNameList, Config.Loadout2_Rod, function(v) Config.Loadout2_Rod = v end)
createDropdownRow(equipCard, "Loadout 2: Bait", "Bait for Loadout #2", baitNameList, Config.Loadout2_Bait, function(v) Config.Loadout2_Bait = v end)
createButtonRow(equipCard, "Instant Equip Loadout 2", "Equip selected Rod & Bait for Loadout #2", "Equip #2", function()
local pData = ReplicatedStorage:FindFirstChild("Data") and ReplicatedStorage.Data:FindFirstChild(LocalPlayer.UserId)
if pData then
local rFolder = pData.FishingRodInventory:FindFirstChild(Config.Loadout2_Rod)
local isOwned = rFolder and rFolder:FindFirstChild("Owned") and rFolder.Owned.Value == true
if isOwned then
if Events:FindFirstChild("EquipFishingRod") then Events.EquipFishingRod:InvokeServer(Config.Loadout2_Rod) end
ShowNotification("Loadout #2", "Equipped rod: " .. Config.Loadout2_Rod, "SUCCESS")
else
ShowNotification("Loadout #2", "You do not own " .. Config.Loadout2_Rod .. " yet!", "WARN")
end
local bFolder = pData.Bait:FindFirstChild(Config.Loadout2_Bait)
if bFolder and bFolder.Value > 0 then
if Events:FindFirstChild("EquipBait") then Events.EquipBait:InvokeServer(Config.Loadout2_Bait) end
ShowNotification("Loadout #2", "Equipped bait: " .. Config.Loadout2_Bait, "SUCCESS")
else
ShowNotification("Loadout #2", "You have 0 of " .. Config.Loadout2_Bait .. " in inventory.", "WARN")
end
end
end)
createCategoryHeader(tabFishing, "Economy & Selling")
local sellCard = createCardGroup(tabFishing)
createToggleRow(sellCard, "Auto Sell Fish", "Periodically sells all fish in inventory", Config.AutoSell, function(v) Config.AutoSell = v end)
createSliderRow(sellCard, "Sell Interval", "Frequency to sell fish", 10, 300, Config.SellInterval, false, "s", function(v) Config.SellInterval = v end)
createButtonRow(sellCard, "Sell Now & Teleport to Nana", "Instant teleport to Nana & sell inventory", "Sell Now", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(-203.5, 7.3, 107.1)
task.wait(0.3)
if Events and Events:FindFirstChild("SellFish") then
Events.SellFish:FireServer("All")
ShowNotification("Fish Sold", "Sold all fish to Nana!", "SUCCESS")
end
end
end)
local fishList = {"Colossal Tigerfish", "Heavenpiercer Turtle", "Golden Guardian Fish", "Crimson Electric Eel", "Frost Kingfish", "Ascended Perch", "Primordial Kunfish Overlord", "Warbringer Shark", "Mountain Fish", "Tiger Mirefish", "Mirage Lanternfish", "Octoparasitic Fish"}
createToggleRow(sellCard, "Auto Favourite Fish", "Protects chosen fish from being sold", Config.AutoFavouriteFish, function(v) Config.AutoFavouriteFish = v end)
createDropdownRow(sellCard, "Favourite Target", "Fish type to protect", fishList, Config.FavouriteFishName, function(v) Config.FavouriteFishName = v end)
createToggleRow(sellCard, "Material Farming", "Prevents auto selling of craft fish", Config.MaterialFarming, function(v) Config.MaterialFarming = v end)
createCategoryHeader(tabBoss, "Nameless Octoparasite (Secret Boss)")
local octoCard = createCardGroup(tabBoss)
createToggleRow(octoCard, "Auto Minigame (Rhythm Bot)", "100% Perfect Rhythm hit timing bot", Config.OctoAutoMinigame, function(v) Config.OctoAutoMinigame = v end)
createButtonRow(octoCard, "Teleport to Octoparasite", "Teleports to the Ocean Secret Boss Buoy", "Teleport", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(1608.2, 5.0, -218.3)
ShowNotification("Teleported", "Arrived at Nameless Octoparasite Ocean Buoy!", "SUCCESS")
end
end)
createButtonRow(octoCard, "Teleport to Fisher Place", "Teleports to Underground Fisher Realm", "Teleport", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(112.5, -330.0, -30.8)
ShowNotification("Teleported", "Arrived at Underground Fisher Place!", "SUCCESS")
end
end)
createCategoryHeader(tabBoss, "Boss Automation")
local bossFarmCard = createCardGroup(tabBoss)
createToggleRow(bossFarmCard, "Auto Farm Boss (Enzo)", "Continuously summons and defeats Enzo", Config.AutoFarmBoss, function(v) Config.AutoFarmBoss = v end)
createToggleRow(bossFarmCard, "Auto Farm Secret Boss", "Auto crafts Nameless Bait, summons & kills", Config.AutoFarmSecretBoss, function(v) Config.AutoFarmSecretBoss = v end)
createButtonRow(bossFarmCard, "Teleport to Enzo", "Teleports to Enzo arena", "Teleport", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(-115.3, 9.2, 1349.5)
ShowNotification("Teleported", "Arrived at Enzo!", "SUCCESS")
end
end)
createCategoryHeader(tabGod, "God Spirit Interactions & Status")
local godCard = createCardGroup(tabGod)
createButtonRow(godCard, "Check God Spirit Status", "Checks active blessings (Yellow / Blue / Green)", "Check Status", function()
local pData = ReplicatedStorage:FindFirstChild("Data") and ReplicatedStorage.Data:FindFirstChild(LocalPlayer.UserId)
if pData and pData:FindFirstChild("GodSpirit") then
local y = pData.GodSpirit:FindFirstChild("Yellow") and pData.GodSpirit.Yellow.Value or false
local b = pData.GodSpirit:FindFirstChild("Blue") and pData.GodSpirit.Blue.Value or false
local g = pData.GodSpirit:FindFirstChild("Green") and pData.GodSpirit.Green.Value or false
local msg = string.format("Yellow: %s | Blue: %s | Green: %s", y and "ACTIVE" or "OFF", b and "ACTIVE" or "OFF", g and "ACTIVE" or "OFF")
ShowNotification("God Spirit Status", msg, "SUCCESS", 6)
else
ShowNotification("God Spirit", "Could not read GodSpirit data.", "WARN")
end
end)
createToggleRow(godCard, "Auto Pray to God Spirit", "Automatically prays when at God Spirit Altar", Config.AutoPrayGodSpirit, function(v) Config.AutoPrayGodSpirit = v end)
createButtonRow(godCard, "Teleport to God Spirit Altar", "Teleports to God Spirit Altar (Battlefield Isle)", "Teleport", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
local spirit = (Workspace:FindFirstChild("NPC") and Workspace.NPC:FindFirstChild("Spirit")) or (Workspace:FindFirstChild("NPC") and Workspace.NPC:FindFirstChild("God"))
if spirit then
root.CFrame = spirit:GetPivot() + Vector3.new(0, 3, 5)
ShowNotification("God Spirit", "Teleported to God Spirit Altar!", "SUCCESS")
else
root.CFrame = CFrame.new(1245.7, 19.3, -133.4)
ShowNotification("God Spirit", "Teleported to Shrine location!", "SUCCESS")
end
end
end)
local function TriggerPrompt(prompt)
if fireproximityprompt then
fireproximityprompt(prompt)
else
pcall(function()
prompt:InputHoldBegin()
task.wait(prompt.HoldDuration + 0.05)
prompt:InputHoldEnd()
end)
end
end
createButtonRow(godCard, "Pray to God Spirit Now", "Interacts with God Spirit Altar prompt", "Pray", function()
local sp = (Workspace:FindFirstChild("NPC") and Workspace.NPC:FindFirstChild("Spirit")) or (Workspace:FindFirstChild("NPC") and Workspace.NPC:FindFirstChild("God"))
if sp then
local found = false
for _, d in ipairs(sp:GetDescendants()) do
if d:IsA("ProximityPrompt") then
TriggerPrompt(d)
found = true
end
end
if found then
ShowNotification("God Spirit", "Prayed to God Spirit at Altar!", "SUCCESS")
else
ShowNotification("God Spirit", "No ProximityPrompt found on Spirit.", "WARN")
end
else
ShowNotification("God Spirit", "God Spirit is not spawned in this server.", "WARN")
end
end)
createCategoryHeader(tabGod, "Server Hopping Engine")
local hopCard = createCardGroup(tabGod)
createToggleRow(hopCard, "Server Hop for God Spirit", "Hops servers until a God Spirit is found", Config.AutoServerHopGod, function(v) Config.AutoServerHopGod = v end)
createToggleRow(hopCard, "Server Hop for Maoshan", "Hops servers until Maoshan is found", Config.AutoServerHopMaoshan, function(v) Config.AutoServerHopMaoshan = v end)
createToggleRow(hopCard, "Server Hop for Taoist", "Hops servers until Taoist is found", Config.AutoServerHopTaoist, function(v) Config.AutoServerHopTaoist = v end)
local function ServerHop()
ShowNotification("Server Hop", "Searching for optimal server...", "WARN")
pcall(function()
local placeId = game.PlaceId
local url = "https://games.roblox.com/v1/games/" .. placeId .. "/servers/Public?sortOrder=Desc&limit=100"
local res = game:HttpGet(url)
local body = HttpService:JSONDecode(res)
if body and body.data then
for _, s in ipairs(body.data) do
if s.playing < s.maxPlayers and s.id ~= game.JobId then
TeleportService:TeleportToPlaceInstance(placeId, s.id, LocalPlayer)
return
end
end
end
end)
end
createButtonRow(hopCard, "Instant Server Hop", "Hop to a random different server now", "Hop Now", ServerHop)
createCategoryHeader(tabQuests, "Ticket Quests")
local questCard = createCardGroup(tabQuests)
createToggleRow(questCard, "Auto Ticket Quest", "Automatically accepts & turns in ticket quests", Config.AutoTicketQuest, function(v) Config.AutoTicketQuest = v end)
createDropdownRow(questCard, "Difficulty", "Ticket quest difficulty", {"Easy", "Hard"}, Config.TicketDifficulty, function(v) Config.TicketDifficulty = v end)
createButtonRow(questCard, "Manual Turn-in (Easy)", "Instantly submit Easy Quest", "Submit Easy", function()
if Events and Events:FindFirstChild("ClaimQuest") then
Events.ClaimQuest:FireServer("Ticket", "Easy")
ShowNotification("Quest", "Submitted Easy Ticket Quest!", "SUCCESS")
end
end)
createButtonRow(questCard, "Manual Turn-in (Hard)", "Instantly submit Hard Quest", "Submit Hard", function()
if Events and Events:FindFirstChild("ClaimQuest") then
Events.ClaimQuest:FireServer("Ticket", "Hard")
ShowNotification("Quest", "Submitted Hard Ticket Quest!", "SUCCESS")
end
end)
createCategoryHeader(tabQuests, "Daily Quests & Rewards")
local dailyCard = createCardGroup(tabQuests)
createButtonRow(dailyCard, "Collect Daily Quest", "Detects completed daily quest & collects", "Collect", function()
if Events and Events:FindFirstChild("ClaimQuest") then
for i = 1, 4 do Events.ClaimQuest:FireServer("Daily", i) end
ShowNotification("Daily Quest", "Collected all available daily quests!", "SUCCESS")
end
end)
createToggleRow(dailyCard, "Auto Claim Daily Rewards", "Sequentially claims daily rewards 1 to 7", Config.AutoClaimDaily, function(v) Config.AutoClaimDaily = v end)
createSliderRow(dailyCard, "Claim Delay", "Delay between claiming days", 0.2, 2.0, Config.DailyClaimDelay, true, "s", function(v) Config.DailyClaimDelay = v end)
createButtonRow(dailyCard, "Claim Days 1 to 7 Now", "Batch claims all 7 daily rewards", "Claim All", function()
task.spawn(function()
if Events and Events:FindFirstChild("DailyReward") then
for day = 1, 7 do
Events.DailyReward:FireServer(day)
task.wait(Config.DailyClaimDelay)
end
ShowNotification("Daily Rewards", "Successfully claimed days 1 to 7!", "SUCCESS")
end
end)
end)
createButtonRow(dailyCard, "Redeem All Codes", "Redeems all known active promo codes", "Redeem", function()
local codes = {"33MVisits", "32MVisits", "31MVisits", "30MVisits", "Taiji", "49KLikes", "48KLikes", "47KLikes", "46KLikes", "13KActives", "HWF", "RELEASE"}
if Events and Events:FindFirstChild("RedeemCode") then
for _, c in ipairs(codes) do
Events.RedeemCode:FireServer(c)
task.wait(0.2)
end
ShowNotification("Codes", "Redeemed all active codes!", "SUCCESS")
end
end)
createCategoryHeader(tabShop, "Bait Crafting & Buying")
local baitCard = createCardGroup(tabShop)
local craftBaits = {"Nameless Bait", "Frost Bait", "Rainbow Bait"}
createDropdownRow(baitCard, "Craft Target", "Mythical boss bait to craft", craftBaits, Config.CraftBaitName, function(v) Config.CraftBaitName = v end)
createSliderRow(baitCard, "Craft Amount", "Quantity to craft per batch", 1, 10, Config.CraftAmount, false, "", function(v) Config.CraftAmount = v end)
createToggleRow(baitCard, "Auto Craft Bait", "Continuously crafts when ingredients exist", Config.AutoCraftBait, function(v) Config.AutoCraftBait = v end)
local buyBaits = {"Ancestral Bait", "Elite Bait", "Corrupted Essence Bait", "Crude Mash Bait", "Basic Bait"}
createDropdownRow(baitCard, "Buy Target", "Bait to purchase from Ba Chang", buyBaits, Config.BuyBaitName, function(v) Config.BuyBaitName = v end)
createSliderRow(baitCard, "Buy Amount", "Amount to buy each purchase", 1, 50, Config.BuyBaitAmount, false, "", function(v) Config.BuyBaitAmount = v end)
createSliderRow(baitCard, "Stock Threshold", "Buy when inventory falls below this", 5, 50, Config.BuyBaitThreshold, false, "", function(v) Config.BuyBaitThreshold = v end)
createToggleRow(baitCard, "Auto Buy Bait", "Auto restocks bait when low", Config.AutoBuyBait, function(v) Config.AutoBuyBait = v end)
createCategoryHeader(tabShop, "Sage Yijiu (Skill Dealer)")
local sageCard = createCardGroup(tabShop)
local sageSkills = {"One-Strike Heaven Gate", "Taijiquan Technique", "Infinite Sky Ascension", "Rolling Chaos", "Sever the Gate", "Phoenix Strike Art", "Skyfall Stomp", "Beastbreaker Cleave", "Demonfall Technique", "Dragon Strike"}
local chosenSageSkill = sageSkills[1]
createDropdownRow(sageCard, "Choose Skill", "Skill to learn from Sage Yijiu", sageSkills, chosenSageSkill, function(v) chosenSageSkill = v end)
createButtonRow(sageCard, "Buy Skill & Teleport", "Teleport to Sage Yijiu & purchase skill", "Buy Skill", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(-117.5, 6.8, 41.2)
task.wait(0.3)
if Events and Events:FindFirstChild("BuySkill") then
Events.BuySkill:FireServer(chosenSageSkill)
ShowNotification("Sage Yijiu", "Purchased " .. chosenSageSkill .. "!", "SUCCESS")
end
end
end)
createCategoryHeader(tabShop, "Auto Gacha")
local gachaCard = createCardGroup(tabShop)
createDropdownRow(gachaCard, "Gacha Banner", "Active summon banner", {"Taiji Banner", "Egoless Banner"}, Config.GachaBanner, function(v) Config.GachaBanner = v end)
createSliderRow(gachaCard, "Tickets Per Pull", "Amount of tickets per pull action", 1, 10, Config.GachaPullsPerAction, false, "", function(v) Config.GachaPullsPerAction = v end)
createToggleRow(gachaCard, "Auto Gacha", "Automatically pulls from selected banner", Config.AutoGacha, function(v) Config.AutoGacha = v end)
createCategoryHeader(tabShop, "Rod Dealer Directory (Sorted by Price)")
local rodShopCard = createCardGroup(tabShop)
local function formatNumber(n)
if n == 0 then return "FREE" end
local formatted = tostring(n)
local k
while true do
formatted, k = string.gsub(formatted, "^(-?%d+)(%d%d%d)", "%1,%2")
if k == 0 then break end
end
return formatted .. " Cash"
end
for _, rod in ipairs(allRods) do
local pStr = formatNumber(rod.price)
local desc = string.format("Power: %d | Luck: %d%% | %s", rod.power, rod.luck, pStr)
createButtonRow(rodShopCard, rod.name, desc, "Buy", function()
if Events and Events:FindFirstChild("BuyFishingRod") then
Events.BuyFishingRod:FireServer(rod.name)
ShowNotification("Rod Dealer", "Attempted purchase of " .. rod.name, "SUCCESS")
end
end)
end
createCategoryHeader(tabTeleports, "Islands Progression (1-10)")
local islandCard = createCardGroup(tabTeleports)
local islands = {
{name = "[1] Beginning Isle (Spawn)", pos = Vector3.new(-200.7, 11.1, 35.9)},
{name = "[2] Bamboo Isle", pos = Vector3.new(-1223.0, 7.3, -24.1)},
{name = "[3] Fallout Isle", pos = Vector3.new(65.5, 8.8, 1181.3)},
{name = "[4] Sovereign Isle", pos = Vector3.new(-1276.4, 8.8, 1239.7)},
{name = "[5] Perch Isle", pos = Vector3.new(-62.0, 11.9, -1321.4)},
{name = "[6] Frost Isle", pos = Vector3.new(-1366.0, 11.9, -1495.4)},
{name = "[7] Coconut Isle", pos = Vector3.new(1493.6, 9.1, -1430.6)},
{name = "[8] Amber Isle", pos = Vector3.new(1259.4, 9.1, 1401.5)},
{name = "[9] Battlefield Isle", pos = Vector3.new(1393.5, 11.3, 169.6)},
{name = "[10] Mistpeak Isle", pos = Vector3.new(2660.2, 8.8, -86.7)},
}
for _, isl in ipairs(islands) do
createButtonRow(islandCard, isl.name, "Teleport to " .. isl.name, "Teleport", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(isl.pos + Vector3.new(0, 3, 0))
ShowNotification("Teleport", "Arrived at " .. isl.name .. "!", "SUCCESS")
end
end)
end
createCategoryHeader(tabTeleports, "Boss Arenas & Secret Realms")
local bossRealmCard = createCardGroup(tabTeleports)
local bossRealms = {
{name = "Octoparasite (Ocean Boss Buoy)", pos = Vector3.new(1608.2, 5.0, -218.3)},
{name = "Fisher Place (Underground Realm)", pos = Vector3.new(112.5, -330.0, -30.8)},
{name = "Enzo Boss Arena", pos = Vector3.new(-115.3, 9.2, 1349.5)},
}
for _, br in ipairs(bossRealms) do
createButtonRow(bossRealmCard, br.name, "Teleport to " .. br.name, "Teleport", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(br.pos + Vector3.new(0, 3, 0))
ShowNotification("Teleport", "Arrived at " .. br.name .. "!", "SUCCESS")
end
end)
end
createCategoryHeader(tabTeleports, "Rod Dealer Shops (Biao Di)")
local rodDealerCard = createCardGroup(tabTeleports)
local rodDealers = {
{name = "[1] Beginning Isle Dealer", pos = Vector3.new(-151.4, 8.7, -49.9)},
{name = "[2] Bamboo Isle Dealer", pos = Vector3.new(-1236.8, 7.3, -174.1)},
{name = "[3] Fallout Isle Dealer", pos = Vector3.new(138.4, 9.0, 1179.7)},
{name = "[4] Sovereign Isle Dealer", pos = Vector3.new(-1262.6, 8.2, 1202.2)},
{name = "[5] Perch Isle Dealer", pos = Vector3.new(-9.5, 9.2, -1330.0)},
{name = "[6] Frost Isle Dealer", pos = Vector3.new(-1400.4, 9.2, -1490.6)},
{name = "[7] Coconut Isle Dealer", pos = Vector3.new(1446.0, 9.3, -1408.0)},
{name = "[8] Amber Isle Dealer", pos = Vector3.new(1292.7, 8.2, 1497.4)},
}
for _, rd in ipairs(rodDealers) do
createButtonRow(rodDealerCard, rd.name, "Teleport directly to rod dealer", "Teleport", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(rd.pos + Vector3.new(0, 3, 0))
ShowNotification("Rod Dealer", "Arrived at " .. rd.name .. "!", "SUCCESS")
end
end)
end
createCategoryHeader(tabTeleports, "Secret Rod Locations")
local sRodCard = createCardGroup(tabTeleports)
local secretRods = {
{name = "Anchorbound Rod", pos = Vector3.new(-1208.5, 56.3, 1646.2)},
{name = "Blazeshark Rod", pos = Vector3.new(-8.4, 53.9, 6.7)},
{name = "Kraken Rod", pos = Vector3.new(1543.8, 73.4, 1490.9)},
{name = "Ascendant Bamboo Rod", pos = Vector3.new(-1360.6, 140.6, 31.0)},
{name = "Lifebloom Rod", pos = Vector3.new(-114.9, 74.9, -1533.2)},
{name = "Demonic Rod", pos = Vector3.new(1181.9, 82.9, -1243.8)}
}
for _, sr in ipairs(secretRods) do
createButtonRow(sRodCard, sr.name, "Teleport to secret rod location", "Teleport", function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if root then
root.CFrame = CFrame.new(sr.pos + Vector3.new(0, 3, 0))
ShowNotification("Secret Rod", "Teleported to " .. sr.name .. "!", "SUCCESS")
end
end)
end
createCategoryHeader(tabTeleports, "Server & Player Teleports")
local srvCard = createCardGroup(tabTeleports)
local lastTpTarget = nil
createButtonRow(srvCard, "Teleport to Random Player", "Teleport directly to another player", "Teleport", function()
local targets = {}
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character and p.Character:FindFirstChild("HumanoidRootPart") then
table.insert(targets, p)
end
end
if #targets == 0 then
ShowNotification("Player Teleport", "No other players found.", "WARN")
return
end
local pool = {}
for _, p in ipairs(targets) do
if not (#targets > 1 and p == lastTpTarget) then
table.insert(pool, p)
end
end
local selected = (#pool > 0 and pool[math.random(1, #pool)]) or targets[math.random(1, #targets)]
lastTpTarget = selected
local root = LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
if root and selected.Character and selected.Character:FindFirstChild("HumanoidRootPart") then
root.CFrame = selected.Character.HumanoidRootPart.CFrame + Vector3.new(0, 2, 3)
ShowNotification("Player Teleport", "Teleported to " .. selected.DisplayName, "SUCCESS")
end
end)
createCategoryHeader(tabVisuals, "World & Entity ESP")
local espCard = createCardGroup(tabVisuals)
createToggleRow(espCard, "God Spirit ESP", "Highlights active God Spirits", Config.ESP_GodSpirit, function(v) Config.ESP_GodSpirit = v end)
createToggleRow(espCard, "Secret Rod ESP", "Highlights all secret rod spots", Config.ESP_SecretRod, function(v) Config.ESP_SecretRod = v end)
createToggleRow(espCard, "Boats ESP", "Highlights spawned boats", Config.ESP_Boats, function(v) Config.ESP_Boats = v end)
createToggleRow(espCard, "Maoshan ESP", "Highlights Maoshan NPC / Rod", Config.ESP_Maoshan, function(v) Config.ESP_Maoshan = v end)
createToggleRow(espCard, "Taoist ESP", "Highlights Taoist NPC / Rod", Config.ESP_Taoist, function(v) Config.ESP_Taoist = v end)
createToggleRow(espCard, "Boss ESP", "Highlights active boss spawns", Config.ESP_Boss, function(v) Config.ESP_Boss = v end)
createToggleRow(espCard, "Players ESP", "Highlights other players with distance", Config.ESP_Players, function(v) Config.ESP_Players = v end)
createToggleRow(espCard, "Fish Target Ring", "Displays a glowing red ring around hooked fish while reeling", Config.FishRedRing, function(v) Config.FishRedRing = v end)
createCategoryHeader(tabVisuals, "Lighting & Performance")
local perfCard = createCardGroup(tabVisuals)
createToggleRow(perfCard, "No Fog & No Rain", "Clears world fog, haze, rain particles & lightning", Config.NoFog, function(v)
Config.NoFog = v
if v then
Lighting.FogEnd = 1000000
Lighting.FogStart = 1000000
local atmo = Lighting:FindFirstChildWhichIsA("Atmosphere")
if atmo then
atmo.Density = 0
atmo.Haze = 0
atmo.Glare = 0
end
for _, d in ipairs(Camera:GetDescendants()) do
if d:IsA("ParticleEmitter") then d.Enabled = false end
end
else
Lighting.FogEnd = 100000
Lighting.FogStart = 0
local atmo = Lighting:FindFirstChildWhichIsA("Atmosphere")
if atmo then
atmo.Density = 0.3
atmo.Haze = 0.5
end
end
end)
createToggleRow(perfCard, "Fullbright", "Sets maximum ambient brightness & visibility", Config.Fullbright, function(v)
Config.Fullbright = v
if not v then
Lighting.Brightness = 2
Lighting.Ambient = Color3.fromRGB(70, 70, 70)
Lighting.OutdoorAmbient = Color3.fromRGB(70, 70, 70)
Lighting.GlobalShadows = true
end
end)
createToggleRow(perfCard, "Performance Mode (Low GFX)", "Disables shadows & reduces rendering load", Config.PerformanceMode, function(v)
Config.PerformanceMode = v
Lighting.GlobalShadows = not v
end)
createToggleRow(perfCard, "Hide Game UI", "Hides Roblox game UI for clean view", Config.HideGameUI, function(v)
Config.HideGameUI = v
local pg = LocalPlayer:FindFirstChild("PlayerGui")
if pg then
if pg:FindFirstChild("MainGui") then pg.MainGui.Enabled = not v end
if pg:FindFirstChild("Fisher_GUI") then pg.Fisher_GUI.Enabled = not v end
end
end)
createButtonRow(perfCard, "Unlock All Index", "Reveals all 109 fish & items in game index", "Unlock Index", function()
local count = 0
local pData = ReplicatedStorage:FindFirstChild("Data") and ReplicatedStorage.Data:FindFirstChild(LocalPlayer.UserId)
if pData and pData:FindFirstChild("Index") then
for _, b in ipairs(pData.Index:GetChildren()) do
if b:IsA("BoolValue") then b.Value = true end
end
end
local pg = LocalPlayer:FindFirstChild("PlayerGui")
if pg and pg:FindFirstChild("MainGui") and pg.MainGui:FindFirstChild("Menu") and pg.MainGui.Menu:FindFirstChild("Index") then
local indexList = pg.MainGui.Menu.Index:FindFirstChild("IndexFrame") and pg.MainGui.Menu.Index.IndexFrame:FindFirstChild("Indexlist")
if indexList then
for _, f in ipairs(indexList:GetChildren()) do
if f:IsA("Frame") then
count = count + 1
local btn = f:FindFirstChild("Button")
if btn then
local title = btn:FindFirstChild("Title")
if title and title:IsA("TextLabel") then title.Text = f.Name end
local detail = btn:FindFirstChild("Detail")
if detail then
detail.Visible = true
for _, img in ipairs(detail:GetDescendants()) do
if img:IsA("ImageLabel") then img.ImageColor3 = Color3.new(1, 1, 1) end
end
end
end
end
end
end
end
ShowNotification("Index Unlocked", string.format("Revealed %d fish in your game Index!", count > 0 and count or 109), "SUCCESS")
end)
createCategoryHeader(tabPlayer, "Player Movement")
local moveCard = createCardGroup(tabPlayer)
createToggleRow(moveCard, "Walk Speed Boost", "Increases movement speed", Config.WalkSpeedEnabled, function(v)
Config.WalkSpeedEnabled = v
local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if hum then hum.WalkSpeed = v and Config.WalkSpeedValue or 16 end
end)
createSliderRow(moveCard, "Speed Value", "Target walk speed", 16, 120, Config.WalkSpeedValue, false, "", function(v)
Config.WalkSpeedValue = v
if Config.WalkSpeedEnabled then
local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if hum then hum.WalkSpeed = v end
end
end)
createToggleRow(moveCard, "Fly", "Fly freely using WASD & Space/Shift", Config.FlyEnabled, function(v) Config.FlyEnabled = v end)
createSliderRow(moveCard, "Fly Speed", "Flight velocity speed", 20, 150, Config.FlySpeed, false, "", function(v) Config.FlySpeed = v end)
createToggleRow(moveCard, "Infinite Jump", "Jump infinitely in mid-air", Config.InfiniteJump, function(v) Config.InfiniteJump = v end)
createToggleRow(moveCard, "Walk on Water", "Walk on ocean surface (SeaLevel: 0)", Config.WalkOnWater, function(v) Config.WalkOnWater = v end)
createToggleRow(moveCard, "Noclip", "Walk through solid barriers and walls", Config.Noclip, function(v) Config.Noclip = v end)
createCategoryHeader(tabPlayer, "Anti-AFK & Stability")
local stabCard = createCardGroup(tabPlayer)
createToggleRow(stabCard, "Anti-AFK", "Prevents Roblox 20-minute idle disconnect", Config.AntiAFK, function(v) Config.AntiAFK = v end)
createToggleRow(stabCard, "Auto Rejoin on Kick", "Automatically reconnects to server", Config.AutoRejoin, function(v) Config.AutoRejoin = v end)
createCategoryHeader(tabProfiles, "Profile Management")
local profCard = createCardGroup(tabProfiles)
createButtonRow(profCard, "Save Config Profile", "Saves all settings to JSON file", "Save Profile", function()
if SaveProfile() then
ShowNotification("Config Saved", "Profile 'default.json' saved successfully!", "SUCCESS")
else
ShowNotification("Config Error", "Failed to save profile.", "ERROR")
end
end)
createButtonRow(profCard, "Load Config Profile", "Loads settings from JSON file", "Load Profile", function()
if LoadProfile() then
ShowNotification("Config Loaded", "Profile 'default.json' loaded successfully!", "SUCCESS")
else
ShowNotification("Config Error", "No saved profile found.", "WARN")
end
end)
createToggleRow(profCard, "Auto Load Profile on Inject", "Automatically loads config on launch", Config.AutoLoadProfile, function(v) Config.AutoLoadProfile = v end)
createCategoryHeader(tabProfiles, "Session Actions")
local credCard = createCardGroup(tabProfiles)
createButtonRow(credCard, "Unload Script", "Cleanly unloads script and restores lighting", "Unload", UnloadScript)
local lastCastTime = 0
local lastSellTime = 0
local lastSkillTime = 0
local lastGachaTime = 0
local lastBaitBuyTime = 0
local lastQuestTime = 0
local lastGodPrayTime = 0
local lastEquipTime = 0
local lastProgressionTime = 0
local lastProtectTime = 0
local craftMaterialFish = {
["Mountain Fish"] = true,
["Catfish"] = true,
["Crimson Catfish"] = true,
["Scarlet Fish"] = true,
["Elder Scarlet Fish"] = true,
["Octoparasitic Fish"] = true,
["Tiger Mirefish"] = true,
["Mirage Lanternfish"] = true,
["Golden Guardian Fish"] = true,
["Frost Kingfish"] = true,
["Frost Queenfish"] = true,
["Rainbow Dragonfish"] = true,
["Sanguine Fish"] = true,
}
local waterPlatform = Instance.new("Part")
waterPlatform.Name = "IdenticalWaterPlatform"
waterPlatform.Size = Vector3.new(60, 2, 60)
waterPlatform.Anchored = true
waterPlatform.CanCollide = false
waterPlatform.Transparency = 1
waterPlatform.Parent = Workspace
table.insert(cleanUpInstances, waterPlatform)
table.insert(activeConnections, RunService.Heartbeat:Connect(function(dt)
if not isRunning then return end
pcall(function()
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
local hum = char and char:FindFirstChildOfClass("Humanoid")
if not root or not hum then return end
local now = tick()
local pg = LocalPlayer:FindFirstChild("PlayerGui")
local pData = ReplicatedStorage:FindFirstChild("Data") and ReplicatedStorage.Data:FindFirstChild(LocalPlayer.UserId)
if Config.WalkSpeedEnabled then
hum.WalkSpeed = Config.WalkSpeedValue
end
if Config.WalkOnWater then
waterPlatform.CFrame = CFrame.new(root.Position.X, 0, root.Position.Z)
waterPlatform.CanCollide = (root.Position.Y >= -1)
else
waterPlatform.CanCollide = false
end
if Config.Noclip then
for _, part in ipairs(char:GetDescendants()) do
if part:IsA("BasePart") and part.CanCollide then
part.CanCollide = false
end
end
end
local isFishing = char:GetAttribute("Fishing") == true
local isMinigame = char:GetAttribute("Minigame") == true or (pg and pg:FindFirstChild("MainGui") and pg.MainGui:FindFirstChild("Fishing") and pg.MainGui.Fishing.Visible)
local isCD = char:GetAttribute("CDForTheNextThrow") == true
local isSwimming = char:GetAttribute("Swimming") == true
if isMinigame then
local fUI = pg and pg:FindFirstChild("MainGui") and pg.MainGui:FindFirstChild("Fishing")
if fUI and fUI.Visible then
if Config.AnchorBar then
local barFrame = fUI:FindFirstChild("BarFrame")
if barFrame and barFrame:FindFirstChild("Bar") then
barFrame.Bar:TweenPosition(UDim2.new(0.5, 0, 0.5, 0), Enum.EasingDirection.InOut, Enum.EasingStyle.Linear, 0, true)
barFrame.Bar.Position = UDim2.new(0.5, 0, 0.5, 0)
end
end
if Config.AutoSlam and fUI:FindFirstChild("PerfectButton") and fUI.PerfectButton.Visible then
if Events:FindFirstChild("Slam") then
Events.Slam:FireServer()
end
end
if Config.AutoCharge and fUI:FindFirstChild("Charge") and fUI.Charge.Visible then
if Events:FindFirstChild("Charge") then
Events.Charge:FireServer()
end
end
if Config.AnchorBar and (now - lastProgressionTime >= 0.08) then
if Events and Events:FindFirstChild("UpdateFishProgression") then
Events.UpdateFishProgression:FireServer()
end
lastProgressionTime = now
end
if Config.AutoSkills and (now - lastSkillTime >= 0.15) then
for _, sk in ipairs({"Z", "X", "C", "V"}) do
if Events:FindFirstChild("UseSkill") then Events.UseSkill:FireServer(sk) end
if Events:FindFirstChild("TriggerMinigameSkill") then Events.TriggerMinigameSkill:FireServer(sk) end
end
lastSkillTime = now
end
end
elseif isFishing then
lastCastTime = now
else
if Config.AutoCast and not isCD and not isSwimming and (now - lastCastTime >= Config.CastDelay) then
local canCast = true
if pData and pData:FindFirstChild("InventoryLimit") then
local invCount = 0
if pData:FindFirstChild("Inventory") then invCount = invCount + #pData.Inventory:GetChildren() end
if pData:FindFirstChild("Hotbar") then
for _, item in ipairs(pData.Hotbar:GetChildren()) do
if item:FindFirstChild("Quantity") then invCount = invCount + item.Quantity.Value else invCount = invCount + 1 end
end
end
if invCount >= pData.InventoryLimit.Value then
canCast = false
if Config.AutoSell and (now - lastSellTime >= 5.0) and Events:FindFirstChild("SellFish") then
if (Config.MaterialFarming or Config.AutoFavouriteFish) and pData:FindFirstChild("Inventory") then
for _, item in ipairs(pData.Inventory:GetChildren()) do
local itemName = item.Name
local isFav = item:FindFirstChild("Favorite") and item.Favorite.Value == true
if not isFav and ((Config.MaterialFarming and craftMaterialFish[itemName]) or (Config.AutoFavouriteFish and itemName == Config.FavouriteFishName)) then
if Events:FindFirstChild("FavoriteItem") then Events.FavoriteItem:FireServer(item) end
end
end
end
Events.SellFish:FireServer("All")
lastSellTime = now
end
end
end
if Config.AutoSell and (now - lastSellTime >= Config.SellInterval) and Events:FindFirstChild("SellFish") then
if (Config.MaterialFarming or Config.AutoFavouriteFish) and pData and pData:FindFirstChild("Inventory") then
for _, item in ipairs(pData.Inventory:GetChildren()) do
local itemName = item.Name
local isFav = item:FindFirstChild("Favorite") and item.Favorite.Value == true
if not isFav and ((Config.MaterialFarming and craftMaterialFish[itemName]) or (Config.AutoFavouriteFish and itemName == Config.FavouriteFishName)) then
if Events:FindFirstChild("FavoriteItem") then Events.FavoriteItem:FireServer(item) end
end
end
end
Events.SellFish:FireServer("All")
lastSellTime = now
end
if (Config.MaterialFarming or Config.AutoFavouriteFish) and (now - lastProtectTime >= 1.5) and pData and pData:FindFirstChild("Inventory") then
lastProtectTime = now
for _, item in ipairs(pData.Inventory:GetChildren()) do
local itemName = item.Name
local isFav = item:FindFirstChild("Favorite") and item.Favorite.Value == true
if not isFav then
local shouldProtect = false
if Config.MaterialFarming and craftMaterialFish[itemName] then shouldProtect = true end
if Config.AutoFavouriteFish and itemName == Config.FavouriteFishName then shouldProtect = true end
if shouldProtect and Events:FindFirstChild("FavoriteItem") then
Events.FavoriteItem:FireServer(item)
end
end
end
end
if canCast and Events and Events:FindFirstChild("Fishing") then
Events.Fishing:FireServer(root.CFrame)
lastCastTime = now
end
end
end
if (now - lastEquipTime >= 5.0) and pData then
lastEquipTime = now
if Config.AutoEquipBestBait and pData:FindFirstChild("Bait") and pData:FindFirstChild("EquippedBait") and Events:FindFirstChild("EquipBait") then
local bestBait = nil
local bestLuck = -1
local baitLuckMap = {
["Ancestral Bait"] = 50,
["Elite Bait"] = 30,
["Corrupted Essence Bait"] = 18,
["Crude Mash Bait"] = 8,
["Basic Bait"] = 3
}
for bName, bLuck in pairs(baitLuckMap) do
local bVal = pData.Bait:FindFirstChild(bName)
if bVal and bVal.Value > 0 and bLuck > bestLuck then
bestLuck = bLuck
bestBait = bName
end
end
if bestBait and pData.EquippedBait.Value ~= bestBait then
Events.EquipBait:InvokeServer(bestBait)
end
end
if Config.AutoEquipBestRod and pData:FindFirstChild("FishingRodInventory") and pData:FindFirstChild("FishingRod") and Events:FindFirstChild("EquipFishingRod") then
local bestRod = nil
local bestPower = -1
for _, r in ipairs(allRods) do
local rFolder = pData.FishingRodInventory:FindFirstChild(r.name)
local isOwned = rFolder and rFolder:FindFirstChild("Owned") and rFolder.Owned.Value == true
if isOwned and r.power > bestPower then
bestPower = r.power
bestRod = r.name
end
end
if bestRod and pData.FishingRod.Value ~= bestRod then
Events.EquipFishingRod:InvokeServer(bestRod)
end
end
if Config.AutoEquipBestOrb and pData:FindFirstChild("Orb") and Events:FindFirstChild("EquipOrb") then
local orbs = pData.Orb:GetChildren()
if #orbs > 0 then
local bestOrb = orbs[#orbs].Name
Events.EquipOrb:InvokeServer(bestOrb)
end
end
if pData:FindFirstChild("FishingRod") and pData.FishingRod.Value ~= "" then infoEquippedRod.Set(pData.FishingRod.Value) end
if pData:FindFirstChild("EquippedBait") and pData.EquippedBait.Value ~= "" then infoEquippedBait.Set(pData.EquippedBait.Value) end
if pData:FindFirstChild("FishCaught") then infoFishCaught.Set(tostring(pData.FishCaught.Value)) end
if pData:FindFirstChild("Cash") then infoCash.Set("$" .. tostring(pData.Cash.Value)) end
end
if Config.AutoSell and (now - lastSellTime >= Config.SellInterval) then
if Events and Events:FindFirstChild("SellFish") then
Events.SellFish:FireServer("All")
lastSellTime = now
end
end
if Config.AutoPrayGodSpirit and (now - lastGodPrayTime >= 3.0) then
if Workspace:FindFirstChild("NPC") then
local sp = Workspace.NPC:FindFirstChild("Spirit") or Workspace.NPC:FindFirstChild("God")
if sp then
for _, d in ipairs(sp:GetDescendants()) do
if d:IsA("ProximityPrompt") then
TriggerPrompt(d)
lastGodPrayTime = now
end
end
end
end
end
if Config.AutoTicketQuest and (now - lastQuestTime >= 2.0) then
if Events and Events:FindFirstChild("ClaimQuest") then
Events.ClaimQuest:FireServer("Ticket", Config.TicketDifficulty)
lastQuestTime = now
end
end
if Config.AutoClaimDaily and (now - lastCastTime >= 2.0) then
if Events and Events:FindFirstChild("DailyReward") then
for day = 1, 7 do Events.DailyReward:FireServer(day) end
end
end
if Config.AutoGacha and (now - lastGachaTime >= 1.5) then
if Events and Events:FindFirstChild("Gacha") then
Events.Gacha:FireServer(Config.GachaBanner, Config.GachaPullsPerAction)
lastGachaTime = now
end
end
if Config.AutoCraftBait and (now - lastCastTime >= 2.0) then
if Events and Events:FindFirstChild("CraftBait") then
Events.CraftBait:FireServer(Config.CraftBaitName, Config.CraftAmount)
end
end
if Config.AutoBuyBait and (now - lastBaitBuyTime >= Config.BuyBaitDelay) then
if Events and Events:FindFirstChild("BuyBait") then
Events.BuyBait:FireServer(Config.BuyBaitName, Config.BuyBaitAmount)
lastBaitBuyTime = now
end
end
if Config.OctoAutoMinigame then
if Events and Events:FindFirstChild("RhythmHit") then
Events.RhythmHit:FireServer(true, 100)
end
end
end)
end))
local flyBV, flyBG = nil, nil
table.insert(activeConnections, RunService.RenderStepped:Connect(function()
if not isRunning then return end
local char = LocalPlayer.Character
local root = char and char:FindFirstChild("HumanoidRootPart")
if not root then return end
if Config.FlyEnabled then
if not flyBV then
flyBV = Instance.new("BodyVelocity")
flyBV.MaxForce = Vector3.new(9e9, 9e9, 9e9)
flyBV.Parent = root
table.insert(cleanUpInstances, flyBV)
flyBG = Instance.new("BodyGyro")
flyBG.MaxTorque = Vector3.new(9e9, 9e9, 9e9)
flyBG.Parent = root
table.insert(cleanUpInstances, flyBG)
end
local camCF = Camera.CFrame
local dir = Vector3.zero
if UserInputService:IsKeyDown(Enum.KeyCode.W) then dir = dir + camCF.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.S) then dir = dir - camCF.LookVector end
if UserInputService:IsKeyDown(Enum.KeyCode.D) then dir = dir + camCF.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.A) then dir = dir - camCF.RightVector end
if UserInputService:IsKeyDown(Enum.KeyCode.Space) then dir = dir + Vector3.new(0, 1, 0) end
if UserInputService:IsKeyDown(Enum.KeyCode.LeftShift) then dir = dir - Vector3.new(0, 1, 0) end
flyBG.CFrame = camCF
flyBV.Velocity = dir.Unit * Config.FlySpeed
if dir.Magnitude == 0 then flyBV.Velocity = Vector3.zero end
else
if flyBV then flyBV:Destroy(); flyBV = nil end
if flyBG then flyBG:Destroy(); flyBG = nil end
end
end))
table.insert(activeConnections, RunService.RenderStepped:Connect(function()
if not isRunning then return end
pcall(function()
if Config.AnchorBar then
local pg = LocalPlayer:FindFirstChild("PlayerGui")
if pg and pg:FindFirstChild("MainGui") and pg.MainGui:FindFirstChild("Fishing") and pg.MainGui.Fishing.Visible then
local fUI = pg.MainGui.Fishing
local barFrame = fUI:FindFirstChild("BarFrame")
if barFrame and barFrame:FindFirstChild("Bar") then
barFrame.Bar.Position = UDim2.new(0.5, 0, 0.5, 0)
end
local bossBar = fUI:FindFirstChild("BossFightBar")
if bossBar and bossBar.Visible and bossBar:FindFirstChild("Bar") and bossBar:FindFirstChild("Hitbox") then
bossBar.Bar.Position = bossBar.Hitbox.Position
end
local hpPlayer = fUI:FindFirstChild("HPPlayer")
if hpPlayer and hpPlayer:FindFirstChild("ProgressionBar") then
local pBar = hpPlayer.ProgressionBar
if pBar:FindFirstChild("Bar") then
pBar.Bar.Size = UDim2.new(1, 0, 1, 0)
end
end
if fUI:FindFirstChild("PerfectButton") and fUI.PerfectButton.Visible then
if Events and Events:FindFirstChild("Slam") then Events.Slam:FireServer("Perfect") end
end
if fUI:FindFirstChild("Charge") and fUI.Charge.Visible then
if Events and Events:FindFirstChild("Charge") then Events.Charge:FireServer(100) end
end
local cutscene = pg:FindFirstChild("MainGui") and pg.MainGui:FindFirstChild("Cutscene")
if cutscene and cutscene:FindFirstChild("Hurt") then
cutscene.Hurt.ImageTransparency = 1
end
local impactCutscene = pg:FindFirstChild("Impact") and pg.Impact:FindFirstChild("Cutscene")
if impactCutscene and impactCutscene:FindFirstChild("Hurt") then
impactCutscene.Hurt.ImageTransparency = 1
end
end
end
end)
end))
if Events and Events:FindFirstChild("Slam") then
table.insert(activeConnections, Events.Slam.OnClientEvent:Connect(function(slamEvent)
if isRunning and Config.AnchorBar and typeof(slamEvent) == "Instance" then
pcall(function() slamEvent:FireServer("Perfect") end)
end
end))
end
if Events and Events:FindFirstChild("Charge") then
table.insert(activeConnections, Events.Charge.OnClientEvent:Connect(function(chargeEvent)
if isRunning and Config.AnchorBar and typeof(chargeEvent) == "Instance" then
pcall(function() chargeEvent:FireServer(100) end)
end
end))
end
table.insert(activeConnections, UserInputService.JumpRequest:Connect(function()
if Config.InfiniteJump and isRunning then
local hum = LocalPlayer.Character and LocalPlayer.Character:FindFirstChildOfClass("Humanoid")
if hum then hum:ChangeState(Enum.HumanoidStateType.Jumping) end
end
end))
pcall(function()
LocalPlayer.Idled:Connect(function()
if Config.AntiAFK and isRunning then
local vu = game:GetService("VirtualUser")
if vu then
vu:CaptureController()
vu:ClickButton2(Vector2.new(0, 0))
end
end
end)
end)
local espFolder = Instance.new("Folder")
espFolder.Name = "IdenticalESP"
espFolder.Parent = Workspace
table.insert(cleanUpInstances, espFolder)
local activeESP = {}
local fishRingAnchor = Instance.new("Part")
fishRingAnchor.Name = "FishRingAnchor"
fishRingAnchor.Size = Vector3.new(0.5, 0.5, 0.5)
fishRingAnchor.Transparency = 1
fishRingAnchor.CanCollide = false
fishRingAnchor.Anchored = true
fishRingAnchor.Parent = Workspace
table.insert(cleanUpInstances, fishRingAnchor)
local fishRingAdornment = Instance.new("CylinderHandleAdornment")
fishRingAdornment.Name = "FishRingAdornment"
fishRingAdornment.Adornee = fishRingAnchor
fishRingAdornment.AlwaysOnTop = true
fishRingAdornment.ZIndex = 5
fishRingAdornment.Radius = 6
fishRingAdornment.InnerRadius = 5.2
fishRingAdornment.Height = 0.2
fishRingAdornment.Color3 = Color3.fromRGB(255, 45, 45)
fishRingAdornment.Transparency = 0.2
fishRingAdornment.CFrame = CFrame.Angles(math.rad(90), 0, 0)
fishRingAdornment.Visible = false
fishRingAdornment.Parent = fishRingAnchor
local function AddESP(instance, name, espCategory, color, icon)
if not instance or activeESP[instance] then return end
local part = instance:IsA("BasePart") and instance or instance:FindFirstChildWhichIsA("BasePart")
if not part then return end
local bb = Instance.new("BillboardGui")
bb.Name = "ESP_" .. name
bb.Size = UDim2.new(0, 150, 0, 24)
bb.StudsOffset = Vector3.new(0, 2.5, 0)
bb.AlwaysOnTop = true
bb.Adornee = part
bb.Parent = espFolder
local f = Instance.new("Frame", bb)
f.Size = UDim2.new(1, 0, 1, 0)
f.BackgroundColor3 = Colors.Background
f.BackgroundTransparency = 0.2
Instance.new("UICorner", f).CornerRadius = UDim.new(0, 4)
local s = Instance.new("UIStroke", f)
s.Color = color or Colors.PurpleAccent
s.Thickness = 1
local lbl = Instance.new("TextLabel", f)
lbl.Size = UDim2.new(1, 0, 1, 0)
lbl.BackgroundTransparency = 1
lbl.Font = Enum.Font.GothamBold
lbl.Text = (icon or "") .. " " .. name
lbl.TextColor3 = color or Colors.TextWhite
lbl.TextSize = 10
activeESP[instance] = {gui = bb, label = lbl, part = part, espCategory = espCategory, name = name, icon = icon or ""}
end
local function RemoveESP(instance)
local data = activeESP[instance]
if data then
if data.gui and data.gui.Parent then data.gui:Destroy() end
activeESP[instance] = nil
end
end
table.insert(activeConnections, RunService.RenderStepped:Connect(function()
if not isRunning then return end
if Config.Fullbright then
Lighting.Brightness = 2.5
Lighting.ClockTime = 14
Lighting.FogEnd = 1000000
Lighting.GlobalShadows = false
Lighting.Ambient = Color3.fromRGB(180, 180, 180)
Lighting.OutdoorAmbient = Color3.fromRGB(180, 180, 180)
end
if Config.NoFog then
Lighting.FogEnd = 1000000
Lighting.FogStart = 1000000
local atmo = Lighting:FindFirstChildWhichIsA("Atmosphere")
if atmo and (atmo.Density > 0 or atmo.Haze > 0) then
atmo.Density = 0
atmo.Haze = 0
atmo.Glare = 0
end
for _, d in ipairs(Camera:GetDescendants()) do
if d:IsA("ParticleEmitter") and d.Enabled then
d.Enabled = false
end
end
end
for _, p in ipairs(Players:GetPlayers()) do
if p ~= LocalPlayer and p.Character then
local hrp = p.Character:FindFirstChild("HumanoidRootPart")
if hrp then
AddESP(p.Character, p.DisplayName, "Players", Colors.PurpleAccent, "👤")
end
end
end
if Workspace:FindFirstChild("SecretRod") then
for _, r in ipairs(Workspace.SecretRod:GetChildren()) do
AddESP(r, r.Name, "SecretRod", Colors.AccentYellow, "🌟")
end
end
if Workspace:FindFirstChild("NPC") then
local sp = Workspace.NPC:FindFirstChild("Spirit") or Workspace.NPC:FindFirstChild("God")
if sp then
AddESP(sp, "God Spirit", "GodSpirit", Colors.AccentGreen, "⛩️")
end
end
if Workspace:FindFirstChild("Boat") then
for _, b in ipairs(Workspace.Boat:GetChildren()) do
AddESP(b, b.Name, "Boats", Colors.AccentBlue, "⛵")
end
end
if Workspace:FindFirstChild("BossSetUp") then
for _, b in ipairs(Workspace.BossSetUp:GetChildren()) do
AddESP(b, b.Name, "Boss", Colors.AccentRed, "👹")
end
end
if Workspace:FindFirstChild("NPC") then
for _, n in ipairs(Workspace.NPC:GetChildren()) do
if n.Name:find("Taoist") or n.Name:find("Grand Angler") then
AddESP(n, n.Name, "Taoist", Colors.AccentOrange, "📜")
elseif n.Name:find("Maoshan") then
AddESP(n, n.Name, "Maoshan", Colors.PurplePrimary, "✨")
end
end
end
local camPos = Camera.CFrame.Position
for inst, data in pairs(activeESP) do
if not inst.Parent or not data.part.Parent then
RemoveESP(inst)
else
local isEnabled = Config["ESP_" .. data.espCategory]
data.gui.Enabled = isEnabled and true or false
if isEnabled then
local dist = math.floor((camPos - data.part.Position).Magnitude)
data.label.Text = data.icon .. " " .. data.name .. " [" .. dist .. "m]"
end
end
end
if Config.FishRedRing then
local fishPos = nil
local char = LocalPlayer.Character
if char then
for _, d in ipairs(char:GetDescendants()) do
if (d:IsA("Beam") or d:IsA("RopeConstraint") or d:IsA("SpringConstraint")) and d.Attachment1 then
fishPos = d.Attachment1.WorldPosition
break
end
end
end
if not fishPos and Workspace:FindFirstChild("Fishes") then
local uid = tostring(LocalPlayer.UserId)
for _, f in ipairs(Workspace.Fishes:GetChildren()) do
if f:FindFirstChild(uid .. "_PlayerHealth") then
if f:FindFirstChild("Model") and f.Model:IsA("Model") then
fishPos = f.Model:GetPivot().Position
elseif f:FindFirstChild("Buoy") and f.Buoy:IsA("BasePart") then
fishPos = f.Buoy.Position
end
break
end
end
end
local pg = LocalPlayer:FindFirstChild("PlayerGui")
local isHooked = char and (char:GetAttribute("Fishing") == true or char:GetAttribute("Minigame") == true)
local fUI = pg and pg:FindFirstChild("MainGui") and pg.MainGui:FindFirstChild("Fishing")
if (isHooked or (fUI and fUI.Visible)) and fishPos then
fishRingAnchor.Position = fishPos
fishRingAdornment.Visible = true
else
fishRingAdornment.Visible = false
end
else
if fishRingAdornment.Visible then fishRingAdornment.Visible = false end
end
end))
table.insert(activeConnections, UserInputService.InputBegan:Connect(function(input, gpe)
if gpe then return end
if input.KeyCode == Enum.KeyCode.RightControl or input.KeyCode == Config.UIKeybind then
if ToggleUiVisibility then ToggleUiVisibility() end
elseif input.KeyCode == Enum.KeyCode.End or input.KeyCode == Config.StopKeybind then
UnloadScript()
end
end))
ShowNotification("IDENTICAL V1.0", "Heavyweight Fishing script ready! Press R-CTRL to toggle.", "SUCCESS", 5)