Run it
Copy the script and paste it into your executor.
Players = :()
Lighting = :()
RunService = :()
VirtualUser = :()
UIS = :()
player = Players.LocalPlayer
camera = .CurrentCamera
gui = .()
gui.ResetOnSpawn =
gui.IgnoreGuiInset =
gui.Parent = player:()
black = .()
black.Parent = gui
black.Size = .(,)
black.BackgroundColor3 = .(,,)
black.ZIndex =
black.Visible =
btn = .()
btn.Parent = gui
btn.Size = .(,)
btn.AnchorPoint = .(,)
btn.BackgroundColor3 = .(,,)
btn.TextColor3 = .(,,)
btn.TextScaled =
btn.Font = .Font.SourceSansBold
btn.Text =
btn.ZIndex =
.()
btn.Position = .(gui.AbsoluteSize.X - , )
blur = .()
blur.Size =
blur.Parent = Lighting
removedColorMaps = {}
storedParts = {}
disabledLights = {}
disabledFX = {}
()
_,v (Lighting:())
v:() v:() v:()
v.Enabled =
v:()
.(removedColorMaps, v:())
v:()
()
_,v (Lighting:())
v:() v:() v:()
v.Enabled =
_,cc (removedColorMaps)
cc.Parent = Lighting
removedColorMaps = {}
(on)
_,v (:())
v:() v:() v:()
on
v.Enabled
disabledLights[v] =
v.Enabled =
disabledLights[v]
v.Enabled =
on disabledLights = {}
(on)
_,v (:())
v:() v:()
on
v.Enabled
disabledFX[v] =
v.Enabled =
disabledFX[v]
v.Enabled =
on disabledFX = {}
(on)
_, obj (:())
obj:()
on
storedParts[obj] = {obj.Material, obj.CastShadow}
obj.Material = .Material.Plastic
obj.CastShadow =
storedParts[obj]
obj.Material = storedParts[obj][]
obj.CastShadow = storedParts[obj][]
obj:() obj:() obj:()
obj.Transparency = on
on storedParts = {}
afk =
freezeConn
camConn
oldWalk
oldJump
oldMinZoom
oldMaxZoom
oldCamType
lockedCFrame
(on)
char = player.Character
char
hum = char:()
root = char:()
hum root
on
oldWalk = hum.WalkSpeed
oldJump = hum.JumpPower
oldMinZoom = player.CameraMinZoomDistance
oldMaxZoom = player.CameraMaxZoomDistance
oldCamType = camera.CameraType
lockedCFrame = camera.CFrame
hum.WalkSpeed =
hum.JumpPower =
root.Anchored =
player.CameraMinZoomDistance =
player.CameraMaxZoomDistance =
camera.CameraType = .CameraType.Scriptable
camConn = RunService.RenderStepped:(()
camera.CFrame = lockedCFrame
)
hum.WalkSpeed = oldWalk
hum.JumpPower = oldJump
root.Anchored =
player.CameraMinZoomDistance = oldMinZoom
player.CameraMaxZoomDistance = oldMaxZoom
camConn camConn:()
camera.CameraType = oldCamType .CameraType.Custom
dragging =
dragStart
startPos
activeInput
btn.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1 input.UserInputType == .UserInputType.Touch
dragging =
activeInput = input
dragStart = input.Position
startPos = btn.Position
)
UIS.InputEnded:((input)
input == activeInput
dragging =
activeInput =
)
UIS.InputChanged:((input)
dragging input == activeInput
delta = input.Position - dragStart
newX = startPos.X.Offset + delta.X
newY = startPos.Y.Offset + delta.Y
screen = gui.AbsoluteSize
size = btn.AbsoluteSize
newX = .(newX, size.X, screen.X)
newY = .(newY, , screen.Y - size.Y)
btn.Position = .(newX, newY)
)
btn.MouseButton1Click:(()
afk = afk
afk
btn.Text =
black.Visible =
blur.Size =
()
()
()
()
()
freezeConn = RunService.RenderStepped:(()
RunService:()
)
btn.Text =
black.Visible =
blur.Size =
()
()
()
()
freezeConn freezeConn:()
RunService:()
()
)
player.CharacterAdded:(()
afk
.()
()
)
player.Idled:(()
afk
VirtualUser:()
VirtualUser:(.())
)This LocalScript adds an AFK Mode button and That: Can Move Toggle Around Prevents Roblox AFK kick Freezes character and camera Turns off 3D rendering for cooling Removes post effects and lights Adds optional black screen for power saving Reverts everything when AFK is turned off Good for mobile players who want to AFK without overheating or lag spikes.

Universal