Войти
← Все уроки

Первые скрипты на Luau: монетки и счёт

Узнай, как писать код в Roblox: переменные, события и таблица очков с монетками.

Для новичков⏱ 40 мин

Что у тебя получится

Ты добавишь в свой мир монетки, которые игрок собирает. Количество монеток будет видно в таблице игроков справа сверху. Попутно ты узнаешь основы Luau — языка, на котором пишутся все игры Roblox.

🎯 Для этого урока нужна любая карта. Лучше всего подойдёт полоса препятствий из первого урока, но можно начать и с пустого шаблона Baseplate.

Что такое скрипт

Скрипт — это набор команд для компьютера. Ты пишешь команды, а Roblox выполняет их по порядку. Язык Roblox называется Luau. Он простой и дружелюбный, поэтому с него приятно начинать.

💡 Пока пользуйся только обычным Script. У него есть «брат» LocalScript, но он нужен для других задач, и о нём мы поговорим позже.

Шаг 1. Скажи «Привет!»

  1. В окне Explorer наведи мышку на ServerScriptService, нажми + и выбери Script.
  2. Замени весь код на такой:
print("Привет, мир!")
  1. Открой View → Output, чтобы видеть сообщения скриптов.
  2. Нажми Play. В Output появится строка «Привет, мир!».

Команда print пишет сообщение в Output. Это самый простой способ узнать, что скрипт вообще запустился.

Шаг 2. Три главные идеи

Прежде чем делать монетки, познакомься с основами. Пробовать их можно прямо в скрипте с print.

Переменная — коробочка с именем, в которой лежит значение:

local coins = 0
coins = coins + 5
print(coins) -- напечатает 5

Всё, что стоит после --, — это комментарий. Это заметка для людей, компьютер её пропускает.

Условие — «если так, то делай то»:

if coins >= 10 then
	print("Ты богач!")
else
	print("Пока копишь...")
end

Функция — набор команд с названием, который можно запускать много раз:

local function sayHello(name)
	print("Привет, " .. name .. "!")
end

sayHello("Игрок")
🧠 Каждый блок if, function и then ... end надо закрыть словом end. Забытый end — самая частая ошибка новичков.

Шаг 3. Таблица очков

Когда игрок заходит в игру, мы будем выдавать ему счётчик монеток. Roblox сам покажет его в таблице игроков, если назвать папку точно leaderstats.

Создай в ServerScriptService новый Script (или замени код в прежнем) и вставь:

local Players = game:GetService("Players")

local function onPlayerAdded(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local coins = Instance.new("IntValue")
	coins.Name = "Coins"
	coins.Value = 0
	coins.Parent = leaderstats
end

Players.PlayerAdded:Connect(onPlayerAdded)

Что здесь происходит:

  • PlayerAdded — событие «в игру вошёл игрок»;
  • Instance.new("Folder") создаёт новую папку, а Name даёт ей имя;
  • IntValue — хранилище для целого числа. Его имя Coins и покажется в таблице;
  • Parent = ... кладёт созданную вещь внутрь другой.
⚠️ Папка должна называться именно leaderstats, только маленькими буквами. Иначе Roblox не покажет таблицу.

Нажми Play: справа сверху должна появиться таблица с твоим ником и колонкой Coins, где стоит 0.

Шаг 4. Сделай монетку

  1. На вкладке Home добавь Part. Это будет монетка.
  2. Сделай её маленькой, жёлтой, а материал выбери Neon или Metal.
  3. Включи Anchored, чтобы она висела в воздухе.
  4. Выключи CanCollide, чтобы герой мог пробежать сквозь монетку, а не стукнуться о неё.
  5. Назови её Coin.
  6. Наведи мышку на Coin в Explorer, нажми + и добавь Script с таким кодом:
local coin = script.Parent
local Players = game:GetService("Players")
local collected = false

coin.Touched:Connect(function(otherPart)
	if collected then
		return
	end

	local player = Players:GetPlayerFromCharacter(otherPart.Parent)
	if player then
		collected = true
		player.leaderstats.Coins.Value += 1
		coin:Destroy()
	end
end)

Как это работает:

  • collected запоминает, подобрали ли уже монетку, чтобы не засчитать её дважды;
  • GetPlayerFromCharacter находит игрока, которому принадлежит герой, коснувшийся монетки;
  • Value += 1 прибавляет единицу к счёту;
  • coin:Destroy() убирает монетку из мира.

Нажми Play, подбеги к монетке — число в таблице вырастет.

Шаг 5. Размножь монетки

Выдели Coin вместе со скриптом и нажми Ctrl+D (на Mac Cmd+D). Двигай копии по карте: над платформами, рядом с контрольными точками, в опасных местах. У каждой копии свой скрипт, поэтому все монетки работают сами по себе.

💡 Хорошая карта подталкивает игрока: поставь монетку в рискованное место, и игрок захочет за ней сходить.

Шаг 6. Монетка, которая появляется снова

Хочешь, чтобы монетка исчезала на пять секунд и возвращалась? Замени код в её скрипте на этот:

local coin = script.Parent
local Players = game:GetService("Players")
local available = true

coin.Touched:Connect(function(otherPart)
	if not available then
		return
	end

	local player = Players:GetPlayerFromCharacter(otherPart.Parent)
	if player then
		available = false
		player.leaderstats.Coins.Value += 1
		coin.Transparency = 1
		task.wait(5)
		coin.Transparency = 0
		available = true
	end
end)

Transparency = 1 делает монетку невидимой, а task.wait(5) ждёт пять секунд. Потом монетка снова видна и доступна.

Если что-то не работает

  • Таблица очков не появилась. Проверь, что папка называется leaderstats, а скрипт лежит в ServerScriptService.
  • Монетка не считается. Скрипт должен быть внутри монетки, а у монетки должно быть выключено CanCollide.
  • В Output красная строка. Прочитай её: Roblox пишет, в каком скрипте и в какой строке ошибка. Часто виноваты опечатка или забытый end.
  • Ничего не меняется после правок. Останови игру кнопкой Stop и запусти заново.

Словарик

  • Script — файл с командами;
  • Event (событие) — «когда что-то случилось»;
  • Function (функция) — команды с названием;
  • Variable (переменная) — коробочка с значением;
  • Property (свойство) — настройка вещи: цвет, размер, прозрачность;
  • Output — окно, куда скрипты пишут сообщения и ошибки.

Попробуй сам

  • Сделай золотую монетку, которая даёт сразу +5.
  • Добавь второй счётчик, например Stars, по примеру Coins.
  • Сделай платформу, которая исчезает через секунду после касания (подсказка: task.wait и Transparency).
✅ Готово! Опубликуй обновлённую игру, как в первом уроке, и покажи её друзьям на GameCraft Kids.