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

Infinite yield WaitForChild() Error? [closed]

Asked by 5 years ago
Edited 5 years ago

There are two questions to ask.

1.

--Script in ServerscriptService
local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")

local gamePassID = 0000000 -- Change this to your game pass ID

local function onPlayerAdded(player)

    local hasPass = false

    -- Check if the player already owns the game pass
    local success, message = pcall(function()
        hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, gamePassID)
    end)

    -- If there's an error, issue a warning and exit the function
    if not success then
        warn("Error while checking if player has pass: " .. tostring(message))
        return
    end

    if hasPass == true then
        print(player.Name .. " owns the game pass with ID " .. gamePassID)
        -- Assign this player the ability or bonus related to the game pass
        game.StarterGui.RUN.TextButton.Visible = true
    end

 end
-- Connect 'PlayerAdded' events to the 'onPlayerAdded()' function
Players.PlayerAdded:Connect(onPlayerAdded)

This script is for the "run" gamepass. This script is for outside purchases(or purchased before/ingame)

Does this script makes the button visible to all other players with people who didn't buy the gamepass?

2.

local MarketplaceService = game:GetService("MarketplaceService")
local Players = game:GetService("Players")

local gamePassID = 5923482 -- Change this to your game pass ID

local function onPlayerAdded(player)

    local hasPass = false

    -- Check if the player already owns the game pass
    local success, message = pcall(function()
        hasPass = MarketplaceService:UserOwnsGamePassAsync(player.UserId, gamePassID)
    end)

    -- If there's an error, issue a warning and exit the function
    if not success then
        warn("Error while checking if player has pass: " .. tostring(message))
        return
    end

    if hasPass == true then
        print(player.Name .. " owns the game pass with ID " .. gamePassID)
        -- Assign this player the ability or bonus related to the game pass
        local GUI = player:WaitForChild("PlayerGui")
        local RUN = GUI:WaitForChild("RUN")
        local button = RUN:WaitForChild("TextButton")
        button.Visible = true
    end

 end
-- Connect 'PlayerAdded' events to the 'onPlayerAdded()' function
Players.PlayerAdded:Connect(onPlayerAdded)


--If I use this code, Output says:
14:53:57.663 - Infinite yield possible on 'Players.S_H1234.PlayerGui:WaitForChild("RUN")'

There is ScreenGUI "RUN" in S_H1234.PlayerGui, but why will it say Infinite yield?

This script is from Official Roblox Developer Forum : Click ME

Closed as Not Constructive by User#24403

This question has been closed because it is not constructive to others or the asker. Most commonly, questions that are requests with no attempt from the asker to solve their problem will fall into this category.

Why was this question closed?