Roblox Studio - Предупреждение / Ошибка при попытке продать «снег» в моем рюкзаке - PullRequest
0 голосов
/ 15 октября 2018

Как вы можете видеть на картинке ниже, я не могу продать то, что у меня в рюкзаке, когда я вхожу в круг.Я получаю эту ошибку / предупреждение, и я не могу понять, в чем проблема.Я обнаружил, что проблема возникает в строке 5: player:WaitForChild

Ошибка / предупреждение в строке 5: возможна бесконечная доходность при Players.asbjornbonde.PlayerGui:WaitForChild("Stats")

Вот изображение:
Screenshot

Вот мой код:

script.Parent.Touched:connect(function(Hit)
    local player = game.Players:FindFirstChild(Hit.Parent.Name)
    if player then
        local leaderstats = player:FindFirstChild("leaderstats")
        local PlayerGui = player:WaitForChild("PlayerGui"):WaitForChild("Stats").Backpack
        if leaderstats and PlayerGui then
            local Cash = leaderstats:FindFirstChild("Cash")
            local snow = PlayerGui:FindFirstChild("snow")
            if Cash and snow then
                if snow.Value <= 0 then
                else
                Cash.Value = Cash.Value + 2 * snow.Value
                snow.Value = 0
                script.Parent.DigSound:Play()
                script.Disabled = true
                wait(0.1)
                script.Disabled = false
                end
            end
        end
    end
end)

Я потратил много часов, пытаясь решить эту проблему, но я действительно не могу.Буду признателен за помощь.

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Думайте о WaitForChild() как о петле.Он постоянно выполняется в фоновом режиме, так быстро, как движок Lua может его выполнить.Не рекомендовал бы использовать этот или любой другой неконтролируемый цикл в Roblox Lua, так как двигатель не справляется с этим очень хорошо.

0 голосов
/ 14 ноября 2018

Если это серверный скрипт с включенной фильтрацией игры, проблема в том, что сервер не может получить доступ к существующим членам PlayerGui.Чтобы обойти это, вам нужно либо запустить этот код на клиенте (с необходимыми изменениями), либо использовать удаленное событие!

0 голосов
/ 15 октября 2018

Infinite yield possible on - это предупреждение в Roblox Studio, которое означает, что существует вероятность того, что ваш скрипт может застрять в этой строке, ожидая бесконечно, если объект, которого он ожидает, не существует и никогда не создается.

Поскольку единственное WaitForChild, которое вызывает ошибку - это два WaitForChild, соединенные вместе, я предполагаю, что скрипт не делает этого.

Первое решение

Если бы вы былиразделение обоих WaitForChild на две разные переменные не должно приводить к ошибке, однако это создает другую переменную без реальной причины, поэтому я бы выбрал второе решение.

Второе решение

Поскольку игрок загрузил и коснулся части, можно предположить, что для них загружен графический интерфейс, так что вы можете изменить WaitForChild на FindFirstChild, если вы все еще хотите проверить, что вы не получили nilили вы можете ссылаться на него как обычно: player.PlayerGui.Stats.Backpack

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...