-- 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,
})