Run it
Copy the script and paste it into your executor.
FirstPersonLock =
DisableAnimations =
MaxSpeed =
GroundMaxSpeed =
AirMaxSpeed =
GroundAcceleration =
AirAcceleration =
Friction =
AirControl =
JumpPower =
Gravity =
Players = :()
RunService = :()
UIS = :()
player = Players.LocalPlayer
camera = .CurrentCamera
character, humanoid, rootPart
velocity = .(, , )
isGrounded =
jumpHeld, wishJump = ,
moveForward, moveRight = ,
(v)
.(v.X, , v.Z)
(vel, wishDir, wishSpeed, accel, dt)
addSpeed = wishSpeed - vel:(wishDir)
addSpeed <= vel
accelSpeed = .(accel * wishSpeed * dt, addSpeed)
vel + wishDir * accelSpeed
(vel, dt)
speed = (vel).Magnitude
speed < .(, vel.Y, )
drop = .(speed, GroundMaxSpeed) * Friction * dt
scale = .(speed - drop, ) / speed
.(vel.X * scale, vel.Y, vel.Z * scale)
(vel, wishDir, dt)
AirControl == moveRight ~= vel
fv = (vel)
speed = fv.Magnitude
speed < vel
dot = fv.Unit:(wishDir)
dot <= vel
k = AirControl * dot * dot * dt *
adj = (fv * ( - k) + wishDir * (speed * k)).Unit * speed
.(adj.X, vel.Y, adj.Z)
hopSounds = {
}
hopIndex =
hopLoaded =
sound1, sound2
.(()
#hopSounds <
ok, err = (()
(, :(hopSounds[]))
(, :(hopSounds[]))
)
ok ( .. (err))
sound1 = .()
sound1.SoundId = ()
sound1.Volume =
sound1.Parent =
sound2 = .()
sound2.SoundId = ()
sound2.Volume =
sound2.Parent =
hopLoaded =
)
()
hopLoaded
hopIndex ==
sound1:()
sound2:()
hopIndex = hopIndex ==
()
DisableAnimations
animate = character:()
animate animate:()
_, track humanoid:()
track:()
animator = humanoid:()
animator animator:()
UIS.InputBegan:((input, gp)
kc = input.KeyCode
kc == .KeyCode.Space jumpHeld =
gp
kc == .KeyCode.W moveForward =
kc == .KeyCode.S moveForward = -
kc == .KeyCode.A moveRight = -
kc == .KeyCode.D moveRight =
)
UIS.InputEnded:((input)
kc = input.KeyCode
kc == .KeyCode.W moveForward == moveForward =
kc == .KeyCode.S moveForward == - moveForward =
kc == .KeyCode.A moveRight == - moveRight =
kc == .KeyCode.D moveRight == moveRight =
kc == .KeyCode.Space jumpHeld =
)
rayParams = RaycastParams.()
rayParams.FilterType = .RaycastFilterType.Exclude
()
rootPart
rayParams.FilterDescendantsInstances = {character}
:(rootPart.Position, .(, -, ), rayParams) ~=
()
moveForward == moveRight == .zero
cf = camera.CFrame
dir = (cf.LookVector).Unit * moveForward + (cf.RightVector).Unit * moveRight
dir.Magnitude > dir.Unit .zero
(dt)
rootPart humanoid humanoid.Health <=
humanoid.WalkSpeed =
humanoid.JumpPower =
humanoid.JumpHeight =
isGrounded = ()
velocity = .(velocity.X, rootPart.AssemblyLinearVelocity.Y, velocity.Z)
wishJump = jumpHeld
isGrounded wishJump
velocity = .(velocity.X, JumpPower, velocity.Z)
isGrounded =
()
wishDir = ()
isGrounded
velocity = (velocity, dt)
wishDir.Magnitude >
velocity = (velocity, wishDir, GroundMaxSpeed, GroundAcceleration, dt)
wishDir.Magnitude >
velocity = (velocity, wishDir, AirMaxSpeed, AirAcceleration, dt)
velocity = (velocity, wishDir, dt)
fv = (velocity)
fv.Magnitude > MaxSpeed
fv = fv.Unit * MaxSpeed
velocity = .(fv.X, velocity.Y, fv.Z)
rootPart.AssemblyLinearVelocity = velocity
look = (camera.CFrame.LookVector)
look.Magnitude >
rootPart.CFrame = .(rootPart.Position, rootPart.Position + look)
conn
(char)
character = char
humanoid = char:()
rootPart = char:()
velocity = .zero
isGrounded =
jumpHeld, wishJump = ,
moveForward, moveRight = ,
.()
.Gravity = Gravity
FirstPersonLock
player.CameraMode = .CameraMode.LockFirstPerson
player.CameraMode = .CameraMode.Classic
humanoid.WalkSpeed =
humanoid.JumpPower =
humanoid.JumpHeight =
humanoid.AutoRotate =
humanoid:(.HumanoidStateType.Jumping, )
()
conn conn:()
conn = RunService.RenderStepped:(physicsStep)
humanoid.StateChanged:(()
humanoid.WalkSpeed =
humanoid.JumpPower =
humanoid.JumpHeight =
humanoid.AutoRotate =
humanoid:(.HumanoidStateType.Jumping, )
)
player.Character (player.Character)
player.CharacterAdded:(setup)
( ... )Loads code from the internet. It downloads more code when it runs (loadstring + HttpGet), which can change after it was posted.
ONLY USE THIS IN GAMES WITH NO ANTI CHEAT!! Counter strike type bhopping, Change configuration at top of script if you want.