Description

This script includes the auto farm, ESP and teleport related functionalities. its also keyless and you can use it without any issue plus the functions are also working perfectly.

Features

  • + Auto train
  • + Auto upgrades
  • + Auto decline
  • + Auto kill
  • + ESP settings
  • + Enable ESP
  • + Anti invisible
  • + Show box

Supported Executors

Potassium

Script

Add Xeno Scripts as a preferred source
local Fluent = loadstring(game:HttpGet("https://github.com/dawid-scripts/Fluent/releases/latest/download/main.lua"))()
local SaveManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/SaveManager.lua"))()
local InterfaceManager = loadstring(game:HttpGet("https://raw.githubusercontent.com/dawid-scripts/Fluent/master/Addons/InterfaceManager.lua"))()

-- Services
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local UserInputService = game:GetService("UserInputService")
local Workspace = game:GetService("Workspace")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")

local LocalPlayer = Players.LocalPlayer

-- Unload Flag
local isUnloaded = false
local originalWalkSpeed = 16
local walkSpeedActive = false
local cleanupAntiInvisible = function() end -- Placeholder for cleanup

-- Connections
local jumpConn, pAddConn, pRemConn

-- Game Modules (Bypasses UI Remote fetching completely)
local PersonalRemoteService = assert(require(ReplicatedStorage:FindFirstChild("PersonalRemoteService", true)), "PersonalRemoteService not found")
local PlayerDataService = assert(require(ReplicatedStorage:FindFirstChild("PlrDataService", true)), "PlayerDataService not found")
local ShurikenService = assert(require(ReplicatedStorage:FindFirstChild("ShurikenService", true)), "ShurikenService not found")
local AscensionService = assert(require(ReplicatedStorage:FindFirstChild("AscensionService", true)), "AscensionService not found")
local UpgradeRules = assert(require(ReplicatedStorage:FindFirstChild("UpgradeRules", true)), "UpgradeRules not found")
local ClassService = assert(require(ReplicatedStorage:FindFirstChild("ClassService", true)), "ClassService not found")
local SwordService = assert(require(ReplicatedStorage:FindFirstChild("SwordService", true)), "SwordService not found")
local SuccessRate = assert(require(ReplicatedStorage:FindFirstChild("SuccessRate", true)), "SuccessRate not found")
local BucksConfig = assert(require(ReplicatedStorage:FindFirstChild("BucksConfig", true)), "BucksConfig not found")
local UIService = assert(require(ReplicatedStorage:FindFirstChild("UIService", true)), "UIService not found")

-- Game Functions & Data
local RemoteEvent = assert(PersonalRemoteService.RemoteEvent, "RemoteEvent not found")
local PlayerData = assert(PlayerDataService.PlrData, "PlayerData not found")
local GetFinalSuccessRate = assert(SuccessRate.GetFinalSuccessRate, "GetFinalSuccessRate not found")
local GetSuccessRate = assert(SuccessRate.GetSuccessRate, "GetSuccessRate not found")
local UIServiceInvokePersonalRemote = assert(UIService.InvokePersonalRemote, "InvokePersonalRemote for UIService not found")

-- Window Setup
local Window = Fluent:CreateWindow({
    Title = "+1 OP Ninja Hub",
    SubTitle = "Auto Farm, ESP & Teleport",
    TabWidth = 160,
    Size = UDim2.fromOffset(580, 460),
    Acrylic = true, 
    Theme = "Dark",
    MinimizeKey = Enum.KeyCode.LeftControl 
})

-- Tabs Setup
local Tabs = {
    Main = Window:AddTab({ Title = "Main", Icon = "sword" }),
    Visuals = Window:AddTab({ Title = "Visuals", Icon = "eye" }),
    Player = Window:AddTab({ Title = "Player", Icon = "user" }),
    Misc = Window:AddTab({ Title = "Misc", Icon = "cloud" }),
    Settings = Window:AddTab({ Title = "Settings", Icon = "settings" })
}

local Options = Fluent.Options

