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

Double Jump Gamepass script won't work?

Asked by
Burobuu 18
4 years ago

I have the Gamepass script in ServerScriptService and the actual DoubleJump script(local script) inside the Gamepass script. The Gamepass script is supposed to put the DoubleJump script inside the players backpack if they have the Gamepass. Not sure what I did wrong but it wont work.

Gamepass Script ~ Inside ServerScriptService

local id = 7163241

game.Players.PlayerAdded:Connect(function(plr)
    plr.CharacterAdded:connect(function(char)
    if game:GetService("MarketplaceService"):UserOwnsGamePassAsync(game.Players[char.Name].UserId, id) then
    local DbJump = script.DoubleJump:Clone()
    DbJump.Parent = plr.Backpack
    end
  end)
end)

DoubleJump script ~ Inside Gamepass Script

local UIS = game:GetService("UserInputService")
local player = game.Players.LocalPlayer
local character
local humanoid

local canDoubleJump = false
local hasDoubleJumped = false
local oldPower
local time_delay = 0.1
local jump_multiplier = 1.2 -- set to 1 for a normal double jump, increase for the second jump to be higher

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 * jump_multiplier
        humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
    end
end

local function characterAdded(new)
    character = new
    humanoid = new: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_delay)
            canDoubleJump = true
        end
    end)
end

if player.Character then
    characterAdded(player.Character)    
end

player.CharacterAdded:connect(characterAdded)
UIS.JumpRequest:connect(onJumpRequest)

Answer this question