-- Fisch Script by JayRBLX Scripts local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))() local Window = Rayfield:CreateWindow({ Name = "Fisch Script | by JayRBLX Scripts", LoadingTitle = "Loading Fisch Script...", LoadingSubtitle = "by JayRBLX Scripts", ConfigurationSaving = { Enabled = true, FolderName = nil, FileName = "FischScript" }, Discord = { Enabled = false, Invite = "noinvitelink", RememberJoins = true }, KeySystem = false, KeySettings = { Title = "Untitled", Subtitle = "Key System", Note = "No method of obtaining the key is provided", FileName = "Key", SaveKey = true, GrabKeyFromSite = false, Key = {"Hello"} } }) -- Services local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local RunService = game:GetService("RunService") local VirtualUser = game:GetService("VirtualUser") local Player = Players.LocalPlayer local Character = Player.Character or Player.CharacterAdded:Wait() local Humanoid = Character:WaitForChild("Humanoid") -- Auto Features States local autoShakeEnabled = false local autoCastEnabled = false local autoCastMethod = "Method 1" local autoReelEnabled = false local infiniteOxygenEnabled = false local espEnabled = false -- Connections local shakeConnection local castConnection local reelConnection local oxygenConnection -- Timers local lastShakeClick = 0 local lastCastClick = 0 -- HOME TAB local HomeTab = Window:CreateTab("Home", 4483362458) local HomeSection = HomeTab:CreateSection("Welcome!") local HomeLabel = HomeTab:CreateLabel("Welcome to Fisch Script by JayRBLX!") local HomeLabel2 = HomeTab:CreateLabel("Use the tabs to access features") local HomeLabel3 = HomeTab:CreateLabel("Have fun fishing!") local HomeParagraph = HomeTab:CreateParagraph({Title = "Information", Content = "This script provides auto fishing features, teleportation, and player modifications. Make sure to use responsibly!"}) -- FISH TAB local FishTab = Window:CreateTab("Fish", 4483362458) local FishSection = FishTab:CreateSection("Auto Features") -- Auto Shake Function (EVEN SLOWER - More human-like) local function autoShake() if shakeConnection then shakeConnection:Disconnect() end shakeConnection = RunService.Heartbeat:Connect(function() if not autoShakeEnabled then return end local currentTime = tick() if currentTime - lastShakeClick < 0.15 then return end -- Even slower (0.15 second delay) local playerGui = Player:FindFirstChild("PlayerGui") if not playerGui then return end local shakeui = playerGui:FindFirstChild("shakeui") if shakeui and shakeui.Enabled then local safezone = shakeui:FindFirstChild("safezone") if safezone then local button = safezone:FindFirstChild("button") if button and button.Visible then -- Directly fire button connections for i, connection in pairs(getconnections(button.MouseButton1Click)) do connection:Fire() end lastShakeClick = currentTime end end end end) end local AutoShakeToggle = FishTab:CreateToggle({ Name = "Auto Shake", CurrentValue = false, Flag = "AutoShake", Callback = function(Value) autoShakeEnabled = Value if Value then autoShake() Rayfield:Notify({ Title = "Auto Shake Enabled", Content = "Auto-clicking shake buttons (human-like speed)", Duration = 3, Image = 4483362458, }) else if shakeConnection then shakeConnection:Disconnect() end Rayfield:Notify({ Title = "Auto Shake Disabled", Content = "Auto shake has been turned off", Duration = 3, Image = 4483362458, }) end end, }) -- Auto Cast Methods local function autoCastMethod1() local playerGui = Player:FindFirstChild("PlayerGui") if not playerGui then return end local castingGui = playerGui:FindFirstChild("casting") if castingGui and castingGui.Enabled then local safezone = castingGui:FindFirstChild("safezone") if safezone then local button = safezone:FindFirstChild("button") if button and button.Visible then for i, connection in pairs(getconnections(button.MouseButton1Click)) do connection:Fire() end return true end end end return false end local function autoCastMethod2() local playerGui = Player:FindFirstChild("PlayerGui") if not playerGui then return end local castingGui = playerGui:FindFirstChild("casting") if castingGui and castingGui.Enabled then local success = pcall(function() local events = ReplicatedStorage:FindFirstChild("events") if events then local castEvent = events:FindFirstChild("cast") if castEvent then castEvent:FireServer(100) end end end) return success end return false end local function autoCastMethod3() local playerGui = Player:FindFirstChild("PlayerGui") if not playerGui then return end local castingGui = playerGui:FindFirstChild("casting") if castingGui and castingGui.Enabled then local bar = castingGui:FindFirstChild("bar") if bar then local indicator = bar:FindFirstChild("indicator") local goal = bar:FindFirstChild("goal") if indicator and goal and indicator.Visible and goal.Visible then local indicatorPos = indicator.Position.X.Scale local goalPos = goal.Position.X.Scale local goalSize = goal.Size.X.Scale if indicatorPos >= goalPos and indicatorPos <= (goalPos + goalSize) then local safezone = castingGui:FindFirstChild("safezone") if safezone then local button = safezone:FindFirstChild("button") if button then for i, connection in pairs(getconnections(button.MouseButton1Click)) do connection:Fire() end return true end end end end end end return false end -- Auto Cast Function with method selection local function autoCast() if castConnection then castConnection:Disconnect() end castConnection = RunService.Heartbeat:Connect(function() if not autoCastEnabled then return end local currentTime = tick() if currentTime - lastCastClick < 0.1 then return end local success = false if autoCastMethod == "Method 1" then success = autoCastMethod1() elseif autoCastMethod == "Method 2" then success = autoCastMethod2() elseif autoCastMethod == "Method 3" then success = autoCastMethod3() end if success then lastCastClick = currentTime end end) end local AutoCastDropdown = FishTab:CreateDropdown({ Name = "Auto Cast Method", Options = {"Method 1", "Method 2", "Method 3"}, CurrentOption = {"Method 1"}, MultipleOptions = false, Flag = "AutoCastMethod", Callback = function(Option) autoCastMethod = Option[1] Rayfield:Notify({ Title = "Cast Method Changed", Content = "Now using " .. Option[1], Duration = 3, Image = 4483362458, }) -- Restart auto cast if enabled if autoCastEnabled then autoCast() end end, }) local AutoCastToggle = FishTab:CreateToggle({ Name = "Auto Cast (Perfect Cast)", CurrentValue = false, Flag = "AutoCast", Callback = function(Value) autoCastEnabled = Value if Value then autoCast() Rayfield:Notify({ Title = "Auto Cast Enabled", Content = "Using " .. autoCastMethod, Duration = 3, Image = 4483362458, }) else if castConnection then castConnection:Disconnect() end Rayfield:Notify({ Title = "Auto Cast Disabled", Content = "Auto cast has been turned off", Duration = 3, Image = 4483362458, }) end end, }) local CastMethodInfo = FishTab:CreateParagraph({ Title = "Cast Methods Info", Content = "Method 1: Direct Button Fire | Method 2: Remote Event Fire | Method 3: Perfect Timing Detection. Try different methods if one doesn't work!" }) -- Auto Reel Function (PERFECTLY CENTERED ON BAR) local function autoReel() if reelConnection then reelConnection:Disconnect() end reelConnection = RunService.Heartbeat:Connect(function() if not autoReelEnabled then return end local playerGui = Player:FindFirstChild("PlayerGui") if not playerGui then return end local reelGui = playerGui:FindFirstChild("reel") if reelGui and reelGui.Enabled then local bar = reelGui:FindFirstChild("bar") if bar then local playerBar = bar:FindFirstChild("playerbar") local fish = bar:FindFirstChild("fish") if playerBar and fish then -- Get the bar's absolute size and position to understand bounds local barAbsSize = bar.AbsoluteSize.X local barAbsPos = bar.AbsolutePosition.X -- Make player bar 60% of total width (stays well inside) local playerBarWidth = 0.6 playerBar.Size = UDim2.new(playerBarWidth, 0, 1, 0) -- Get fish position (0 to 1 scale) local fishPosScale = fish.Position.X.Scale -- Calculate where to center the player bar on the fish -- We want the center of playerBar to be at the fish position local targetPosScale = fishPosScale - (playerBarWidth / 2) -- Strict clamping to keep bar completely inside bounds -- Min position is 0, max position ensures bar doesn't go past 1.0 targetPosScale = math.max(0, math.min(targetPosScale, 1 - playerBarWidth)) -- Set the player bar position playerBar.Position = UDim2.new(targetPosScale, 0, playerBar.Position.Y.Scale, 0) end end end end) end local AutoReelToggle = FishTab:CreateToggle({ Name = "Auto Reel (Big Bar)", CurrentValue = false, Flag = "AutoReel", Callback = function(Value) autoReelEnabled = Value if Value then autoReel() Rayfield:Notify({ Title = "Auto Reel Enabled", Content = "Bar centered and following fish precisely", Duration = 3, Image = 4483362458, }) else if reelConnection then reelConnection:Disconnect() end Rayfield:Notify({ Title = "Auto Reel Disabled", Content = "Auto reel has been turned off", Duration = 3, Image = 4483362458, }) end end, }) -- Infinite Oxygen Function local function infiniteOxygen() if oxygenConnection then oxygenConnection:Disconnect() end oxygenConnection = RunService.Heartbeat:Connect(function() if not infiniteOxygenEnabled then return end -- Set oxygen to max in character if Character:FindFirstChild("client") then local client = Character.client if client:FindFirstChild("oxygen") then client.oxygen.Value = 100 end end -- Also check player GUI oxygen local playerGui = Player:FindFirstChild("PlayerGui") if playerGui and playerGui:FindFirstChild("hud") then local safezone = playerGui.hud:FindFirstChild("safezone") if safezone then local oxygen = safezone:FindFirstChild("oxygen") if oxygen then local oxygenBar = oxygen:FindFirstChild("bar") if oxygenBar then oxygenBar.Size = UDim2.new(1, 0, 1, 0) end end end end -- Prevent drowning damage if Humanoid then Humanoid:SetStateEnabled(Enum.HumanoidStateType.Swimming, true) end end) end local InfiniteOxygenToggle = FishTab:CreateToggle({ Name = "Infinite Oxygen (Can't Die Underwater)", CurrentValue = false, Flag = "InfiniteOxygen", Callback = function(Value) infiniteOxygenEnabled = Value if Value then infiniteOxygen() Rayfield:Notify({ Title = "Infinite Oxygen Enabled", Content = "You can now breathe underwater infinitely", Duration = 3, Image = 4483362458, }) else if oxygenConnection then oxygenConnection:Disconnect() end Rayfield:Notify({ Title = "Infinite Oxygen Disabled", Content = "Oxygen is back to normal", Duration = 3, Image = 4483362458, }) end end, }) -- TELEPORT TAB local TeleportTab = Window:CreateTab("Teleport", 4483362458) local TeleportSection = TeleportTab:CreateSection("Main Locations") local locations = { -- Main Islands ["Moosewood"] = CFrame.new(387, 133, 240), ["Moosewood (Docks)"] = CFrame.new(391, 133, 280), ["Roslit Bay"] = CFrame.new(-1476, 133, 667), ["Roslit Bay (Docks)"] = CFrame.new(-1480, 133, 730), ["Snowcap Island"] = CFrame.new(2648, 133, 2522), ["Snowcap Cave"] = CFrame.new(2650, 133, 2310), ["Forsaken Shores"] = CFrame.new(-2539, 133, 1560), ["Forsaken Shores (Docks)"] = CFrame.new(-2600, 133, 1510), ["Sunstone Island"] = CFrame.new(-933, 133, -1123), ["Mushgrove Swamp"] = CFrame.new(2500, 133, -720), ["Mushgrove Swamp (Pond)"] = CFrame.new(2455, 133, -700), ["Terrapin Island"] = CFrame.new(-150, 133, -2956), ["Ancient Isle"] = CFrame.new(5930, 133, 420), ["Ancient Isle (Archives)"] = CFrame.new(5900, 133, 490), ["Windset Island"] = CFrame.new(3014, 133, -1168), -- Depths & Special Areas ["The Depths"] = CFrame.new(952, -711, 1237), ["The Depths (Entrance)"] = CFrame.new(990, -527, 1151), ["Vertigo"] = CFrame.new(-112, -493, 1040), ["Keepers Altar"] = CFrame.new(1296, -807, -307), ["Brine Pool"] = CFrame.new(1041, -722, 1178), ["Desolate Deep"] = CFrame.new(-1640, -236, -2774), ["Statue of Sovereignty"] = CFrame.new(35, 138, -1001), ["Harvesters Spike"] = CFrame.new(1308, 133, -2542), ["The Arch"] = CFrame.new(1078, 133, -1006), ["Volcano"] = CFrame.new(-1888, 163, 330), -- Shops & NPCs (Moosewood) ["Crafting Table (Moosewood)"] = CFrame.new(393, 133, 234), ["Rod Shop (Moosewood)"] = CFrame.new(451, 148, 229), ["Bait Shop (Moosewood)"] = CFrame.new(385, 133, 280), ["Inn (Moosewood)"] = CFrame.new(492, 176, 277), ["Merchant (Moosewood)"] = CFrame.new(420, 133, 227), ["Appraiser (Moosewood)"] = CFrame.new(450, 133, 222), -- Shops & NPCs (Roslit Bay) ["Witch Shop (Roslit)"] = CFrame.new(-1700, 133, 690), ["Blacksmith (Roslit)"] = CFrame.new(-1780, 133, 652), ["Shipwright (Roslit)"] = CFrame.new(-1556, 133, 743), ["Merchant (Roslit)"] = CFrame.new(-1512, 133, 685), -- Additional Fishing Spots ["Ocean (Deep Water)"] = CFrame.new(1500, 133, 500), ["Ocean (Coral Reef)"] = CFrame.new(-800, 133, 1200), ["Lake (Fresh Water)"] = CFrame.new(450, 133, 300) } for location, cframe in pairs(locations) do TeleportTab:CreateButton({ Name = "Teleport to " .. location, Callback = function() if Character and Character:FindFirstChild("HumanoidRootPart") then Character.HumanoidRootPart.CFrame = cframe Rayfield:Notify({ Title = "Teleported!", Content = "Teleported to " .. location, Duration = 3, Image = 4483362458, }) end end, }) end -- OTHER TAB local OtherTab = Window:CreateTab("Other", 4483362458) local MovementSection = OtherTab:CreateSection("Movement") local currentWalkSpeed = 16 local currentJumpPower = 50 local WalkSpeedSlider = OtherTab:CreateSlider({ Name = "Walk Speed", Range = {16, 200}, Increment = 1, Suffix = "Speed", CurrentValue = 16, Flag = "WalkSpeed", Callback = function(Value) currentWalkSpeed = Value if Humanoid then Humanoid.WalkSpeed = Value end end, }) local JumpBoostSlider = OtherTab:CreateSlider({ Name = "Jump Boost", Range = {50, 500}, Increment = 10, Suffix = "Power", CurrentValue = 50, Flag = "JumpPower", Callback = function(Value) currentJumpPower = Value if Humanoid then Humanoid.JumpPower = Value end end, }) local noclipEnabled = false local noclipConnection local NoClipToggle = OtherTab:CreateToggle({ Name = "No Clip", CurrentValue = false, Flag = "NoClip", Callback = function(Value) noclipEnabled = Value if Value then noclipConnection = RunService.Stepped:Connect(function() if noclipEnabled and Character then for _, part in pairs(Character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end) Rayfield:Notify({ Title = "No Clip Enabled", Content = "You can now walk through walls", Duration = 3, Image = 4483362458, }) else if noclipConnection then noclipConnection:Disconnect() end if Character then for _, part in pairs(Character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = true end end end Rayfield:Notify({ Title = "No Clip Disabled", Content = "Collisions are back to normal", Duration = 3, Image = 4483362458, }) end end, }) local FlyButton = OtherTab:CreateButton({ Name = "Enable Fly", Callback = function() loadstring(game:HttpGet("https://rawscripts.net/raw/Universal-Script-Gui-Fly-v3-37111"))() Rayfield:Notify({ Title = "Fly Loaded!", Content = "Fly script has been loaded successfully", Duration = 3, Image = 4483362458, }) end, }) local PlayerSection = OtherTab:CreateSection("Player Features") local espConnection local function createESP(player) if player.Character and not player.Character:FindFirstChild("ESP_Highlight") then local highlight = Instance.new("Highlight") highlight.Name = "ESP_Highlight" highlight.FillColor = Color3.fromRGB(255, 0, 0) highlight.OutlineColor = Color3.fromRGB(255, 255, 255) highlight.FillTransparency = 0.5 highlight.OutlineTransparency = 0 highlight.Parent = player.Character end end local function removeESP(player) if player.Character and player.Character:FindFirstChild("ESP_Highlight") then player.Character.ESP_Highlight:Destroy() end end local function updateESP() if espConnection then espConnection:Disconnect() end espConnection = RunService.Heartbeat:Connect(function() if not espEnabled then return end for _, player in pairs(Players:GetPlayers()) do if player ~= Player and player.Character then if not player.Character:FindFirstChild("ESP_Highlight") then createESP(player) end end end end) end local ESPToggle = OtherTab:CreateToggle({ Name = "ESP Players", CurrentValue = false, Flag = "ESPPlayers", Callback = function(Value) espEnabled = Value if Value then updateESP() Rayfield:Notify({ Title = "ESP Enabled", Content = "All players are now highlighted", Duration = 3, Image = 4483362458, }) else if espConnection then espConnection:Disconnect() end -- Remove ESP from all players for _, player in pairs(Players:GetPlayers()) do removeESP(player) end Rayfield:Notify({ Title = "ESP Disabled", Content = "Player highlights removed", Duration = 3, Image = 4483362458, }) end end, }) -- Credits local CreditsSection = OtherTab:CreateSection("Credits") local CreditsLabel = OtherTab:CreateLabel("Script created by JayRBLX Scripts") local CreditsLabel2 = OtherTab:CreateLabel("Thanks for using this script!") local CreditsLabel3 = OtherTab:CreateLabel("Version 2.5 - Method Selection Update") -- Anti-AFK Player.Idled:Connect(function() VirtualUser:CaptureController() VirtualUser:ClickButton2(Vector2.new()) end) -- Handle character respawn Player.CharacterAdded:Connect(function(char) Character = char Humanoid = char:WaitForChild("Humanoid") wait(0.5) -- Reapply settings Humanoid.WalkSpeed = currentWalkSpeed Humanoid.JumpPower = currentJumpPower -- Restart auto functions if enabled if autoShakeEnabled then autoShake() end if autoCastEnabled then autoCast() end if autoReelEnabled then autoReel() end if infiniteOxygenEnabled then infiniteOxygen() end if noclipEnabled then noclipConnection = RunService.Stepped:Connect(function() if noclipEnabled and Character then for _, part in pairs(Character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end end end) end end) -- Handle player added for ESP Players.PlayerAdded:Connect(function(player) if espEnabled then player.CharacterAdded:Connect(function() wait(0.5) if espEnabled then createESP(player) end end) end end) Rayfield:LoadConfiguration() Rayfield:Notify({ Title = "Fisch Script Loaded Successfully!", Content = "Created by JayRBLX Scripts - Version 2.5", Duration = 5, Image = 4483362458, })