What's new
Heapleak - Scripthub

Get the most out of HeapLeak by creating a free account! Once signed in, you’ll gain full access to restricted content, be able to share your own scripts, and participate in our member-only discussions.

CSGO Bhop

Version / Update: v1.0.0
Download / Script Link
-- Config
local FirstPersonLock = true
local DisableAnimations = true
local MaxSpeed = 250
local GroundMaxSpeed = 16
local AirMaxSpeed = 2
local GroundAcceleration = 50
local AirAcceleration = 800
local Friction = 5
local AirControl = 0
local JumpPower = 50
local Gravity = 196.2

local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local UIS = game:GetService("UserInputService")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera
local character, humanoid, rootPart
local velocity = Vector3.new(0, 0, 0)
local isGrounded = false
local jumpHeld, wishJump = false, false
local moveForward, moveRight = 0, 0

local function flat(v)
return Vector3.new(v.X, 0, v.Z)
end

local function accelerate(vel, wishDir, wishSpeed, accel, dt)
local addSpeed = wishSpeed - vel:Dot(wishDir)
if addSpeed <= 0 then return vel end
local accelSpeed = math.min(accel * wishSpeed * dt, addSpeed)
return vel + wishDir * accelSpeed
end

local function applyFriction(vel, dt)
local speed = flat(vel).Magnitude
if speed < 0.1 then return Vector3.new(0, vel.Y, 0) end
local drop = math.max(speed, GroundMaxSpeed) * Friction * dt
local scale = math.max(speed - drop, 0) / speed
return Vector3.new(vel.X * scale, vel.Y, vel.Z * scale)
end

local function applyAirControl(vel, wishDir, dt)
if AirControl == 0 or moveRight ~= 0 then return vel end
local fv = flat(vel)
local speed = fv.Magnitude
if speed < 0.1 then return vel end
local dot = fv.Unit:Dot(wishDir)
if dot <= 0 then return vel end
local k = AirControl * dot * dot * dt * 32
local adj = (fv * (1 - k) + wishDir * (speed * k)).Unit * speed
return Vector3.new(adj.X, vel.Y, adj.Z)
end

-- hop sounds
local hopSounds = {
}
local hopIndex = 1
local hopLoaded = false
local sound1, sound2

task.spawn(function()
if #hopSounds < 2 then return end
local ok, err = pcall(function()
writefile("bhop1.mp3", game:HttpGet(hopSounds[1]))
writefile("bhop2.mp3", game:HttpGet(hopSounds[2]))
end)
if not ok then warn("couldnt download hop sounds: " .. tostring(err)) return end
sound1 = Instance.new("Sound")
sound1.SoundId = getcustomasset("bhop1.mp3")
sound1.Volume = 0.35
sound1.Parent = workspace
sound2 = Instance.new("Sound")
sound2.SoundId = getcustomasset("bhop2.mp3")
sound2.Volume = 0.35
sound2.Parent = workspace

hopLoaded = true
end)

local function playHopSound()
if not hopLoaded then return end
if hopIndex == 1 then
sound1:Play()
else
sound2:Play()
end
hopIndex = hopIndex == 1 and 2 or 1
end

local function nukeAnimations()
if not DisableAnimations then return end
local animate = character:FindFirstChild("Animate")
if animate then animate:Destroy() end
for _, track in humanoid:GetPlayingAnimationTracks() do
track:Stop(0)
end
local animator = humanoid:FindFirstChildOfClass("Animator")
if animator then animator:Destroy() end
end

UIS.InputBegan:Connect(function(input, gp)
local kc = input.KeyCode
if kc == Enum.KeyCode.Space then jumpHeld = true return end
if gp then return end
if kc == Enum.KeyCode.W then moveForward = 1
elseif kc == Enum.KeyCode.S then moveForward = -1
elseif kc == Enum.KeyCode.A then moveRight = -1
elseif kc == Enum.KeyCode.D then moveRight = 1 end
end)

