Я только начал кодировать в lua -roblox, и я сталкиваюсь с попыткой индексировать nil с помощью 'Value, и не могу понять, почему - PullRequest
0 голосов
/ 02 апреля 2020

Итак, я только что начал Lua в roblox, и я не могу выяснить, почему я сталкиваюсь с этой ошибкой (код ниже)

Workspace.Script: 11: попытка индексировать nil с 'Value'

game.Players.PlayerAdded:Connect(function(player)
    local stats = Instance.new("Folder", player)
    stats.Name = "leaderstats"
    currency = Instance.new("IntValue", stats)
    currency.Name = "oil"
    currency.Value = 100
    return 0
end)

while true do
    currency.Value = 100+10 -- here would be the problem
    wait(5)
end

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Вы бы хотели поместить while true l oop в Players.PlayerAdded, чтобы он работал хорошо.


Примечание: вместо использования

local stats = Instance.new("Folder", player)

следует использовать

local stats = Instance.new("Folder")
stats.Parent = player

, так как он работает намного быстрее.

0 голосов
/ 03 апреля 2020

PlayerAdded:Connect(function ... end) означает, что вы настраиваете функцию, которая будет вызываться позже, когда игрок присоединится к игре. Он не запускается сразу.

Сразу после этого скрипт переходит к вашему while l oop. Но currency еще ничего не установлено, поэтому его значение равно nil, что делает currency.Value недействительным.

Кроме того, у вас есть глобальная переменная currency, установленная при каждом присоединении игрока. То есть, если он установлен, это будет значение statisti c для последнего игрока, который присоединится, и любой код за пределами обратного вызова PlayerAdded только изменит вещи для этого одного игрока.

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