← Все уроки
Урок 2

Создай свой первый тайкун

Dropper делает кубики, конвейер везёт их, коллектор превращает их в деньги, а кнопка покупает второй dropper.

Бесплатно60 минут · Для новичков · Roblox Studio
1
Шаг 1 / 9

Подготовь место

  1. Открой Roblox Studio, нажми New Experience и выбери шаблон Baseplate.
  2. В Explorer наведи курсор на Workspace, нажми + и добавь Folder. Назови её Tycoon.
  3. Всё, что ты строишь в этом уроке, кладётся в эту папку. Так в Explorer остаётся порядок.

Подробнее

  • Шаблон Baseplate есть в списке шаблонов на стартовом экране.
  • Когда ты щёлкаешь +, открывается список. Введи слово Folder, чтобы быстро его найти, и щёлкни его.
  • Чтобы переименовать папку, щёлкни её один раз, нажми F2, введи Tycoon и нажми Enter.
  • На Mac каждый раз, когда в уроке написано Ctrl, нажимай клавишу Cmd.
Совет. Переименовывай каждую деталь сразу после создания. Скрипты находят детали по имени, поэтому деталь, которая всё ещё называется Part, не будет работать.
У меня не получается этот шаг

Сначала проверь эти три вещи

  • Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
  • Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
  • Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.

Всё ещё не получается? Напиши нам →

2
Шаг 2 / 9

Дай каждому игроку cash

  1. Наведи курсор на ServerScriptService, нажми + и добавь Script. Назови его Leaderstats.
  2. Удали строку, которая там уже есть, и вставь этот код.
  3. Нажми Play. Твоё имя появится в списке игроков, а рядом с ним Cash 0.
ServerScriptService > Leaderstats
local Players = game:GetService("Players")

Players.PlayerAdded:Connect(function(player)
	local stats = Instance.new("Folder")
	stats.Name = "leaderstats"
	stats.Parent = player

	local cash = Instance.new("IntValue")
	cash.Name = "Cash"
	cash.Value = 0
	cash.Parent = stats
end)

Что делает каждая часть

  • PlayerAdded срабатывает один раз для каждого игрока, который заходит в игру.
  • Папка с именем leaderstats особая. Roblox показывает значения из неё в списке игроков.
  • IntValue хранит целое число. Здесь он хранит деньги игрока.

Подробнее

  • ServerScriptService есть в списке Explorer. Скрипты в нём работают на сервере, где игроки не могут их менять.
  • Скрипт открывается в новой вкладке. Щёлкни внутри кода, нажми Ctrl+A, а потом Ctrl+V, чтобы заменить всё.
  • Вернись в свой мир, щёлкнув вкладку с названием твоего места.
  • Список игроков находится в правом верхнем углу игры. Нажми F5, чтобы начать, и Shift+F5, чтобы остановить.
У меня не получается этот шаг

Сначала проверь эти три вещи

  • Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
  • Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
  • Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.

Всё ещё не получается? Напиши нам →

3
Шаг 3 / 9

Построй dropper

  1. Добавь Part в папку Tycoon. Задай Size равным 4, 1, 4, включи Anchored и назови деталь Dropper.
  2. Подними её примерно на 10 studs над полом инструментом Move (Ctrl+2).
  3. Добавь в Dropper Script и вставь этот код.
  4. Нажми Play. Каждые 2 секунды падает жёлтый кубик.
Dropper > Script
local Debris = game:GetService("Debris")
local dropper = script.Parent

while true do
	task.wait(2)

	local cube = Instance.new("Part")
	cube.Name = "Cube"
	cube.Size = Vector3.new(1.5, 1.5, 1.5)
	cube.Color = Color3.fromRGB(255, 200, 60)
	cube.Position = dropper.Position - Vector3.new(0, 2, 0)
	cube.Parent = workspace

	Debris:AddItem(cube, 20)
end

Что делает каждая часть

  • Instance.new создаёт новую деталь из кода.
  • Position ставит кубик на 2 studs ниже dropper.
  • Debris убирает каждый кубик через 20 секунд, поэтому старые кубики не копятся.

Подробнее

  • Чтобы положить деталь в папку, потяни её название в Explorer на название Tycoon.
  • Инструментом Move потяни зелёную стрелку вверх. Поле Position в Properties показывает высоту как среднее число.
  • Куб появляется на 2 studs ниже дроппера, а потом падает. Если дроппер слишком низко, кубы копятся под ним.
  • Первый куб приходит через 2 секунды после начала игры.
Частая ошибка. Кубики не появляются: проверь, что скрипт лежит внутри Dropper и что Dropper закреплён (Anchored).
У меня не получается этот шаг

