local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") local humanoidRootPart = character:WaitForChild("HumanoidRootPart") local Debris = game:GetService("Debris") local cooldown = false local immunityTag = "SallyRollImmunity" local screenGui = Instance.new("ScreenGui") screenGui.Name = "SallyRollGUI" screenGui.Parent = player:WaitForChild("PlayerGui") screenGui.ResetOnSpawn = false local rollButton = Instance.new("ImageButton") rollButton.Size = UDim2.new(0, 80, 0, 80) rollButton.Position = UDim2.new(1, -210, 0.5, 0) rollButton.BackgroundTransparency = 1 rollButton.Name = "RollButton" rollButton.Parent = screenGui rollButton.Image = "rbxassetid://5743593320" local imageOff = "rbxassetid://5743593320" local imageOn = "rbxassetid://5743593320" local extraImage = Instance.new("ImageLabel") extraImage.Size = UDim2.new(0, 60, 0, 60) extraImage.Position = UDim2.new(1, -201, 0.5, -22) extraImage.BackgroundTransparency = 1 extraImage.Image = "" extraImage.Parent = screenGui local circle = Instance.new("Frame") circle.Size = UDim2.new(0, 60, 0, 60) circle.Position = UDim2.new(0.86, -30, 0.88, -30) circle.AnchorPoint = Vector2.new(0.5, 0.5) circle.BackgroundColor3 = Color3.new(1, 1, 1) circle.BackgroundTransparency = 1 circle.ZIndex = 2 circle.Parent = rollButton local circleCorner = Instance.new("UICorner", circle) circleCorner.CornerRadius = UDim.new(0.5, 0) local cooldownImage = Instance.new("ImageLabel") cooldownImage.Size = UDim2.new(1, 0, 1, 0) cooldownImage.Position = UDim2.new(0, 0, 0, 0) cooldownImage.BackgroundTransparency = 1 cooldownImage.Image = "" cooldownImage.Visible = false cooldownImage.Parent = circle local function startCooldown() cooldown = true cooldownImage.Visible = true rollButton.Image = imageOff circle.BackgroundTransparency = 0.5 wait(26) rollButton.Image = imageOff circle.BackgroundTransparency = 1 cooldownImage.Visible = false cooldown = false end local function activateRoll() if cooldown or not character or not humanoidRootPart then return end cooldown = true rollButton.Image = imageOn local animation = Instance.new("Animation") animation.AnimationId = "rbxassetid://131093058595075" local animTrack = humanoid:LoadAnimation(animation) animTrack:Play() local direction1 = humanoidRootPart.CFrame.LookVector * 30 local velocity1 = Instance.new("BodyVelocity") velocity1.Velocity = direction1 velocity1.MaxForce = Vector3.new(100000, 0, 100000) velocity1.P = 5000 velocity1.Parent = humanoidRootPart Debris:AddItem(velocity1, 0.3) wait(0.3) velocity1:Destroy() local direction2 = humanoidRootPart.CFrame.LookVector * 55 local velocity2 = Instance.new("BodyVelocity") velocity2.Velocity = direction2 velocity2.MaxForce = Vector3.new(100000, 0, 100000) velocity2.P = 5000 velocity2.Parent = humanoidRootPart Debris:AddItem(velocity2, 0.7) local immuneTag = Instance.new("BoolValue") immuneTag.Name = immunityTag immuneTag.Parent = character Debris:AddItem(immuneTag, 1) wait(1) startCooldown() end -- Detectar tanto el clic como la tecla "Z" rollButton.MouseButton1Click:Connect(activateRoll) game:GetService("UserInputService").InputBegan:Connect(function(input, gameProcessed) if gameProcessed then return end if input.KeyCode == Enum.KeyCode.T then activateRoll() end end) humanoid.Died:Connect(function() if screenGui then screenGui:Destroy() end end) player.CharacterAdded:Connect(function() if screenGui then screenGui:Destroy() end end) local player = game.Players.LocalPlayer local character = player.Character or player.CharacterAdded:Wait() local humanoid = character:WaitForChild("Humanoid") humanoid:GetPropertyChangedSignal("Health"):Connect(function() if character:FindFirstChild("SallyRollImmunity") then humanoid.Health = humanoid.MaxHealth end end)