UIS.InputEnded:Connect(function(input)
local kc = input.KeyCode
if kc == Enum.KeyCode.W and moveForward == 1 then moveForward = 0
elseif kc == Enum.KeyCode.S and moveForward == -1 then moveForward = 0
elseif kc == Enum.KeyCode.A and moveRight == -1 then moveRight = 0
elseif kc == Enum.KeyCode.D and moveRight == 1 then moveRight = 0
elseif kc == Enum.KeyCode.Space then jumpHeld = false end
end)

local rayParams = RaycastParams.new()
rayParams.FilterType = Enum.RaycastFilterType.Exclude

local function grounded()
if not rootPart then return false end
rayParams.FilterDescendantsInstances = {character}
return workspace:Raycast(rootPart.Position, Vector3.new(0, -3.5, 0), rayParams) ~= nil
end

local function getWishDir()
if moveForward == 0 and moveRight == 0 then return Vector3.zero end
local cf = camera.CFrame
local dir = flat(cf.LookVector).Unit * moveForward + flat(cf.RightVector).Unit * moveRight
return dir.Magnitude > 0 and dir.Unit or Vector3.zero
end

local function physicsStep(dt)
if not rootPart or not humanoid or humanoid.Health <= 0 then return end
humanoid.WalkSpeed = 0
humanoid.JumpPower = 0
humanoid.JumpHeight = 0

isGrounded = grounded()
velocity = Vector3.new(velocity.X, rootPart.AssemblyLinearVelocity.Y, velocity.Z)

wishJump = jumpHeld

if isGrounded and wishJump then
velocity = Vector3.new(velocity.X, JumpPower, velocity.Z)
isGrounded = false
playHopSound()
end

local wishDir = getWishDir()

if isGrounded then
velocity = applyFriction(velocity, dt)
if wishDir.Magnitude > 0 then
velocity = accelerate(velocity, wishDir, GroundMaxSpeed, GroundAcceleration, dt)
end
elseif wishDir.Magnitude > 0 then
velocity = accelerate(velocity, wishDir, AirMaxSpeed, AirAcceleration, dt)
velocity = applyAirControl(velocity, wishDir, dt)
end

local fv = flat(velocity)
if fv.Magnitude > MaxSpeed then
fv = fv.Unit * MaxSpeed
velocity = Vector3.new(fv.X, velocity.Y, fv.Z)
end

rootPart.AssemblyLinearVelocity = velocity

local look = flat(camera.CFrame.LookVector)
if look.Magnitude > 0.01 then
rootPart.CFrame = CFrame.new(rootPart.Position, rootPart.Position + look)
end
end

local conn
local function setup(char)
character = char
humanoid = char:WaitForChild("Humanoid")
rootPart = char:WaitForChild("HumanoidRootPart")
velocity = Vector3.zero
isGrounded = false
jumpHeld, wishJump = false, false
moveForward, moveRight = 0, 0

task.wait()
workspace.Gravity = Gravity

if FirstPersonLock then
player.CameraMode = Enum.CameraMode.LockFirstPerson
else
player.CameraMode = Enum.CameraMode.Classic
end

humanoid.WalkSpeed = 0
humanoid.JumpPower = 0
humanoid.JumpHeight = 0
humanoid.AutoRotate = false
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
nukeAnimations()

if conn then conn:Disconnect() end
conn = RunService.RenderStepped:Connect(physicsStep)

humanoid.StateChanged:Connect(function()
humanoid.WalkSpeed = 0
humanoid.JumpPower = 0
humanoid.JumpHeight = 0
humanoid.AutoRotate = false
humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
end)
end

if player.Character then setup(player.Character) end
player.CharacterAdded:Connect(setup)

print("Loaded")
[ View More ]
12073db7-5abe-4cda-8794-9317b466268f.webp


Bhop csgo yes yes yes. Dont use in games with anti cheat pls
 
Back
Top