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)