while wait(5) do local plr = game.Players.LocalPlayer local char = plr.Character or plr.CharacterAdded:Wait() local humanoid = char:WaitForChild("Humanoid") local mps = game:GetService("MarketplaceService") local gamepassID = 18133269 local gamepassOwned = false pcall(function() gamepassOwned = mps:UserOwnsGamePassAsync(plr.UserId, gamepassID) end) if gamepassOwned == true then workspace.GamepassDoor2.Transparency = 1 workspace.GamepassDoor2.CanCollide = false end humanoid.Touched:Connect(function(touchedPart) if gamepassOwned == true then return end if touchedPart == workspace.GamepassDoor2 then mps:PromptGamePassPurchase(plr, gamepassID) end end) mps.PromptGamePassPurchaseFinished:Connect(function(playerPurchased, purchasedID, purchaseSuccess) if not purchaseSuccess then return end if playerPurchased == plr and purchasedID == gamepassID then gamepassOwned = true workspace.GamepassDoor2.Transparency = 1 workspace.GamepassDoor2.CanCollide = false end end) end
It is a localscript in starterplayerscripts
Its probably due to you are connecting events inside a while loop. If too many events are connected. It would cause lag. Maybe connect the events outside of the while loop?