'Why is my jump boost gamepass in roblox not working?

So I decided to make a jump boost gamepass in roblox but when I test and I have my gamepass it doesn't work.

here is my code

local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
local PlayerUserID = Players.LocalPlayer.UserId

print(PlayerUserID)
Players.LocalPlayer.CharacterAdded:Connect(function(char)
    print(MarketplaceService:UserOwnsGamePassAsync(PlayerUserID, 21723718))
    if MarketplaceService:UserOwnsGamePassAsync(PlayerUserID, 21723718) then
        char.Humanoid.UseJumpPower = true
        char.Humanoid.JumpPower = 100
    end
end)

it is a server script on ServerScriptService

I cant see any output that comes from the script.



Solution 1:[1]

Your server script is targeting an object that doesn't exist. game.Players.LocalPlayer is only defined in localscripts.

To get around this, use Players.PlayerAdded

Use this code instead

local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(plr)
    plr.CharacterAdded:Connect(function(char)
        if MarketplaceService:UserOwnsGamePassAsync(PlayerUserID, 21723718) then
            char.Humanoid.UseJumpPower = true
            char.Humanoid.JumpPower = 100
        end
    end)
end)

Solution 2:[2]

You cannot use LocalPlayer in a Server Script. You will have to get the player via other methods.

Check out the Roblox gamepass guide.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Cmb
Solution 2 HeyHoo