Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
UserInputService = :()
Debris = :()
player = Players.LocalPlayer
gui = player:()
character = player.Character player.CharacterAdded:()
humanoid = character:()
root = character:()
jumpAnim = .()
jumpAnim.AnimationId =
jumpAnimTrack = humanoid:(jumpAnim)
scriptEnabled =
spaceHeld =
infJumpEnabled =
velocity = .()
isGrounded =
wasGrounded =
footstepTimer =
footstepInterval =
lastFootstepIndex =
cfg = {
groundAccel = ,
airAccel = ,
maxAirSpeed = ,
runSpeed = ,
jumpPower = ,
gravity = ,
friction = ,
stopSpeed = ,
}
footstepSounds = {
,
,
,
,
}
jumpSound
landSound
()
jumpSound jumpSound:()
landSound landSound:()
jumpSound = .()
jumpSound.SoundId =
jumpSound.Volume =
jumpSound.PlaybackSpeed =
jumpSound.Parent = root
landSound = .()
landSound.SoundId =
landSound.Volume =
landSound.PlaybackSpeed =
landSound.Parent = root
()
()
sound = .()
sound.Parent =
lastFootstepIndex = lastFootstepIndex +
lastFootstepIndex > #footstepSounds
lastFootstepIndex =
sound.SoundId = footstepSounds[lastFootstepIndex]
sound.Volume =
sound.PlaybackSpeed = + .(-, ) /
sound:()
Debris:(sound, )
()
jumpSound
jumpSound:()
jumpSound:()
jumpAnimTrack
jumpAnimTrack:()
()
landSound
landSound:()
landSound:()
jumpAnimTrack
jumpAnimTrack:()
isMobile = UserInputService.TouchEnabled UserInputService.KeyboardEnabled
gameModes = {}
isMobile
gameModes = {, , }
gameModes = {, , }
currentModeIndex =
()
g = .()
g.ResetOnSpawn =
g.Name =
g.Parent = gui
destroy = .()
destroy.Size = .(, , , )
destroy.Position = .(, , , -)
destroy.BackgroundColor3 = .(, , )
destroy.Text =
destroy.Parent = g
destroy.MouseButton1Click:(()
humanoid
humanoid.WalkSpeed =
humanoid.JumpPower =
g:()
scriptEnabled =
)
toggle = .()
toggle.Size = .(, , , )
toggle.Position = .(, , , -)
toggle.BackgroundColor3 = .(, , )
toggle.Text =
toggle.Parent = g
toggle.MouseButton1Click:(()
scriptEnabled = scriptEnabled
toggle.Text = scriptEnabled
toggle.BackgroundColor3 = scriptEnabled .(, , ) .(, , )
)
infJumpButton = .()
infJumpButton.Size = .(, , , )
infJumpButton.Position = .(, , , -)
infJumpButton.BackgroundColor3 = .(, , )
infJumpButton.Text =
infJumpButton.TextScaled =
infJumpButton.Parent = g
infJumpButton.MouseButton1Click:(()
infJumpEnabled = infJumpEnabled
infJumpButton.Text = infJumpEnabled
infJumpButton.BackgroundColor3 = infJumpEnabled .(, , ) .(, , )
)
modeButton = .()
modeButton.Size = .(, , , )
modeButton.Position = .(, , , -)
modeButton.BackgroundColor3 = .(, , )
modeButton.Text = .. gameModes[currentModeIndex]
modeButton.TextScaled =
modeButton.Parent = g
modeButton.MouseButton1Click:(()
currentModeIndex = currentModeIndex +
currentModeIndex > #gameModes
currentModeIndex =
modeButton.Text = .. gameModes[currentModeIndex]
)
speedLabel = .()
speedLabel.Size = .(, , , )
speedLabel.Position = .(, , , -)
speedLabel.BackgroundTransparency =
speedLabel.Text =
speedLabel.TextColor3 = .(, , )
speedLabel.TextScaled =
speedLabel.Font = .Font.GothamBold
speedLabel.Parent = g
speedBox = .()
speedBox.Size = .(, , , )
speedBox.Position = .(, , , -)
speedBox.BackgroundColor3 = .(, , )
speedBox.Text = (cfg.runSpeed)
speedBox.TextColor3 = .(, , )
speedBox.TextScaled =
speedBox.Font = .Font.GothamBold
speedBox.ClearTextOnFocus =
speedBox.Parent = g
()
number = (speedBox.Text)
number number > number <
cfg.runSpeed = number
cfg.maxAirSpeed = .(number * )
speedBox.Text = (number)
speedBox.BackgroundColor3 = .(, , )
.()
speedBox.BackgroundColor3 = .(, , )
speedBox.Text = (cfg.runSpeed)
speedBox.BackgroundColor3 = .(, , )
.()
speedBox.BackgroundColor3 = .(, , )
speedBox.FocusLost:(()
()
)
isMobile
jumpButton = .()
jumpButton.Size = .(, , , )
jumpButton.Position = .(, -, , -)
jumpButton.Text =
jumpButton.Name =
jumpButton.Parent = g
jumpButton.MouseButton1Down:(()
spaceHeld =
)
jumpButton.MouseButton1Up:(()
spaceHeld =
)
()
()
rayParams = RaycastParams.()
rayParams.FilterDescendantsInstances = {character}
rayParams.FilterType = .RaycastFilterType.Exclude
result = :(root.Position, .(, -, ), rayParams)
result result.Instance result.Instance.CanCollide
(dt)
speed = velocity.Magnitude
speed <
velocity = .()
drop = isGrounded (.(speed, cfg.stopSpeed) * cfg.friction * dt)
newSpeed = .(speed - drop, )
newSpeed ~= speed
velocity = velocity * (newSpeed / speed)
(wishDir, wishSpeed, accelAmount, dt)
cur = velocity:(wishDir)
add = wishSpeed - cur
add <=
accelSpeed = .(accelAmount * dt * wishSpeed, add)
velocity = velocity + wishDir * accelSpeed
(dt)
scriptEnabled
humanoid humanoid.Health <=
root root.Parent
humanoid.WalkSpeed =
humanoid.JumpPower =
wasGrounded = isGrounded
isGrounded = ()
isGrounded wasGrounded
()
footstepTimer =
cam = .CurrentCamera
fwd = cam.CFrame.LookVector
right = cam.CFrame.RightVector
fwd = .(fwd.X, , fwd.Z)
right = .(right.X, , right.Z)
fwd.Magnitude >
fwd = fwd.Unit
right.Magnitude >
right = right.Unit
input = .()
isMobile
input = humanoid.MoveDirection
UserInputService:(.KeyCode.W)
input = input + fwd
UserInputService:(.KeyCode.S)
input = input - fwd
UserInputService:(.KeyCode.A)
input = input - right
UserInputService:(.KeyCode.D)
input = input + right
input.Magnitude >
input = input.Unit
isGrounded
(dt)
(input, cfg.runSpeed, cfg.groundAccel, dt)
input.Magnitude >
footstepTimer = footstepTimer + dt
footstepTimer >= footstepInterval
()
footstepTimer =
spaceHeld
velocity = .(velocity.X, cfg.jumpPower, velocity.Z)
()
velocity = .(velocity.X, , velocity.Z)
(input, cfg.maxAirSpeed, cfg.airAccel, dt)
velocity = velocity + .(, -cfg.gravity * dt, )
infJumpEnabled spaceHeld
velocity = .(velocity.X, cfg.jumpPower, velocity.Z)
()
root.AssemblyLinearVelocity = velocity
UserInputService.InputBegan:((input)
input.KeyCode == .KeyCode.Space
spaceHeld =
)
UserInputService.InputEnded:((input)
input.KeyCode == .KeyCode.Space
spaceHeld =
)
RunService.Heartbeat:((dt)
(dt)
)
player.CharacterAdded:((char)
character = char
humanoid = char:()
root = char:()
jumpAnimTrack = humanoid:(jumpAnim)
()
velocity = .()
isGrounded =
wasGrounded =
)
()Just bhop Prob just mobile support