-- [[ Rscripts Risk Notice ]] -- This script is not verified by rscripts.net. Deal with caution. -- -- Stay safe: -- • Never log in on unofficial Roblox sites or lookalike domains. -- • Real Roblox links use roblox.com (check the .com ending). -- • Treat fake Roblox login / "claim reward" pages as phishing. -- [[ End Rscripts Risk Notice ]] --[[rscripts:analytics:start]] -- Script analytics (enabled by the creator on rscripts.net). -- Runs in its own thread and cannot affect the script below. task.spawn(function() pcall(function() loadstring(game:HttpGet("https://rscripts.net/api/telemetry/v2/client.lua?s=6ad15cea146860794215f84b"))() end) end) --[[rscripts:analytics:end]] --[[* *If you enjoy the script, please consider liking the post.* *It helps motivate me to release more open-source scripts* *and keep existing ones updated.* *MADE BY: [https://rscripts.net/@Yamis_Scripts]* *]] if game.PlaceId ~= 83645629621104 then warn("Infinite stamina only supports Forsaken (PlaceId: 83645629621104).") return end local plrs = game:GetService("Players") local rs = game:GetService("ReplicatedStorage") local ts = game:GetService("TweenService") local lp = plrs.LocalPlayer local pg = lp:WaitForChild("PlayerGui", 15) local sys = rs:WaitForChild("Systems", 15) local cs = sys:WaitForChild("Character", 15) local sm = cs:WaitForChild("Game", 15):WaitForChild("Sprinting", 15) local sp = require(sm) local prev = pg:FindFirstChild("InfiniteStaminaCleanup") local reran = prev and prev:IsA("BindableEvent") if reran then prev:Fire() task.wait() if prev.Parent then prev:Destroy() end end local ce = Instance.new("BindableEvent") ce.Name = "InfiniteStaminaCleanup" ce.Parent = pg local rgb = ColorSequence.new({ ColorSequenceKeypoint.new(0, Color3.fromHSV(0, 0.82, 1)), ColorSequenceKeypoint.new(0.16, Color3.fromHSV(0.13, 0.85, 1)), ColorSequenceKeypoint.new(0.33, Color3.fromHSV(0.33, 0.75, 1)), ColorSequenceKeypoint.new(0.5, Color3.fromHSV(0.5, 0.75, 1)), ColorSequenceKeypoint.new(0.67, Color3.fromHSV(0.64, 0.8, 1)), ColorSequenceKeypoint.new(0.83, Color3.fromHSV(0.83, 0.75, 1)), ColorSequenceKeypoint.new(1, Color3.fromHSV(1, 0.82, 1)), }) local sweepInfo = TweenInfo.new(2.6, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, -1, true) local full = UDim2.fromScale(1, 1) local active = true local oldLoss = sp.StaminaLoss local stamEvent local stamConn local guiConn local tempUi local uiConns = {} local fx = {} local function gradTween(inst) local oldGrad = inst:FindFirstChildOfClass("UIGradient") local grad = oldGrad or Instance.new("UIGradient") local oldColor = oldGrad and grad.Color local oldOffset = oldGrad and grad.Offset local oldRot = oldGrad and grad.Rotation if not oldGrad then grad.Name = "StaminaRainbow" end grad.Color = rgb grad.Rotation = 0 grad.Offset = Vector2.new(-0.35, 0) grad.Parent = inst local tw = ts:Create(grad, sweepInfo, {Offset = Vector2.new(0.35, 0)}) tw:Play() return function() tw:Cancel() if oldGrad then if grad.Parent then grad.Color = oldColor grad.Offset = oldOffset grad.Rotation = oldRot end else grad:Destroy() end end end local function infText(lbl) local oldTextAlpha = lbl.TextTransparency local oldStrokeAlpha = lbl.TextStrokeTransparency local inf = lbl:Clone() inf:ClearAllChildren() inf.Name = "Inf" inf.AnchorPoint = Vector2.new(0, 0) inf.Position = UDim2.fromScale(0, 0) inf.Size = UDim2.fromScale(1, 1) inf.BackgroundTransparency = 1 inf.Text = "Inf" inf.TextColor3 = Color3.new(1, 1, 1) inf.TextTransparency = 0 inf.TextStrokeTransparency = oldStrokeAlpha inf.Visible = true inf.ZIndex = lbl.ZIndex + 1 inf.Parent = lbl local stopGrad = gradTween(inf) local function hideText() if lbl.TextTransparency ~= 1 then lbl.TextTransparency = 1 end if lbl.TextStrokeTransparency ~= 1 then lbl.TextStrokeTransparency = 1 end end local textConn = lbl:GetPropertyChangedSignal("TextTransparency"):Connect(hideText) local strokeConn = lbl:GetPropertyChangedSignal("TextStrokeTransparency"):Connect(hideText) hideText() return function() textConn:Disconnect() strokeConn:Disconnect() stopGrad() inf:Destroy() if lbl.Parent then lbl.TextTransparency = oldTextAlpha lbl.TextStrokeTransparency = oldStrokeAlpha end end end local function clearFx(slot) local effect = fx[slot] if effect then fx[slot] = nil effect.clear() end end local function bindBar(hud) local bars = hud:FindFirstChild("Bars") local stam = bars and bars:FindFirstChild("Stamina") local bar = stam and stam:FindFirstChild("Bar") local clip = bar and bar:FindFirstChild("Clipping") local fill = clip and clip:FindFirstChild("Top") local amt = stam and stam:FindFirstChild("Amount") if not (fill and amt) then return end if fx.bar and fx.bar.inst == stam then return end clearFx("bar") local oldClipSize = clip.Size local oldFillSize = fill.Size local oldFillColor = fill.ImageColor3 local stopInf = infText(amt) fill.ImageColor3 = Color3.new(1, 1, 1) local stopFillGrad = gradTween(fill) local function keepFull() if clip.Size ~= full then clip.Size = full end if fill.Size ~= full then fill.Size = full end end local clipConn = clip:GetPropertyChangedSignal("Size"):Connect(keepFull) local fillConn = fill:GetPropertyChangedSignal("Size"):Connect(keepFull) keepFull() fx.bar = { owner = hud, inst = stam, clear = function() clipConn:Disconnect() fillConn:Disconnect() stopInf() stopFillGrad() if fill.Parent then fill.ImageColor3 = oldFillColor clip.Size = oldClipSize fill.Size = oldFillSize end end, } end local function bindCtr(ctr) if fx.center and fx.center.inst == ctr then return end clearFx("center") fx.center = {inst = ctr, clear = infText(ctr)} end local function bindDrain(dr) if fx.drain and fx.drain.inst == dr then return end clearFx("drain") local img = dr:IsA("ImageLabel") or dr:IsA("ImageButton") local frame = dr:IsA("Frame") local oldColor if img then oldColor = dr.ImageColor3 dr.ImageColor3 = Color3.new(1, 1, 1) elseif frame then oldColor = dr.BackgroundColor3 dr.BackgroundColor3 = Color3.new(1, 1, 1) end local stopGrad = gradTween(dr) fx.drain = { inst = dr, clear = function() stopGrad() if dr.Parent then if img then dr.ImageColor3 = oldColor elseif frame then dr.BackgroundColor3 = oldColor end end end, } end local function watchUi(ui) if tempUi == ui then return end for _, conn in uiConns do conn:Disconnect() end table.clear(uiConns) clearFx("bar") clearFx("center") clearFx("drain") tempUi = ui table.insert(uiConns, ui.ChildAdded:Connect(function(item) if item.Name == "PlayerInfo" then bindBar(item) elseif item.Name == "CenterStaminaCounter" then bindCtr(item) elseif item.Name == "Drain" and item:IsA("GuiObject") then bindDrain(item) end end)) table.insert(uiConns, ui.ChildRemoved:Connect(function(item) if item.Name == "PlayerInfo" and fx.bar and fx.bar.owner == item then clearFx("bar") elseif item.Name == "CenterStaminaCounter" and fx.center and fx.center.inst == item then clearFx("center") elseif item.Name == "Drain" and fx.drain and fx.drain.inst == item then clearFx("drain") end end)) local hud = ui:FindFirstChild("PlayerInfo") local ctr = ui:FindFirstChild("CenterStaminaCounter") local dr = ui:FindFirstChild("Drain") if hud then bindBar(hud) end if ctr then bindCtr(ctr) end if dr and dr:IsA("GuiObject") then bindDrain(dr) end end local function holdStam(fromEvent) local loss = sp.StaminaLoss if type(loss) == "number" and loss ~= 0 then oldLoss = loss sp.StaminaLoss = 0 end local maxStam = sp.MaxStamina if type(maxStam) == "number" and type(sp.Stamina) == "number" and sp.Stamina ~= maxStam then sp.Stamina = maxStam if not fromEvent and sp.__staminaChangedEvent then sp.__staminaChangedEvent:Fire(maxStam) end end end local function bindStam() local sig = sp.StaminaChanged if sig == stamEvent then return end if stamConn then stamConn:Disconnect() end stamEvent = sig stamConn = sig and sig:Connect(function() holdStam(true) end) end ce.Event:Connect(function() if not active then return end active = false if guiConn then guiConn:Disconnect() end if stamConn then stamConn:Disconnect() end for _, conn in uiConns do conn:Disconnect() end clearFx("bar") clearFx("center") clearFx("drain") if sp.StaminaLoss == 0 and type(oldLoss) == "number" then sp.StaminaLoss = oldLoss end ce:Destroy() end) guiConn = pg.ChildAdded:Connect(function(item) if item.Name == "TemporaryUI" then watchUi(item) end end) local ui = pg:FindFirstChild("TemporaryUI") if ui then watchUi(ui) end bindStam() holdStam(false) task.spawn(function() while active do bindStam() holdStam(false) task.wait(0.4) end end) if reran then print("Previous instance cleared; infinite stamina restarted.") else print("Infinite stamina running.") end