--// SETTINGS local NORMAL_SPEED = 7 local BLOCK_SPEED = 0.1 local ANIM_ID = "rbxassetid://139933859877956" --// REFERENCES local player = game.Players.LocalPlayer local playerGui = player:WaitForChild("PlayerGui") --// CLEANUP if playerGui:FindFirstChild("BlockButtonUI") then playerGui.BlockButtonUI:Destroy() end --// GUI local gui = Instance.new("ScreenGui") gui.Name = "BlockButtonUI" gui.ResetOnSpawn = false gui.Parent = playerGui local button = Instance.new("TextButton") button.Size = UDim2.new(0, 120, 0, 60) button.Position = UDim2.new(0, 100, 0, 200) button.Text = "BLOCK" button.TextScaled = true button.BackgroundColor3 = Color3.fromRGB(40, 40, 40) button.TextColor3 = Color3.new(1,1,1) button.Parent = gui Instance.new("UICorner", button) --// DRAG local dragging = false local dragStart, startPos button.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = button.Position end end) button.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = false end end) game:GetService("UserInputService").InputChanged:Connect(function(input) if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) 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 ) end end) --// CHARACTER local humanoid, animator local function setupCharacter(char) humanoid = char:WaitForChild("Humanoid") -- ensure Animator exists animator = humanoid:FindFirstChildOfClass("Animator") if not animator then animator = Instance.new("Animator") animator.Parent = humanoid end humanoid.WalkSpeed = NORMAL_SPEED end if player.Character then setupCharacter(player.Character) end player.CharacterAdded:Connect(setupCharacter) --// BLOCK local busy = false button.MouseButton1Click:Connect(function() if not humanoid or not animator or busy then return end busy = true humanoid.WalkSpeed = BLOCK_SPEED local anim = Instance.new("Animation") anim.AnimationId = ANIM_ID local track = animator:LoadAnimation(anim) track.Priority = Enum.AnimationPriority.Action track.Looped = false track:Play() -- failsafe (some executors don't fire Stopped properly) task.delay(track.Length > 0 and track.Length or 1.5, function() if humanoid then humanoid.WalkSpeed = NORMAL_SPEED end busy = false end) end)