Наведи курсор на ServerScriptService, нажми + и добавь Script. Назови его Stats.
Удали строку, которая там уже есть, и вставь этот код.
Нажми Play. В списке игроков будут Power 0 и Coins 0.
ServerScriptService > Stats
local Players = game:GetService("Players")
Players.PlayerAdded:Connect(function(player)
local stats = Instance.new("Folder")
stats.Name = "leaderstats"
stats.Parent = player
for _, name in ipairs({"Power", "Coins"}) do
local value = Instance.new("IntValue")
value.Name = name
value.Parent = stats
end
local multiplier = Instance.new("IntValue")
multiplier.Name = "Multiplier"
multiplier.Value = 1
multiplier.Parent = player
end)
Что делает каждая часть
Цикл создаёт два значения одним куском кода: Power и Coins.
Multiplier показывает, сколько силы даёт один клик. Сначала он равен 1.
Multiplier лежит в игроке, а не в leaderstats, поэтому в списке игроков его не видно.
Подробнее
Когда ты щёлкаешь +, введи слово Script, чтобы быстро его найти.
Скрипт открывается в новой вкладке. Щёлкни внутри кода, нажми Ctrl+A, а потом Ctrl+V, чтобы заменить всё.
Переименуй скрипт в Explorer через F2. Это название нужно только тебе. Оно поможет потом найти скрипт.
Список игроков находится в правом верхнем углу игры.
У меня не получается этот шаг
Сначала проверь эти три вещи
Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.
Добавь Part. Задай Size равным 6, 8, 6, включи Anchored и назови его Crystal. Выбери яркий цвет и задай Material равным Neon.
Наведи курсор на Crystal, нажми + и добавь ClickDetector.
Добавь в Crystal Script и вставь этот код.
Нажми Play и кликни по кристаллу. С каждым кликом Power растёт на 1.
Crystal > Script
local crystal = script.Parent
local clickDetector = crystal.ClickDetector
clickDetector.MouseClick:Connect(function(player)
local power = player.leaderstats.Power
power.Value += player.Multiplier.Value
end)
Что делает каждая часть
ClickDetector делает деталь кликабельной. Он работает и с касаниями на телефоне.
MouseClick сообщает скрипту, какой игрок кликнул.
Скрипт прибавляет Multiplier игрока к Power, поэтому улучшения делают каждый клик сильнее.
Подробнее
Введи размер в поле Size в Properties и нажми Enter. Потом подними кристалл инструментом Move, пока он не встанет на пол.
Когда ты щёлкаешь +, введи ClickDetector, чтобы его найти. В Explorer он должен стоять на один шаг правее, под Crystal.
В игре указатель мыши меняется на руку, когда он над кристаллом.
Ты должен стоять достаточно близко. ClickDetector работает с расстояния 32 studs или меньше.
Частая ошибка. Ничего не происходит при клике: ClickDetector должен лежать прямо внутри Crystal, рядом со скриптом.
У меня не получается этот шаг
Сначала проверь эти три вещи
Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.
Добавь Part на пол. Задай Size равным 8, 1, 8, включи Anchored, сделай его жёлтым и назови Sell.
Добавь в Sell Script и вставь этот код.
Нажми Play, несколько раз кликни по кристаллу и встань на площадку. Power превратится в Coins.
Sell > Script
local Players = game:GetService("Players")
local pad = script.Parent
pad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player then return end
local stats = player.leaderstats
if stats.Power.Value > 0 then
stats.Coins.Value += stats.Power.Value
stats.Power.Value = 0
end
end)
Что делает каждая часть
GetPlayerFromCharacter находит игрока, который встал на площадку.
Площадка прибавляет всю Power игрока к Coins, а потом ставит Power обратно в 0.
Подробнее
Пад является плоской деталью, на которую заходят игроки.
Положи пад плоско на пол. Если он слишком высоко, игроки не смогут на него ступить.
Если зайти на пад с 0 силы, ничего не произойдёт. Это правильно.
Чтобы проверить: щёлкни кристалл 10 раз, зайди на пад, и список игроков покажет Power 0 и Coins 10.
У меня не получается этот шаг
Сначала проверь эти три вещи
Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.
Добавь ещё один Part на пол. Задай Size равным 8, 1, 8, включи Anchored, сделай его синим и назови Upgrade.
Добавь в Upgrade Script и вставь этот код.
Нажми Play, заработай 25 coins и встань на площадку. Теперь каждый клик даёт 2 силы.
Upgrade > Script
local Players = game:GetService("Players")
local pad = script.Parent
local waiting = {}
pad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if not player or waiting[player] then return end
local price = player.Multiplier.Value * 25
local coins = player.leaderstats.Coins
if coins.Value < price then return end
waiting[player] = true
coins.Value -= price
player.Multiplier.Value += 1
task.wait(1)
waiting[player] = nil
end)
Что делает каждая часть
Цена равна Multiplier игрока, умноженному на 25, поэтому каждое улучшение дороже предыдущего.
Таблица ожидания не даёт купить много улучшений сразу, если долго стоять на площадке.
После покупки Multiplier увеличивается на 1.
Подробнее
Поставь пад в нескольких шагах от пада продажи, чтобы игроки не покупали случайно.
Первое улучшение стоит 25 монет. После него Coins уменьшается на 25, а один клик даёт 2 силы.
Если монет меньше, чем цена, пад ничего не делает. Сойди с него, заработай больше и вернись.
Пауза в 1 секунду является причиной, почему стояние на паде покупает только одно улучшение за раз.
У меня не получается этот шаг
Сначала проверь эти три вещи
Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.
Выбери File → Publish to Roblox. Придумай игре название и короткое описание.
На сайте Creator Hub открой свою игру и ответь на вопросы анкеты Maturity.
Поставь игре статус Public и отправь ссылку другу.
Подробнее
Когда ты публикуешь впервые, Studio просит название и описание. Нажми Create.
Creator Hub является сайтом create.roblox.com. Войди с тем же аккаунтом и щёлкни свою игру в списке.
Прежде чем игру можно сделать публичной, Roblox может попросить что-то ещё, например проверку возраста на аккаунте. Страница подскажет, чего не хватает.
Если тебе ещё нет 18, выполняй этот шаг вместе с кем-то из родителей.
Совет. Прогресс пока не сохраняется. Когда игрок выходит, его монеты пропадают. Сохранение данных это продвинутый урок.
У меня не получается этот шаг
Сначала проверь эти три вещи
Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.