Fe noli r15
Key RequiredUniversal

Fe noli r15

Universal ScriptMreyesMreyes 3.5K views 2.8K executesUpdated Jan 11, 2026
0.0/ 5(1 votes)
010% Positive
Lua Scriptβ€’343 lines (10841 chars)
--[[ 
    VOID RUSH 43 + COMBO + HIT CD 0.3s - SEM PRINTS
]]--

local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local TweenService = game:GetService("TweenService")
local Debris = game:GetService("Debris")

local player = Players.LocalPlayer
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local root = character:WaitForChild("HumanoidRootPart")

-- IDs
local IDLE_ID = "rbxassetid://113047257611459"
local WALK_RUN_ID = "rbxassetid://90175656540190"
local EMOTE_ID = "rbxassetid://119380285634530"
local AUDIO_START_ID = "rbxassetid://117912548698898"
local AUDIO_LOOP_ID = "rbxassetid://71729812996802"
local AUDIO_HIT_ID = "rbxassetid://74602717561229"

-- Velocidades + Cooldowns
local BURST_SPEED = 43
local NORMAL_SPEED = 24
local BOOST_SPEED = 29
local HIT_COOLDOWN = 0.3

-- COMBO SYSTEM
local comboCount = 0
local lastHitTime = 0
local COMBO_TIMEOUT = 5
local comboGui = nil

-- ESTADO RUSH
local rushing = false
local inCooldown = false
local hitCooldown = false
local canRushFreely = false
local lastRushAttempt = 0
local FREE_WINDOW = 3

local emoteTrack, rushConnection, touchConnections = nil, nil, {}
local audioStart, audioLoop, rushButton
local rushStartTime, burstEndTime, smoothEndTime

------------------------------------------------------------------
-- COMBO GUI
------------------------------------------------------------------
local function createComboGui()
    if comboGui and comboGui.Parent then return end
    
    local playerGui = player:WaitForChild("PlayerGui")
    local oldCombo = playerGui:FindFirstChild("VoidRushCombo")
    if oldCombo then oldCombo:Destroy() end
    
    local screenGui = Instance.new("ScreenGui")
    screenGui.Name = "VoidRushCombo"
    screenGui.ResetOnSpawn = false
    screenGui.Parent = playerGui
    
    comboGui = Instance.new("TextLabel")
    comboGui.Size = UDim2.new(0, 200, 0, 80)
    comboGui.Position = UDim2.new(1, -220, 0, 20)
    comboGui.BackgroundTransparency = 1
    comboGui.Text = ""
    comboGui.TextColor3 = Color3.fromRGB(255, 100, 100)
    comboGui.TextScaled = true
    comboGui.Font = Enum.Font.SourceSansBold
    comboGui.TextStrokeTransparency = 0
    comboGui.TextStrokeColor3 = Color3.new(0,0,0)
    comboGui.Parent = screenGui
end

local function updateCombo()
    if comboCount < 3 then 
        if comboGui and comboGui.Parent then comboGui:Destroy() comboGui = nil end
        return 
    end
    
    createComboGui()
    comboGui.Text = "COMBO x" .. comboCount
    comboGui.TextColor3 = comboCount >= 5 and Color3.fromRGB(255,255,0) or Color3.fromRGB(255,100,100)
end

local function resetCombo()
    comboCount = 0
    lastHitTime = 0
    if comboGui then comboGui:Destroy() comboGui = nil end
end

------------------------------------------------------------------
-- ANIMAÇÕES
------------------------------------------------------------------
local function applyAnims(char)
    character = char
    humanoid = character:WaitForChild("Humanoid")
    root = character:WaitForChild("HumanoidRootPart")
    
    local animate = character:WaitForChild("Animate", 3)
    if not animate then return end
    
    for _, folderName in {"idle", "walk", "run", "jump", "fall"} do
        local folder = animate:FindFirstChild(folderName)
        if folder then
            for _, anim in pairs(folder:GetChildren()) do
                if anim:IsA("Animation") then
                    anim.AnimationId = folderName == "idle" and IDLE_ID or WALK_RUN_ID
                end
            end
        end
    end
    
    animate.Disabled = true
    task.wait(0.1)
    animate.Disabled = false
end

------------------------------------------------------------------
-- GUI PRINCIPAL
------------------------------------------------------------------
local function createGui()
    local playerGui = player:WaitForChild("PlayerGui")
    local old = playerGui:FindFirstChild("VoidRushGui")
    if old then old:Destroy() end

    local screenGui = Instance.new("ScreenGui")
    screenGui.Name = "VoidRushGui"
    screenGui.ResetOnSpawn = false
    screenGui.Parent = playerGui

    rushButton = Instance.new("TextButton")
    rushButton.Size = UDim2.new(0, 70, 0, 70)
    rushButton.Position = UDim2.new(0, 20, 0, 100)
    rushButton.BackgroundColor3 = Color3.fromRGB(20, 20, 50)
    rushButton.Text = "RUSH"
    rushButton.TextColor3 = Color3.new(1, 1, 1)
    rushButton.TextScaled = true
    rushButton.Font = Enum.Font.SourceSansBold
    rushButton.Parent = screenGui

    local corner = Instance.new("UICorner")
    corner.CornerRadius = UDim.new(0, 12)
    corner.Parent = rushButton

    local dragging, dragStart, startPos
    rushButton.InputBegan:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            dragging = true
            dragStart = input.Position
            startPos = rushButton.Position
        end
    end)

    UserInputService.InputChanged:Connect(function(input)
        if dragging and input.UserInputType == Enum.UserInputType.MouseMovement then
            local delta = input.Position - dragStart
            rushButton.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
        end
    end)

    rushButton.InputEnded:Connect(function(input)
        if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = false end
    end)

    return rushButton