Сначала проверь эти три вещи

  • Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
  • Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
  • Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.

Всё ещё не получается? Напиши нам →

4
Шаг 4 / 9

Добавь конвейер

  1. Добавь Part, задай Size равным 6, 1, 30, включи Anchored и назови его Conveyor.
  2. Положи его на пол так, чтобы один конец был прямо под dropper.
  3. Добавь в Conveyor Script и вставь этот код.
  4. Нажми Play. Кубики падают на конвейер и скользят по нему.
Conveyor > Script
local conveyor = script.Parent

conveyor.AssemblyLinearVelocity = conveyor.CFrame.LookVector * 8

Что делает каждая часть

  • AssemblyLinearVelocity говорит Roblox, как быстро должно двигаться всё, что лежит на детали.
  • LookVector это направление, в которое смотрит перед детали. Число 8 это скорость в studs в секунду.

Подробнее

  • У каждой детали есть перед. Конвейер толкает кубы к своему переду.
  • Длинная сторона конвейера, те 30 studs, должна смотреть от дроппера, в сторону места, где будет стоять сборщик.
  • Сам конвейер не двигается. Скользят только вещи, лежащие на нём.
  • Если кубы падают сбоку, сделай конвейер шире или перенеси дроппер на его середину.
Частая ошибка. Кубики скользят не туда: поверни конвейер на 180 градусов инструментом Rotate (Ctrl+4).
У меня не получается этот шаг

Сначала проверь эти три вещи

  • Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
  • Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
  • Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.

Всё ещё не получается? Напиши нам →

5
Шаг 5 / 9

Собирай кубики

  1. Добавь Part на дальнем конце конвейера. Задай Size равным 6, 4, 1, включи Anchored, сделай его зелёным и назови Collector.
  2. Поставь его стоймя, как стену, чтобы кубики врезались в него.
  3. Добавь в Collector Script и вставь этот код.
  4. Нажми Play. Каждый кубик, который доехал до collector, добавляет 5 к Cash.
Collector > Script
local Players = game:GetService("Players")
local collector = script.Parent

collector.Touched:Connect(function(hit)
	if hit.Name ~= "Cube" then return end
	hit:Destroy()

	for _, player in ipairs(Players:GetPlayers()) do
		local stats = player:FindFirstChild("leaderstats")
		if stats then
			stats.Cash.Value += 5
		end
	end
end)

Что делает каждая часть

  • Скрипт игнорирует всё, что не называется Cube. Твои ноги не считаются.
  • Destroy убирает кубик из игры.
  • Цикл даёт 5 денег каждому игроку на сервере. Тайкун с одним владельцем на участок это продвинутый урок.

Подробнее

  • Size 6, 4, 1 уже стоит прямо: 6 в ширину, 4 в высоту и 1 в толщину. Поставь её поперёк конца конвейера, как закрытые ворота.
  • Её нижний край должен касаться конвейера, чтобы ни один куб не проскользнул под ней.
  • Чтобы сделать её зелёной, щёлкни поле Color в Properties.
  • Чтобы проверить: нажми F5 и следи за списком игроков. Cash растёт на 5 каждый раз, когда куб доходит до стены.
У меня не получается этот шаг

Сначала проверь эти три вещи

  • Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
  • Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
  • Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.

Всё ещё не получается? Напиши нам →

6
Шаг 6 / 9

Подготовь второй dropper

  1. Выбери Dropper и нажми Ctrl+D. Назови копию Dropper2 и перенеси её рядом с первым dropper, тоже над конвейером.
  2. Перетащи Dropper2 из Workspace в ServerStorage.
  3. Он исчезнет из мира. Объекты в ServerStorage ждут там, пока скрипт не вернёт их обратно.

Подробнее

  • Копия стоит точно поверх оригинала. Потяни её в сторону инструментом Move, чтобы видеть обе.
  • Переименуй копию через F2. Название должно быть Dropper2, с заглавной D и без пробела.
  • ServerStorage есть в списке Explorer. Потяни на него название Dropper2.
  • Скрипт внутри копии пришёл вместе с ней. Добавлять его снова не нужно.
Совет. Скрипты внутри ServerStorage не работают. Поэтому второй dropper молчит, пока его кто-нибудь не купит.
У меня не получается этот шаг

Сначала проверь эти три вещи

  • Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
  • Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
  • Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.

Всё ещё не получается? Напиши нам →

7
Шаг 7 / 9

