Сбрасыватель
Урок 2 из 18 курса Игра в Roblox: магнат на фабрике на Coddy.
Деньги начинаются с руды. Серый ящик над конвейером, workspace.Tycoon.Dropper, каждую секунду выпускает небольшую деталь. Каждая руда хранит свою стоимость в виде атрибута — именованного значения, которое можно хранить в любом экземпляре:
ore:SetAttribute("Value", 10)
print(ore:GetAttribute("Value")) --> 10Сброс руды происходит бесконечно, поэтому это цикл. Цикл с ожиданием задерживал бы остальную часть скрипта, поэтому цикл дроппера выполняется параллельно с ним, в task.spawn, и останавливается, если дроппер покидает игровой мир:
task.spawn(function()
while dropper:IsDescendantOf(workspace) do
dropOre(dropper)
task.wait(Settings.DropInterval)
end
end)Новая деталь Part не закреплена, пока ты её не закрепишь, поэтому руда сама выпадает из дроппера.
Задание
ЛегкоЗаставь дроппер сбрасывать руду:
- В верхней части:
local tycoon = workspace.Tycoon. - Напиши
dropOre(dropper): деталь Part размером 1 на 1 на 1 с именемOre, серого цвета (Color3.fromRGB(150, 150, 160)), расположенную на 2.5 studs ниже дроппера, с атрибутомValue, которому присвоено значениеSettings.OreValue, и являющуюся дочерним объектом workspace. - Напиши
startDropper(dropper): вtask.spawn, пока дроппер находится в workspace, сбрасывай руду и ждиSettings.DropIntervalсекунд. - Вызови
startDropper(tycoon.Dropper).
Нажми Play: руда будет накапливаться под дроппером. Затем нажми Check.
Попробуйте сами
local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)
print("Ore is worth " .. Settings.OreValue .. " Cash")
-- Каждый игрок получает Cash в таблице лидеров
Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player
local cash = Instance.new("IntValue")
cash.Name = "Cash"
cash.Parent = leaderstats
end)
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.