end

rushButton = createGui()

------------------------------------------------------------------
-- VOID RUSH CORE
------------------------------------------------------------------
local function clearConnections()
    for i = 1, #touchConnections do
        if touchConnections[i] then pcall(function() touchConnections[i]:Disconnect() end) end
    end
    touchConnections = {}
end

local function cleanup()
    rushing = false
    if emoteTrack then pcall(function() emoteTrack:Stop() end) emoteTrack = nil end
    if audioLoop then pcall(function() audioLoop:Stop() audioLoop:Destroy() end) audioLoop = nil end
    if audioStart then pcall(function() audioStart:Stop() audioStart:Destroy() end) audioStart = nil end
    if rushConnection then rushConnection:Disconnect() rushConnection = nil end
    clearConnections()
end

local function doCooldown(duration)
    if inCooldown then return end
    inCooldown = true
    task.spawn(function()
        for i = duration, 1, -1 do
            if rushButton then rushButton.Text = tostring(i) end
            task.wait(1)
        end
        if rushButton then rushButton.Text = "RUSH" end
        inCooldown = false
        canRushFreely = false
    end)
end

local function hitCooldownTimer()
    hitCooldown = true
    task.wait(HIT_COOLDOWN)
    hitCooldown = false
end

local function stopRush(hitPlayer)
    cleanup()
    
    if hitPlayer then
        comboCount = comboCount + 1
        lastHitTime = tick()
        updateCombo()
        
        local hitSound = Instance.new("Sound")
        hitSound.SoundId = AUDIO_HIT_ID
        hitSound.Volume = 1 + (comboCount * 0.1)
        hitSound.Parent = root
        hitSound:Play()
        Debris:AddItem(hitSound, 3)

        spawn(hitCooldownTimer)
        canRushFreely = true
        lastRushAttempt = tick()
        if rushButton then rushButton.Text = "RUSH" end
    else
        doCooldown(9)
    end
end

local function startRush()
    local now = tick()
    if canRushFreely and (now - lastRushAttempt) > FREE_WINDOW then canRushFreely = false end
    
    if rushing then return end
    if not canRushFreely and (inCooldown or hitCooldown) then return end
    if not character or not root or not root.Parent then return end

    rushing = true
    rushStartTime = tick()
    burstEndTime = rushStartTime + 1
    smoothEndTime = burstEndTime + 1
    
    if rushButton then rushButton.Text = "GO!" end

    pcall(function()
        audioStart = Instance.new("Sound", root)
        audioStart.SoundId = AUDIO_START_ID
        audioStart.Volume = 0.7
        audioStart.Looped = false
        audioStart:Play()
        Debris:AddItem(audioStart, 5)
    end)

    local anim = Instance.new("Animation")
    anim.AnimationId = EMOTE_ID
    emoteTrack = humanoid:LoadAnimation(anim)
    emoteTrack.Looped = true
    emoteTrack:Play()

    task.spawn(function()
        task.wait(0.3)
        if rushing then
            pcall(function()
                audioLoop = Instance.new("Sound", root)
                audioLoop.SoundId = AUDIO_LOOP_ID
                audioLoop.Volume = 0.7
                audioLoop.Looped = true
                audioLoop:Play()
            end)
        end
    end)

    clearConnections()
    for _, part in pairs(character:GetChildren()) do
        if part:IsA("BasePart") and part ~= root then
            local conn = part.Touched:Connect(function(hit)
                if not rushing then return end
                local hitPlayer = Players:GetPlayerFromCharacter(hit.Parent)
                if hitPlayer and hitPlayer ~= player then
                    stopRush(true)
                end
            end)
            table.insert(touchConnections, conn)
        end
    end

    rushConnection = RunService.Heartbeat:Connect(function()
        if not rushing or not root or not root.Parent then 
            stopRush(false)
            return
        end

        local elapsed = tick() - rushStartTime
        if elapsed >= 4.4 then
            stopRush(false)
            return
        end

        local now = tick()
        local speed = now < burstEndTime and BURST_SPEED or 
                     (now < smoothEndTime and (BURST_SPEED + (NORMAL_SPEED - BURST_SPEED) * (now - burstEndTime)) or 
                     (canRushFreely and BOOST_SPEED or NORMAL_SPEED))

        local direction = root.CFrame.LookVector
        root.CFrame = root.CFrame + (direction * speed * 0.033)
    end)
end

------------------------------------------------------------------
-- EVENTOS
------------------------------------------------------------------
if player.Character then applyAnims(player.Character) end
player.CharacterAdded:Connect(function(char)
    task.wait(1)
    cleanup()
    resetCombo()
    canRushFreely = false
    applyAnims(char)
    rushButton = createGui()
end)

if rushButton then rushButton.MouseButton1Click:Connect(startRush) end
UserInputService.InputBegan:Connect(function(input, gp)
    if gp then return end
    if input.KeyCode == Enum.KeyCode.Q then startRush() end
end)

humanoid.Died:Connect(function()
    cleanup()
    resetCombo()
end)

spawn(function()
    while true do
        task.wait(0.1)
        if comboCount > 0 and tick() - lastHitTime > COMBO_TIMEOUT then resetCombo() end
    end
end)

Features & Information

Basically, Noli only has Void Rush for now. If someone makes the animation, I will add it have combos too,and made by AI πŸ˜­πŸ™πŸ’”
#noli#forsaken#roblox#exploit#Fe

Community Comments (1)

StrongestBobEverStrongestBobEverJan 20, 2026

please make a verison where The animations can be EDITED

More Scripts for Universal Scripts