CCCPaste

Fisch script

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