Добавь кнопку покупки

  1. Добавь Part на пол рядом с конвейером. Задай Size равным 4, 1, 4, включи Anchored, сделай его ярко-синим и назови BuyDropper.
  2. Добавь в BuyDropper Script и вставь этот код.
  3. Чтобы подписать кнопку, наведи курсор на BuyDropper, нажми + и добавь BillboardGui. Задай его Size равным {0, 200}, {0, 50}, а StudsOffset равным 0, 3, 0.
  4. Добавь TextLabel внутрь BillboardGui. Задай его Size равным {1, 0}, {1, 0}, включи TextScaled и напиши такой текст: Second dropper - 50
BuyDropper > Script
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")

local button = script.Parent
local PRICE = 50
local bought = false

button.Touched:Connect(function(hit)
	if bought then return end

	local player = Players:GetPlayerFromCharacter(hit.Parent)
	local stats = player and player:FindFirstChild("leaderstats")
	if not stats or stats.Cash.Value < PRICE then return end

	bought = true
	stats.Cash.Value -= PRICE
	ServerStorage.Dropper2.Parent = workspace
	button:Destroy()
end)

Что делает каждая часть

  • PRICE это цена. Измени число, и кнопка станет дешевле или дороже.
  • Скрипт проверяет, что кнопки коснулся настоящий игрок и что у него хватает cash.
  • Когда Dropper2 переносится в workspace, он включается. Его скрипт сразу начинает работать.

Подробнее

  • Игроки покупают, заходя на кнопку, поэтому поставь её на пол там, куда легко дойти.
  • Для Size и StudsOffset щёлкни поле в Properties, введи числа точно так, как показано, со скобками и запятыми, и нажми Enter.
  • Text является свойством TextLabel. Щёлкни поле Text, введи слова и нажми Enter.
  • Надпись висит над кнопкой. Если ты её не видишь, увеличь среднее число в StudsOffset.
У меня не получается этот шаг

Сначала проверь эти три вещи

  • Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
  • Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
  • Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.

Всё ещё не получается? Напиши нам →

8
Шаг 8 / 9

Проверь весь цикл

  1. Нажми F5. Смотри, как кубики падают, едут по конвейеру и превращаются в cash.
  2. Подожди, пока накопишь 50 cash, потом встань на синюю кнопку.
  3. Появится второй dropper, кнопка исчезнет, а твои деньги начнут расти вдвое быстрее.
  4. Нажми Shift+F5, чтобы остановить игру. Если что-то не работает, открой окно Output в меню Window и прочитай красный текст.

Подробнее

  • Чтобы набрать 50 монет, нужно 10 кубов, то есть не меньше 20 секунд.
  • После покупки Cash уменьшается на 50. Это правильно. Ты заплатил за дроппер.
  • После покупки кнопка уничтожается, поэтому её нельзя купить дважды.
  • Если второй дроппер появился не там, останови игру, перетащи Dropper2 из ServerStorage обратно в Workspace, передвинь его и снова перетащи в ServerStorage.
Частая ошибка. Cash не меняется: падающие детали должны называться Cube, точно как в скрипте dropper.
У меня не получается этот шаг

Сначала проверь эти три вещи

  • Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
  • Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
  • Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.

Всё ещё не получается? Напиши нам →

9
Шаг 9 / 9

Опубликуй игру

  1. Выбери File → Publish to Roblox. Придумай игре название и короткое описание.
  2. На сайте Creator Hub открой свою игру и ответь на вопросы анкеты Maturity.
  3. Поставь игре статус Public и отправь ссылку другу.

Подробнее

  • Когда ты публикуешь впервые, Studio просит название и описание. Нажми Create.
  • Creator Hub является сайтом create.roblox.com. Войди с тем же аккаунтом и щёлкни свою игру в списке.
  • Прежде чем игру можно сделать публичной, Roblox может попросить что-то ещё, например проверку возраста на аккаунте. Страница подскажет, чего не хватает.
  • Если тебе ещё нет 18, выполняй этот шаг вместе с кем-то из родителей.
Совет. Прогресс пока не сохраняется. Когда игрок выходит, его деньги пропадают. Сохранение данных это продвинутый урок.
У меня не получается этот шаг

Сначала проверь эти три вещи

  • Название каждой детали и каждого скрипта точно такое же, как в уроке, с теми же заглавными буквами.
  • Скрипт лежит в нужном объекте. Посмотри на подпись над блоком с кодом.
  • Открой окно Output через меню Window. Красный текст показывает скрипт и строку, в которой есть проблема.

Всё ещё не получается? Напиши нам →

Теперь измени сам

  • Сделай так, чтобы каждый кубик стоил 10 cash вместо 5.
  • Добавь третий dropper, который стоит 200 cash.
  • Сделай второй dropper быстрее первого. Какое число нужно изменить?