Run it
Copy the script and paste it into your executor.
autoJumpEnabled =
bhopHoldActive =
bhopHoldFeature =
jumpCooldown =
autoJumpType =
accelerationMethod =
groundFriction = -
AutoAccelerationEnabled =
MaxAcceleration =
MinAcceleration = -
MaxSpeed =
player = :().LocalPlayer
RunService = :()
UserInputService = :()
bhopConnection =
bhopLoaded =
Character =
Humanoid =
HumanoidRootPart =
LastJump =
GROUND_CHECK_DISTANCE =
MAX_SLOPE_ANGLE =
movementModule =
originalApplyFriction =
()
Character HumanoidRootPart Humanoid
success, result = (()
state = Humanoid:()
state == .HumanoidStateType.Jumping state == .HumanoidStateType.Freefall state == .HumanoidStateType.Swimming
raycastParams = RaycastParams.()
raycastParams.FilterType = .RaycastFilterType.Exclude
raycastParams.FilterDescendantsInstances = {Character}
raycastResult = :(HumanoidRootPart.Position, .(, -GROUND_CHECK_DISTANCE, ), raycastParams)
raycastResult
angle = .(.(raycastResult.Normal:(.(, , ))))
angle <= MAX_SLOPE_ANGLE
)
success result
()
bhopLoaded
(()
Character Humanoid
isBhopActive = autoJumpEnabled bhopHoldActive
isBhopActive
now = ()
() (now - LastJump) > jumpCooldown
Humanoid:(.HumanoidStateType.Jumping)
LastJump = now
)
()
bhopLoaded
bhopLoaded =
bhopConnection bhopConnection:()
bhopConnection = RunService.Heartbeat:(updateBhop)
()
bhopLoaded
bhopLoaded =
bhopConnection
bhopConnection:()
bhopConnection =
bhopHoldActive =
()
autoJumpEnabled bhopHoldActive
()
()
()
(()
playerGui = player:(, )
touchGui = playerGui:(, )
jumpButton = touchGui:(, )
jumpButton
jumpButton.InputBegan:((input)
input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseButton1
bhopHoldFeature
bhopHoldActive =
()
)
jumpButton.InputEnded:((input)
input.UserInputType == .UserInputType.Touch input.UserInputType == .UserInputType.MouseButton1
bhopHoldActive =
()
)
)
()
HumanoidRootPart
(HumanoidRootPart.Velocity * .(, , )).Magnitude
()
movementModule
originalApplyFriction
originalApplyFriction = movementModule.ApplyFriction
isBhopActive = autoJumpEnabled bhopHoldActive
isBhopActive
movementModule.ApplyFriction = (self, frictionAmount)
isGrounded = self.a ==
isGrounded
accelerationMethod ==
frictionAmount =
accelerationMethod == accelerationMethod ==
finalFriction = groundFriction
AutoAccelerationEnabled
currentSpeed = ()
currentSpeed > MaxSpeed
finalFriction = MaxAcceleration
currentSpeed < MaxSpeed
finalFriction = MinAcceleration
frictionAmount = finalFriction
(self, frictionAmount)
movementModule.ApplyFriction = originalApplyFriction
(character)
movement = character:()
()
success, module = (, movement)
success module
movementModule = module
()
()
(()
character character.Parent
()
success, module = (, movement)
success module module ~= movementModule
movementModule = module
()
)
(character)
(character)
player.Character
(player.Character)
player.CharacterAdded:(ApplyModifications)
player.CharacterAdded:((char)
Character = char
Humanoid = char:()
HumanoidRootPart = char:()
()
()
)
player.Character
Character = player.Character
Humanoid = Character:()
HumanoidRootPart = Character:()
RunService.Heartbeat:(()
Character Character:()
Character = player.Character
Character
Humanoid = Character:()
HumanoidRootPart = Character:()
)
()
()
Tabs.Auto:({Title=})
BhopToggle = Tabs.Auto:({
Title = ,
Flag = ,
Value = ,
Callback = (state)
autoJumpEnabled = state
()
()
})
BhopHoldToggle = Tabs.Auto:({
Title = ,
Flag = ,
Value = ,
Callback = (state)
bhopHoldFeature = state
state
bhopHoldActive =
()
()
})
ShowBunnyHopButtonToggle = Tabs.Auto:({
Title = ,
Flag = ,
Value = ,
Callback = (state)
.DarahubLibBtn .DarahubLibBtn.BunnyHopToggle
.DarahubLibBtn.BunnyHopToggle.Visible = state
})
AccelerationDropdown = Tabs.Auto:({
Title = ,
Flag = ,
Values = {, , },
Value = ,
Callback = (value)
accelerationMethod = value
()
})
AccelerationInput = Tabs.Auto:({
Title = ,
Flag = ,
Placeholder = ,
Numeric = ,
Value = ,
Callback = (value)
n = (value)
n
groundFriction = n
()
})
AutoJumpTypeDropdown = Tabs.Auto:({
Title = ,
Flag = ,
Values = {, },
Value = ,
Callback = (value)
autoJumpType = value
})
JumpCooldownInput = Tabs.Auto:({
Title = ,
Flag = ,
Placeholder = ,
Numeric = ,
Value = ,
Callback = (value)
n = (value)
n n >
jumpCooldown = n
})
Tabs.Auto:({Title=})
AutoAccelerationToggle = Tabs.Auto:({
Title = ,
Flag = ,
Value = ,
Callback = (state)
AutoAccelerationEnabled = state
()
})
MaxAccelerationInput = Tabs.Auto:({
Title = ,
Flag = ,
Placeholder = ,
Numeric = ,
Value = ,
Callback = (value)
n = (value)
n
MaxAcceleration = n
()
})
MinAccelerationInput = Tabs.Auto:({
Title = ,
Flag = ,
Placeholder = ,
Numeric = ,
Value = ,
Callback = (value)
n = (value)
n
MinAcceleration = n
()
})
MaxSpeedInput = Tabs.Auto:({
Title = ,
Flag = ,
Placeholder = ,
Numeric = ,
Value = ,
Callback = (value)
n = (value)
n
MaxSpeed = n
()
})
ButtonLib.Create:({
Text = ,
Flag = ,
Default = ,
Visible = ,
Callback = (s)
BhopToggle
BhopToggle:(s)
}).Position = .(, -, , )bhop for legacy

Universal