Чтобы создать таблицу лидеров Roblox, добавьте серверный Script в ServerScriptService, при входе игрока создайте Folder с точным именем leaderstats и поместите внутрь IntValue. Roblox автоматически покажет эти значения в стандартном списке игроков.
leaderstats не является глобальным рейтингом между серверами. Это специальная папка внутри текущего Player, которую стандартный интерфейс Roblox читает и показывает рядом с именем. Значения удобно использовать для монет, побед, очков или времени. Если нужно сохранить их между сессиями, отдельно подключается DataStore. Если нужен мировой топ, используется OrderedDataStore и собственный интерфейс. Поэтому сначала решите, кому и как долго должен быть виден показатель, а уже потом выбирайте способ хранения.
Только leaderstats строчными буквами.
IntValue для целых чисел, StringValue для текста.
ServerScriptService, чтобы сервер создавал и менял статистику.

leaderstats Roblox: таблица лидеров из двух показателей
Код создаёт столбцы Coins и Wins. Значение Priority помогает поставить Wins перед Coins. Roblox также поддерживает BoolValue с именем IsPrimary, но для нескольких столбцов числовой приоритет понятнее. Все объекты создаются до присвоения Parent игроку, чтобы дерево появилось в готовом виде.
local Players = game:GetService("Players")
local function createStat(name, value, priority, parent)
local stat = Instance.new("IntValue")
stat.Name = name
stat.Value = value
local order = Instance.new("NumberValue")
order.Name = "Priority"
order.Value = priority
order.Parent = stat
stat.Parent = parent
return stat
end
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
createStat("Wins", 0, 20, leaderstats)
createStat("Coins", 100, 10, leaderstats)
leaderstats.Parent = player
end)- В списке игроков появляются Wins и Coins
- Wins располагается раньше благодаря Priority 20
Функция возвращает созданный IntValue, поэтому ссылку можно сохранить и менять при событии. Не ищите значение через весь Workspace. Получите игрока, затем player.leaderstats.Coins или безопасный FindFirstChild(). Для бизнес-логики полезно держать полный профиль отдельно, а leaderstats использовать как отображение выбранных чисел.
Что хранить в leaderstats
| Элемент | Что означает | Что делать |
|---|---|---|
| Coins | IntValue | Текущий баланс для показа |
| Wins | IntValue | Количество побед |
| BestTime | NumberValue | Лучшее время с дробной частью |
| Rank | StringValue | Текстовый ранг |
| Inventory | Не хранить здесь | Сложные данные держать в профиле |
Показывайте только показатели, которые помогают игроку понять соревнование или прогресс. Десять столбцов превращают список в шум и плохо помещаются на мобильном экране. Для подробной статистики лучше ScreenGui. Помните, что клиент может визуально изменить локальные объекты, поэтому начисление наград и проверка побед должны оставаться на сервере.

Практика: соберите leaderstats с Coins и Wins и начислите победу
Соберите таблицу лидеров с нуля в пустом месте Studio, а не в текущем проекте. Успехом считайте два столбца рядом с ником: Wins стоит первым благодаря Priority 20, Coins стартует со 100. В конце значение Coins должно меняться серверной командой, а не кликом клиента.
- Script в ServerScriptService. Создайте пустое место и добавьте серверный Script с именем LeaderstatsSetup в ServerScriptService. В Explorer он должен лежать именно там: из Workspace или StarterPlayer статистика не появится.
- Folder leaderstats на PlayerAdded. Подпишитесь на Players.PlayerAdded и внутри создайте Folder с именем leaderstats строчными буквами. Нажмите Play: в Explorer внутри своего объекта в Players появится эта папка.
- IntValue Wins и Coins. Через функцию createStat добавьте IntValue Wins со значением 0 и IntValue Coins со значением 100, каждому вложите NumberValue Priority со значениями 20 и 10. После запуска в списке игроков справа сверху видно два столбца, Wins левее Coins.
- Начисление серверной командой. Откройте Command Bar, переключите контекст на Server и выполните game.Players.ВашНик.leaderstats.Coins.Value += 50. Число в списке игроков обновится сразу, без перезапуска сессии.
- Проверка на двух игроках. Запустите Test в режиме двух клиентов и начислите Wins только одному из них. У второго значение остаётся нулевым: это подтверждает, что папка leaderstats создаётся отдельно для каждого Player.
Переименуйте папку в LeaderStats с заглавной буквы и запустите снова. Столбцы Wins и Coins исчезнут из списка игроков, при этом в Output не будет ни одной ошибки: встроенный интерфейс просто не найдёт папку с точным именем leaderstats. Верните строчное имя и убедитесь, что оба столбца вернулись на место.
Дальше свяжите Coins с DataStore и сохраняйте только число из свойства Value, а не сам объект IntValue. Затем добавьте кнопку покупки через RemoteEvent, чтобы цену и списание считал сервер, а клиент только отправлял запрос. Для мирового топа понадобится OrderedDataStore и собственный ScreenGui: leaderstats показывает результаты только текущего сервера.
Частые ошибки и почему они появляются
Если столбцы не появились, почти всегда неверно написано имя папки или код выполняется не на сервере. Если значения сбрасываются при новом входе, это нормальное поведение без DataStore. Если монеты можно накрутить кнопкой, значит сервер доверяет числу от клиента вместо самостоятельной проверки события и цены.
Системное имя чувствительно к регистру. Используйте ровно leaderstats.
Локальная папка не является надёжным источником общего результата. Создавайте показатели на сервере.
DataStore хранит сериализуемые данные, а не объекты. Сохраняйте числа и строки из Value.
Самопроверка
Почему столбцы leaderstats не появляются в списке игроков?
Столбцы leaderstats не появляются в двух случаях: имя папки написано неточно или код выполняется не на сервере. Имя чувствительно к регистру, подходит только leaderstats строчными буквами, а создавать Folder должен серверный Script из ServerScriptService.
Сохраняются ли значения leaderstats между сессиями?
Значения leaderstats не сохраняются: папка живёт внутри объекта Player и исчезает вместе с ним при выходе. Чтобы монеты вернулись при следующем входе, подключите DataStore и сохраняйте числа из свойства Value.
Как поставить Wins перед Coins в таблице лидеров?
Порядок столбцов задаёт вложенный в IntValue объект NumberValue с именем Priority: у Wins поставьте 20, у Coins 10. Больший приоритет ставит столбец раньше. Roblox понимает и BoolValue с именем IsPrimary, но с несколькими столбцами числовой приоритет читается понятнее.
Какой тип значения выбрать для leaderstats?
В leaderstats кладут IntValue для целых чисел вроде монет и побед, NumberValue для дробного лучшего времени и StringValue для текстового ранга. Инвентарь и сложные структуры в эту папку не помещают, их держат в отдельном профиле игрока.
Можно ли начислять монеты из LocalScript?
Начислять монеты из LocalScript нельзя: клиент меняет только свою копию объекта, и сервер этих чисел не увидит. Проверку условия и само начисление держите в серверном Script, иначе баланс легко накрутить кнопкой.
Чем leaderstats отличается от глобального рейтинга?
leaderstats показывает значения только игрокам текущего сервера и живёт одну сессию. Мировой топ собирают на OrderedDataStore с собственным интерфейсом, потому что стандартный список игроков не читает данные с других серверов.
Что делать дальше
Соберите два столбца, измените их из серверной команды и проверьте двух игроков. Затем свяжите Coins с DataStore, а кнопку покупки с RemoteEvent. Таблицы, функции и события можно потренировать на курсе Lua. Такой порядок отделяет отображение, сохранение и правило начисления, поэтому каждую часть легче тестировать.
