Первые скрипты на Luau: монетки и счёт
Узнай, как писать код в Roblox: переменные, события и таблица очков с монетками.
Что у тебя получится
Ты добавишь в свой мир монетки, которые игрок собирает. Количество монеток будет видно в таблице игроков справа сверху. Попутно ты узнаешь основы Luau — языка, на котором пишутся все игры Roblox.
🎯 Для этого урока нужна любая карта. Лучше всего подойдёт полоса препятствий из первого урока, но можно начать и с пустого шаблона Baseplate.
Что такое скрипт
Скрипт — это набор команд для компьютера. Ты пишешь команды, а Roblox выполняет их по порядку. Язык Roblox называется Luau. Он простой и дружелюбный, поэтому с него приятно начинать.
💡 Пока пользуйся только обычным Script. У него есть «брат» LocalScript, но он нужен для других задач, и о нём мы поговорим позже.
Шаг 1. Скажи «Привет!»
- В окне Explorer наведи мышку на ServerScriptService, нажми + и выбери Script.
- Замени весь код на такой:
print("Привет, мир!")
- Открой View → Output, чтобы видеть сообщения скриптов.
- Нажми 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. Сделай монетку
- На вкладке Home добавь Part. Это будет монетка.
- Сделай её маленькой, жёлтой, а материал выбери Neon или Metal.
- Включи Anchored, чтобы она висела в воздухе.
- Выключи CanCollide, чтобы герой мог пробежать сквозь монетку, а не стукнуться о неё.
- Назови её
Coin. - Наведи мышку на
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.