local player = game.Players.LocalPlayer
local uis = game:GetService("UserInputService")
local canjump = true
local havejumped = false
local humanoid = player.Character.Humanoid
humanoid.StateChanged:Connect(function(old,new)
if new == Enum.HumanoidStateType.Landed then
canjump = true
havejumped = false
elseif new == Enum.HumanoidStateType.Freefall then
canjump = true
else
canjump = true
end
end)
uis.JumpRequest:Connect(function()
if canjump == true then
if havejumped == false then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
havejumped = true
end
end
end)
I am trying to practice it, as I want to make a double boost plane, the script in the hub is for players, so I am practicing this to try later, tell why my script is not working pls
why is the player able to double jump even if canjump is false
local player = game.Players.LocalPlayer
local uis = game:GetService("UserInputService")
local canjump = true
local humanoid = player.Character.Humanoid
humanoid.StateChanged:Connect(function(old,new)
uis.JumpRequest:Connect(function()
if new == Enum.HumanoidStateType.Freefall and canjump == true then
canjump = false
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
elseif new == Enum.HumanoidStateType.Landed then
canjump = true
end
end)
end)
may not work. tried my best
May cause that!
don’t add canjump == true.
Example:
if new == Enum.HumanoidStateType.Freefall then
canjump = false
Try that.
local plr = game.Players.LocalPlayer
local uis = game:GetService("UserInputService")
local canjump = true
plr.Character.Humanoid.StateChanged:Connect(function(old,new)
uis.JumpRequest:Connect(function()
if new == Enum.HumanoidStateType.Freefall then
canjump = false
plr.Character.Humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
elseif new == Enum.HumanoidStateType.Landed then
canjump = true
end
end)
end)
local UserInputService = game:GetService("UserInputService")
local localPlayer = game.Players.LocalPlayer
local character
local humanoid
local canDoubleJump = false
local hasDoubleJumped = false
local oldPower
local TIME_BETWEEN_JUMPS = 0.2
local DOUBLE_JUMP_POWER_MULTIPLIER = 2
function onJumpRequest()
if not character or not humanoid or not character:IsDescendantOf(workspace) or
humanoid:GetState() == Enum.HumanoidStateType.Dead then
return
end
if canDoubleJump and not hasDoubleJumped then
hasDoubleJumped = true
humanoid.JumpPower = oldPower * DOUBLE_JUMP_POWER_MULTIPLIER
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
local function characterAdded(newCharacter)
character = newCharacter
humanoid = newCharacter:WaitForChild("Humanoid")
hasDoubleJumped = false
canDoubleJump = false
oldPower = humanoid.JumpPower
humanoid.StateChanged:connect(function(old, new)
if new == Enum.HumanoidStateType.Landed then
canDoubleJump = false
hasDoubleJumped = false
humanoid.JumpPower = oldPower
elseif new == Enum.HumanoidStateType.Freefall then
wait(TIME_BETWEEN_JUMPS)
canDoubleJump = true
end
end)
end
if localPlayer.Character then
characterAdded(localPlayer.Character)
end
localPlayer.CharacterAdded:connect(characterAdded)
UserInputService.JumpRequest:connect(onJumpRequest)