Скрипт: leaderstats и таблица очков

Roblox сам рисует таблицу игроков, если у игрока есть папка leaderstats со значениями. Скрипт создаёт её при входе и даёт серверной функции менять очки.

Куда положить

ServerScriptService, тип объекта Script

Что должно быть в проекте

  • Ничего дополнительно — таблица появляется сама

Код

ServerScriptService/Leaderstats.lua
  1. local Players = game:GetService("Players")
  2.  
  3. local function setup(player)
  4. local stats = Instance.new("Folder")
  5. stats.Name = "leaderstats"
  6. stats.Parent = player
  7.  
  8. local coins = Instance.new("IntValue")
  9. coins.Name = "Coins"
  10. coins.Value = 0
  11. coins.Parent = stats
  12.  
  13. local level = Instance.new("IntValue")
  14. level.Name = "Level"
  15. level.Value = 1
  16. level.Parent = stats
  17. end
  18.  
  19. local function addCoins(player, amount: number)
  20. if typeof(amount) ~= "number" or amount <= 0 then
  21. return
  22. end
  23.  
  24. local stats = player:FindFirstChild("leaderstats")
  25. local coins = stats and stats:FindFirstChild("Coins")
  26.  
  27. if not coins then
  28. return
  29. end
  30.  
  31. coins.Value += amount
  32.  
  33. local level = stats:FindFirstChild("Level")
  34.  
  35. if level then
  36. level.Value = 1 + math.floor(coins.Value / 100)
  37. end
  38. end
  39.  
  40. Players.PlayerAdded:Connect(setup)
  41.  
  42. return { addCoins = addCoins }

Функция addCoins проверяет тип и знак: отрицательная «награда» ничего не сломает.

На что обратить внимание

  • Папка обязана называться именно leaderstats — по этому имени её ищет движок
  • В таблицу попадают только IntValue, NumberValue и StringValue внутри папки
  • Значения меняет сервер: IntValue на клиенте изменится только у самого игрока и ни на что не повлияет