PlayerAdded:Connect(function ... end)
означает, что вы настраиваете функцию, которая будет вызываться позже, когда игрок присоединится к игре. Он не запускается сразу.
Сразу после этого скрипт переходит к вашему while
l oop. Но currency
еще ничего не установлено, поэтому его значение равно nil
, что делает currency.Value
недействительным.
Кроме того, у вас есть глобальная переменная currency
, установленная при каждом присоединении игрока. То есть, если он установлен, это будет значение statisti c для последнего игрока, который присоединится, и любой код за пределами обратного вызова PlayerAdded
только изменит вещи для этого одного игрока.