Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How to make a double jump gamepass?

Asked by 4 years ago

I want to make a double jump gamepass. Here is the script! Please Tell me where I made a mistake!

local gamepassId = 12077225 --- whatever your gamepass id is
local mps = game:GetService("MarketplaceService")

game.Players.PlayerAdded:Connect(function(plr)
    if mps:UserOwnsGamePassAsync(plr.UserId,gamepassId)then

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)

Answer this question