do
    Fluent:Notify({
        Title = "+1 OP Ninja Hub",
        Content = "Script loaded successfully!",
        SubContent = "All features initialized. Ready to use!",
        Duration = 5
    })

    -- ==================== //
    --       MAIN TAB       --
    -- ==================== //
    Tabs.Main:AddParagraph({
        Title = "Welcome to +1 OP Ninja Hub",
        Content = "Use the toggles below to automate your training and upgrades.\nNote: Auto Train requires your sword to be equipped!"
    })

    Tabs.Main:AddToggle("AutoTrain", {Title = "Auto Train", Default = false })
    Tabs.Main:AddToggle("AutoKill", {Title = "Auto Kill (HOLD SWORD)", Default = false })
    Tabs.Main:AddToggle("AutoDecline", {Title = "Auto Decline", Default = false })
    
    Tabs.Main:AddDropdown("AutoUpgradeDropdown", {
        Title = "Auto Upgrades",
        Description = "Select which upgrades to automate",
        Values = { "Sword", "Stars", "Class", "Ascendant" },
        Multi = true,
        Default = { "Sword", "Stars", "Class", "Ascendant" },
    })

    -- Auto Train Loop
    task.spawn(function()
        while task.wait(0.1) and not isUnloaded do
            if Options.AutoTrain.Value then
                pcall(function()
                    RemoteEvent:FireServer("SwordSlash", 67)
                end)
            end
        end
    end)

    -- Auto Kill Loop
    task.spawn(function()
        while task.wait(0.1) and not isUnloaded do
            if Options.AutoKill.Value then
                local lpChar = LocalPlayer.Character
                local lpHum = lpChar and lpChar:FindFirstChild("Humanoid")
                if lpChar and lpChar:FindFirstChild("HumanoidRootPart") and lpHum and lpHum.Health > 0 then
                    local tool = lpChar:FindFirstChildWhichIsA("Tool")
                    if tool then
                        for _, target in ipairs(Players:GetPlayers()) do
                            if not Options.AutoKill.Value then break end
                            if target ~= LocalPlayer and (target.Team == nil or target.Team ~= LocalPlayer.Team) then
                                local tChar = target.Character
                                if tChar then
                                    local tRoot = tChar:FindFirstChild("HumanoidRootPart")
                                    local tHum = tChar:FindFirstChild("Humanoid")
                                    if tRoot and tHum and tHum.Health > 0 then
                                        -- Teleport behind the player
                                        lpChar.HumanoidRootPart.CFrame = tRoot.CFrame * CFrame.new(0, 0, 4)
                                        
                                        -- Spam tool:Activate() for 1 second
                                        local startTime = tick()
                                        while tick() - startTime < 1 do
                                            if not Options.AutoKill.Value then break end
                                            
                                            -- Check Local Player
                                            if not lpChar or not lpChar.Parent then break end
                                            local lHum = lpChar:FindFirstChild("Humanoid")
                                            if not lHum or lHum.Health <= 0 then break end
                                            
                                            -- Check Target
                                            if not target or not target.Parent then break end
                                            if not tChar or not tChar.Parent then break end
                                            local tHumCheck = tChar:FindFirstChild("Humanoid")
                                            if not tHumCheck or tHumCheck.Health <= 0 then break end
                                            
                                            tool:Activate()
                                            task.wait(0.1)
                                        end
                                        
                                        -- Small delay before moving to next player
                                        task.wait(0.1)
                                    end
                                end
                            end
                        end
                    end
                end
            end
        end
    end)

    -- Auto Decline Loop
    task.spawn(function()
        while task.wait(0.1) and not isUnloaded do
            if Options.AutoDecline.Value then
                pcall(function()
                    LocalPlayer.PlayerGui.MainGui["64d781ce-77fc-417a-8531-b94d668fded7"]:InvokeServer("อัพเกรดดาบแม็กซ์")
                end)
            end
        end
    end)

    -- Auto Upgrade Loop
    task.spawn(function()
        while task.wait(0.1) and not isUnloaded do
            local SelectedUpgrades = Options.AutoUpgradeDropdown.Value
            
            if SelectedUpgrades["Sword"] then
                local NextSwordData = SwordService:GetNextSword()
                if NextSwordData and UpgradeRules.CanUpgrade(PlayerData, NextSwordData.Requirements) then
                    task.spawn(function()
                        pcall(function()
                            UIServiceInvokePersonalRemote("Max sword upgrade", "อัพเกรดดาบแม็กซ์")
                        end)
                    end)
                end
            end
            
            if SelectedUpgrades["Stars"] then
                local NextShurikenData = ShurikenService:GetNext()
                if NextShurikenData and UpgradeRules.CanUpgrade(PlayerData, NextShurikenData.Requirements) then
                    local rate = GetFinalSuccessRate(GetSuccessRate(NextShurikenData.SuccessRate, BucksConfig.HasGamepassBenefit(PlayerData, "x2Luck")) + (tonumber(PlayerData.ShPityRate) or 0))
                    task.spawn(function()
                        pcall(function()
                            UIServiceInvokePersonalRemote("Shuriken upgrade", "อัพเกรดดาวกระจาย", rate)
                        end)
                    end)
                end
            end
            
            if SelectedUpgrades["Class"] then
                local NextClassData = ClassService:GetNext(PlayerData.Class, PlayerData.ClassSubTier)
                if NextClassData and UpgradeRules.CanUpgrade(PlayerData, NextClassData.Requirements) then
                    local rate = GetFinalSuccessRate(GetSuccessRate(NextClassData.SuccessRate, BucksConfig.HasGamepassBenefit(PlayerData, "x2Luck")) + (tonumber(PlayerData.CPityRate) or 0))
                    task.spawn(function()
                        pcall(function()
                            UIServiceInvokePersonalRemote("Class upgrade", "อัพเกรดคลาส", rate)
                        end)
                    end)
                end
            end
            
            if SelectedUpgrades["Ascendant"] then
                local NextRealmData = AscensionService:GetNext(PlayerData.Ascension, PlayerData.AscensionSubTier)
                if NextRealmData and UpgradeRules.CanUpgrade(PlayerData, NextRealmData.Requirements) then
                    local rate = GetFinalSuccessRate(GetSuccessRate(NextRealmData.SuccessRate, BucksConfig.HasGamepassBenefit(PlayerData, "x2Luck")) + (tonumber(PlayerData.APityRate) or 0))
                    task.spawn(function()
                        pcall(function()
                            UIServiceInvokePersonalRemote("Ascension upgrade", "อัพเกรดแอสเซนต์", rate)
                        end)
                    end)
                end
            end
        end
    end)

    -- ==================== //
    --     VISUALS TAB      --
    -- ==================== //
    Tabs.Visuals:AddParagraph({
        Title = "ESP Settings",
        Content = "Customize what you see on other players."
    })

    Tabs.Visuals:AddToggle("ESPEnabled", {Title = "Enable ESP", Default = false})
    Tabs.Visuals:AddToggle("ESPName", {Title = "Show Names", Default = true})
    Tabs.Visuals:AddToggle("ESPDist", {Title = "Show Distance", Default = true})
    Tabs.Visuals:AddToggle("ESPBox", {Title = "Show Box (Highlight)", Default = true})

    Tabs.Visuals:AddParagraph({
        Title = "Visibility Settings",
        Content = "Force all player models to be visible."
    })

    Tabs.Visuals:AddToggle("AntiInvisible", {Title = "Anti-Invisible", Default = false})

    -- ANTI-INVISIBLE BYPASS LOGIC (Optimized & Hook-based)
    local antiInvisibleConn
    local playerAddedConn, playerRemovingConn
    local trackedInstances = {}
    local charConnections = {}
    local playerConnections = {}
    local PROPS_TO_BYPASS = {"Transparency", "Enabled", "Opacity", "Visible", "LocalTransparencyModifier"}

    local function addInstance(inst)
        if trackedInstances[inst] then return end
        
        local isTracked = false
        
        if inst:IsA("BasePart") or inst:IsA("Decal") or inst:IsA("Texture") then
            if inst.Name ~= "HumanoidRootPart" then
                isTracked = true
            end
        elseif inst:IsA("ParticleEmitter") or inst:IsA("Beam") or inst:IsA("Trail") or
               inst:IsA("Smoke") or inst:IsA("Fire") or inst:IsA("Sparkles") or 
               inst:IsA("Light") or inst:IsA("ForceField") or inst:IsA("Highlight") or 
               inst:IsA("BillboardGui") or inst:IsA("SurfaceGui") then
            isTracked = true
        end

        if isTracked then
            trackedInstances[inst] = true
            
            for _, prop in ipairs(PROPS_TO_BYPASS) do
                pcall(function()
                    inst:SetAttribute("PerformanceModeControls" .. prop, true)
                end)
            end
        end
    end

    local function removeInstance(inst)
        if trackedInstances[inst] then
            for _, prop in ipairs(PROPS_TO_BYPASS) do
                pcall(function()
                    inst:SetAttribute("PerformanceModeControls" .. prop, nil)
                end)
            end
            trackedInstances[inst] = nil
        end
    end

    local function hookCharacter(char)
        if not char then return end
        for _, desc in ipairs(char:GetDescendants()) do
            addInstance(desc)
        end
        local conn1 = char.DescendantAdded:Connect(addInstance)
        local conn2 = char.DescendantRemoving:Connect(removeInstance)
        charConnections[char] = {conn1, conn2}
    end

    local function unhookCharacter(char)
        if charConnections[char] then
            for _, conn in ipairs(charConnections[char]) do
                conn:Disconnect()
            end
            charConnections[char] = nil
        end
    end

    local function hookPlayer(player)
        if player.Character then
            hookCharacter(player.Character)
        end
        local conn1 = player.CharacterAdded:Connect(hookCharacter)
        local conn2 = player.CharacterRemoving:Connect(unhookCharacter)
        playerConnections[player] = {conn1, conn2}
    end

    local function unhookPlayer(player)
        if playerConnections[player] then
            for _, conn in ipairs(playerConnections[player]) do
                conn:Disconnect()
            end
            playerConnections[player] = nil
        end
        if player.Character then
            unhookCharacter(player.Character)
        end
    end

    cleanupAntiInvisible = function()
        if antiInvisibleConn then
            antiInvisibleConn:Disconnect()
            antiInvisibleConn = nil
        end
        if playerAddedConn then
            playerAddedConn:Disconnect()
            playerAddedConn = nil
        end
        if playerRemovingConn then
            playerRemovingConn:Disconnect()
            playerRemovingConn = nil
        end
        
        for player, _ in pairs(playerConnections) do
            unhookPlayer(player)
        end
        table.clear(playerConnections)
        table.clear(charConnections)
        
        for inst, _ in pairs(trackedInstances) do
            if inst and inst.Parent then
                for _, prop in ipairs(PROPS_TO_BYPASS) do
                    pcall(function()
                        inst:SetAttribute("PerformanceModeControls" .. prop, nil)
                    end)
                end
            end
        end
        table.clear(trackedInstances)
    end

    Options.AntiInvisible:OnChanged(function(state)
        if state then
            for _, player in ipairs(Players:GetPlayers()) do
                hookPlayer(player)
            end
            
            playerAddedConn = Players.PlayerAdded:Connect(hookPlayer)
            playerRemovingConn = Players.PlayerRemoving:Connect(function(player)
                unhookPlayer(player)
            end)
            
            antiInvisibleConn = RunService.RenderStepped:Connect(function()
                for inst, _ in pairs(trackedInstances) do
                    if inst.Parent then
                        -- Explicitly force our ESP elements to remain visible against the game's InvisibilityRenderer
                        if inst.Name == "ESPHighlight" and inst:IsA("Highlight") then
                            pcall(function()
                                inst.Enabled = true
                                inst.FillTransparency = 0.5
                                inst.OutlineTransparency = 0
                            end)
                        elseif inst.Name == "ESPNameTag" and inst:IsA("BillboardGui") then
                            pcall(function()
                                inst.Enabled = true
                            end)
                        else
                            local attrs = inst:GetAttributes()
                            for attrName, originalValue in pairs(attrs) do
                                if string.sub(attrName, 1, 20) == "InvisibilityOriginal" then
                                    local propName = string.sub(attrName, 21)
                                    pcall(function()
                                        inst[propName] = originalValue
                                    end)
                                end
                            end
                            
                            if inst:IsA("BasePart") and inst.Name ~= "HumanoidRootPart" then
                                if not attrs["InvisibilityOriginalLocalTransparencyModifier"] then
                                    pcall(function()
                                        inst.LocalTransparencyModifier = 0
                                    end)
                                end
                            end
                        end
                    else
                        trackedInstances[inst] = nil
                    end
                end
            end)
        else
            cleanupAntiInvisible()
        end
    end)

    -- FIXED ESP LOOP (Now ignores teammates and forces ESP visibility)
    task.spawn(function()
        while task.wait(0.1) and not isUnloaded do
            for _, player in ipairs(Players:GetPlayers()) do
                if player ~= LocalPlayer then
                    local char = player.Character
                    local valid = char and char:FindFirstChild("HumanoidRootPart")
                    
                    local isTeamMate = (player.Team ~= nil and player.Team == LocalPlayer.Team)
                    
                    if Options.ESPEnabled.Value and valid and not isTeamMate then
                        -- Handle Highlight
                        local hl = char:FindFirstChild("ESPHighlight")
                        if Options.ESPBox.Value then
                            if not hl then
                                hl = Instance.new("Highlight")
                                hl.Name = "ESPHighlight"
                                hl.FillColor = Color3.fromRGB(255, 0, 0)
                                hl.OutlineColor = Color3.fromRGB(255, 255, 255)
                                hl.FillTransparency = 0.5
                                hl.OutlineTransparency = 0
                                hl.Parent = char
                            else
                                -- Fallback to ensure ESP stays visible if game tries to hide it
                                pcall(function()
                                    hl.Enabled = true
                                    hl.FillTransparency = 0.5
                                    hl.OutlineTransparency = 0
                                end)
                            end
                        else
                            if hl then hl:Destroy() end
                        end
                        
                        -- Handle Billboard (Name/Distance)
                        local bb = char:FindFirstChild("ESPNameTag")
                        local showText = Options.ESPName.Value or Options.ESPDist.Value
                        
                        if showText then
                            if not bb then
                                bb = Instance.new("BillboardGui")
                                bb.Name = "ESPNameTag"
                                bb.Size = UDim2.new(0, 200, 0, 50)
                                bb.StudsOffset = Vector3.new(0, 3, 0)
                                bb.AlwaysOnTop = true
                                bb.Parent = char
                                
                                local lbl = Instance.new("TextLabel")
                                lbl.Name = "ESPLabel"
                                lbl.Size = UDim2.new(1, 0, 1, 0)
                                lbl.BackgroundTransparency = 1
                                lbl.TextColor3 = Color3.fromRGB(255, 255, 255)
                                lbl.TextStrokeTransparency = 0
                                lbl.TextScaled = true
                                lbl.Font = Enum.Font.SourceSansBold
                                lbl.Parent = bb
                            else
                                -- Fallback to ensure ESP stays visible
                                pcall(function()
                                    bb.Enabled = true
                                end)
                            end
                            
                            local txt = ""
                            if Options.ESPName.Value then txt = txt .. player.Name end
                            if Options.ESPDist.Value and LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
                                local dist = math.floor((char.HumanoidRootPart.Position - LocalPlayer.Character.HumanoidRootPart.Position).Magnitude)
                                if txt ~= "" then txt = txt .. "\n" end
                                txt = txt .. "[" .. dist .. " studs]"
                            end
                            bb.ESPLabel.Text = txt
                        else
                            if bb then bb:Destroy() end
                        end
                    else
                        if char then
                            local hl = char:FindFirstChild("ESPHighlight")
                            local bb = char:FindFirstChild("ESPNameTag")
                            if hl then hl:Destroy() end
                            if bb then bb:Destroy() end
                        end
                    end
                end
            end
        end
    end)

    -- ==================== //
    --      PLAYER TAB      --
    -- ==================== //
    Tabs.Player:AddToggle("WalkSpeedToggle", {Title = "Enable WalkSpeed", Default = false})
    Tabs.Player:AddSlider("WalkSpeedSlider", {
        Title = "WalkSpeed Amount",
        Description = "Set your character's walkspeed",
        Default = 16,
        Min = 16,
        Max = 500,
        Rounding = 0
    })

    Tabs.Player:AddToggle("InfJump", {Title = "Infinite Jump", Default = false})

    task.spawn(function()
        while task.wait(0.1) and not isUnloaded do
            local char = LocalPlayer.Character
            if char and char:FindFirstChild("Humanoid") then
                if Options.WalkSpeedToggle.Value then
                    if not walkSpeedActive then
                        originalWalkSpeed = char.Humanoid.WalkSpeed
                        walkSpeedActive = true
                    end
                    char.Humanoid.WalkSpeed = Options.WalkSpeedSlider.Value
                else
                    if walkSpeedActive then
                        char.Humanoid.WalkSpeed = originalWalkSpeed
                        walkSpeedActive = false
                    end
                end
            end
        end
    end)

    jumpConn = UserInputService.JumpRequest:Connect(function()
        if not isUnloaded and Options.InfJump.Value then
            local char = LocalPlayer.Character
            if char and char:FindFirstChild("Humanoid") then
                char.Humanoid:ChangeState("Jumping")
            end
        end
    end)

    -- ==================== //
    -- TELEPORT TO PLAYERS  --
    -- ==================== //
    local function updatePlayerDropdown()
        if isUnloaded then return end
        local playerList = {}
        for _, p in ipairs(Players:GetPlayers()) do
            if p ~= LocalPlayer then
                table.insert(playerList, p.Name)
            end
        end
        if Options.TpPlayerDropdown then
            Options.TpPlayerDropdown:SetValues(playerList)
        end
    end

    Tabs.Player:AddDropdown("TpPlayerDropdown", {
        Title = "Select Player",
        Values = {},
        Multi = false,
        Default = "",
    })

    updatePlayerDropdown()
    
    pAddConn = Players.PlayerAdded:Connect(updatePlayerDropdown)
    pRemConn = Players.PlayerRemoving:Connect(updatePlayerDropdown)

    Tabs.Player:AddButton({
        Title = "Teleport to Player",
        Callback = function()
            local targetName = Options.TpPlayerDropdown.Value
            local targetPlayer = Players:FindFirstChild(targetName)
            if targetPlayer and targetPlayer.Character and targetPlayer.Character:FindFirstChild("HumanoidRootPart") then
                local lpChar = LocalPlayer.Character
                if lpChar and lpChar:FindFirstChild("HumanoidRootPart") then
                    lpChar.HumanoidRootPart.CFrame = targetPlayer.Character.HumanoidRootPart.CFrame
                end
            else
                Fluent:Notify({
                    Title = "Teleport",
                    Content = "Invalid player or player has no character!",
                    Duration = 3
                })
            end
        end
    })

    -- ==================== //
    --       MISC TAB       --
    -- ==================== //
    Tabs.Misc:AddParagraph({
        Title = "Miscellaneous Features",
        Content = "Fun and utility features that don't fit anywhere else."
    })

    Tabs.Misc:AddToggle("Disable3DRendering", {
        Title = "Disable 3D Rendering",
        Default = false,
        Description = "Disables 3D rendering to significantly boost FPS."
    })

    Options.Disable3DRendering:OnChanged(function(state)
        RunService:Set3dRenderingEnabled(not state)
    end)

    Tabs.Misc:AddToggle("PathSystem", {
        Title = "Path", 
        Default = false,
        Description = "Spawns a fading path underneath you as you walk."
    })

    Tabs.Misc:AddColorpicker("PathColor", {
        Title = "Path Color",
        Default = Color3.fromRGB(255, 255, 255)
    })

    Tabs.Misc:AddSlider("PathTransparency", {
        Title = "Starting Transparency",
        Description = "Set the starting transparency of the path",
        Default = 0.75,
        Min = 0,
        Max = 1,
        Rounding = 2
    })

    Tabs.Misc:AddButton({
        Title = "Rejoin Server",
        Callback = function()
            game:GetService("TeleportService"):Teleport(game.PlaceId, LocalPlayer)
        end
    })

    Tabs.Misc:AddButton({
        Title = "Server Hop",
        Callback = function()
            local Http = game:GetService("HttpService")
            local servers = Http:JSONDecode(game:HttpGet("https://games.roblox.com/v1/games/" .. game.PlaceId .. "/servers/Public?sortOrder=Asc&limit=100")).data
            for _, server in ipairs(servers) do
                if server.id ~= game.JobId then
                    game:GetService("TeleportService"):TeleportToPlaceInstance(game.PlaceId, server.id, LocalPlayer)
                    break
                end
            end
        end
    })

    task.spawn(function()
        local lastPathTime = 0
        while task.wait(0.1) and not isUnloaded do
            if Options.PathSystem.Value then
                local char = LocalPlayer.Character
                if char and char:FindFirstChild("HumanoidRootPart") then
                    local currentTime = tick()
                    if currentTime - lastPathTime >= 0.025 then
                        lastPathTime = currentTime
                        
                        local part = Instance.new("Part")
                        part.Size = Vector3.new(6, 1, 6)
                        part.Color = Options.PathColor.Value
                        part.Position = char.HumanoidRootPart.Position - Vector3.new(0, 3, 0)
                        part.Rotation = Vector3.new(0, math.random(0, 360), 0)
                        part.Anchored = true
                        part.CanCollide = false
                        part.Material = Enum.Material.Neon
                        part.Transparency = Options.PathTransparency.Value
                        part.Parent = Workspace
                        
                        local tween = TweenService:Create(part, TweenInfo.new(4, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {
                            Size = Vector3.new(0, 0, 0),
                            Transparency = 1
                        })
                        tween:Play()
                        
                        task.delay(4.1, function()
                            if part and part.Parent then
                                part:Destroy()
                            end
                        end)
                    end
                end
            end
        end
    end)
end

-- Addons Setup
SaveManager:SetLibrary(Fluent)
InterfaceManager:SetLibrary(Fluent)

SaveManager:IgnoreThemeSettings()
SaveManager:SetIgnoreIndexes({})

InterfaceManager:SetFolder("FluentScriptHub")
SaveManager:SetFolder("FluentScriptHub/op-ninja")

InterfaceManager:BuildInterfaceSection(Tabs.Settings)
SaveManager:BuildConfigSection(Tabs.Settings)

-- CORRECT HOOK: Hook Fluent.Destroy instead of Window.Destroy
local originalDestroy = Fluent.Destroy
Fluent.Destroy = function(self, ...)
    isUnloaded = true 
    
    cleanupAntiInvisible()
    
    RunService:Set3dRenderingEnabled(true)
    
    for _, player in ipairs(Players:GetPlayers()) do
        if player.Character then
            local hl = player.Character:FindFirstChild("ESPHighlight")
            local bb = player.Character:FindFirstChild("ESPNameTag")
            if hl then hl:Destroy() end
            if bb then bb:Destroy() end
        end
    end

    if walkSpeedActive then
        local char = LocalPlayer.Character
        if char and char:FindFirstChild("Humanoid") then
            char.Humanoid.WalkSpeed = originalWalkSpeed
        end
        walkSpeedActive = false
    end

    if jumpConn then jumpConn:Disconnect() end
    if pAddConn then pAddConn:Disconnect() end
    if pRemConn then pRemConn:Disconnect() end

    originalDestroy(self, ...)
end

Window:SelectTab(1)
SaveManager:LoadAutoloadConfig()
Script worked? 🚀 Boost it to #1 so others find it too.

Comments (1)

Log in to add a comment.

aronaldrj3927

aronaldrj3927

2 months ago

not working