local Players = game:GetService("Players") local UserInputService = game:GetService("UserInputService") local RunService = game:GetService("RunService") local player = Players.LocalPlayer local guiParent = player:WaitForChild("PlayerGui") getgenv().guiPositions = getgenv().guiPositions or {} getgenv().guiLocks = getgenv().guiLocks or {} local lagDuration = 0.12 local lagIntensity = 100000 if guiParent:FindFirstChild("lagGui") then return end local function addScale(gui) local s = Instance.new("UIScale") local cam = workspace.CurrentCamera local function update() s.Scale = math.clamp(cam.ViewportSize.Y / 720, 0.85, 1.35) end update() cam:GetPropertyChangedSignal("ViewportSize"):Connect(update) s.Parent = gui end local function holdSystem(button, callback, name) local holdTime = 5 local locked = getgenv().guiLocks[name] or false local holding = false local holdStart = 0 local holdTriggered = false button.InputBegan:Connect(function(input) if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then return end holding = true holdStart = tick() holdTriggered = false callback() end) button.InputEnded:Connect(function(input) if input.UserInputType ~= Enum.UserInputType.MouseButton1 and input.UserInputType ~= Enum.UserInputType.Touch then return end holding = false end) RunService.RenderStepped:Connect(function() if holding and not holdTriggered then if tick() - holdStart >= holdTime then holdTriggered = true locked = not locked getgenv().guiLocks[name] = locked end end end) return function() return locked end end local function drag(button, isLocked, name) local dragging = false local dragInput local dragStart local startPos if getgenv().guiPositions[name] then button.Position = getgenv().guiPositions[name] end button.InputBegan:Connect(function(input) if isLocked and isLocked() then return end if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragInput = input dragStart = input.Position startPos = button.Position end end) button.InputChanged:Connect(function(input) if input == dragInput and dragging then local delta = input.Position - dragStart button.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y) getgenv().guiPositions[name] = button.Position end end) UserInputService.InputEnded:Connect(function(input) if input == dragInput then dragging = false dragInput = nil end end) end local lagging = false local lagConnection local gui = Instance.new("ScreenGui") gui.Name = "lagGui" gui.ResetOnSpawn = false gui.Parent = guiParent addScale(gui) local button = Instance.new("ImageButton") button.Parent = gui button.BackgroundTransparency = 1 button.Size = UDim2.new(0, 80, 0, 80) button.Position = UDim2.new(0, 120, 0, 90) button.Image = "rbxassetid://16803802267" local signal = Instance.new("ImageLabel") signal.Parent = button signal.BackgroundTransparency = 1 signal.Size = UDim2.new(0.55, 0, 0.55, 0) signal.Position = UDim2.new(0.225, 0, 0.225, 0) signal.Image = "rbxassetid://120149956647138" signal.ImageTransparency = 0.6 local lagLocked = holdSystem(button, function() if lagging then return end lagging = true signal.Image = "rbxassetid://125935874994032" local start = os.clock() lagConnection = RunService.RenderStepped:Connect(function() if os.clock() - start >= lagDuration then if lagConnection then lagConnection:Disconnect() lagConnection = nil end lagging = false signal.Image = "rbxassetid://120149956647138" return end for i = 1, lagIntensity do local x = math.random() * math.random() * math.random() for j = 1, 10 do x = x ^ math.random() x = math.sin(x) * math.cos(x) * math.tan(x) end end end) end, "lag") drag(button, lagLocked, "lag")