Roblox · Тайкун · урок 3
Здание пустое: конвейер появляется после покупки кнопкой. Деньги из кассы забираются кнопкой в кошелёк.
Синим — что добавляем на этом уроке.
ServerStorage ├─ ItemsToDrop (Folder) └─ Conveyors (Folder) └─ CandyDropper (Model) — перенесён из Owned_Items Workspace └─ IndustryModel (Model) ├─ Buttons (Folder) │ ├─ BuyButtons (Folder) │ │ ├─ CandyDropperButton (Part) — кнопка на месте конвейера │ │ │ ├─ ClickDetector — CursorIcon — id картинки курсора │ │ │ ├─ Price (NumberValue) — цена │ │ │ ├─ Conveyor (ObjectValue) — → ServerStorage.Conveyors.CandyDropper │ │ │ ├─ Lines (Part) — разметка места на полу │ │ │ └─ CostGui (BillboardGui) — MaxDistance ≈ 30 │ │ │ └─ CostFrame (Frame) │ │ │ ├─ Name (TextLabel) — что покупаем │ │ │ └─ Cost (TextLabel) — цена │ │ └─ BuyScript (Script) — один на все кнопки │ └─ GainButtons (Folder) │ └─ CollectGainButton (Model) │ ├─ GainScreen (Part) — экран на стене │ │ └─ GainScreenGui (SurfaceGui) │ │ └─ GainText (TextLabel) │ └─ GainButton (Part) │ ├─ ClickDetector │ │ └─ CollectGainScript (Script) │ └─ TakeGui (BillboardGui) │ └─ TakeFrame (Frame) │ └─ Action (TextLabel) — «Забрать деньги» └─ Owned_Items (Folder) — пусто до покупки
Где: Workspace → IndustryModel → Buttons → BuyButtons · Script
Зачем: Нажатие владельца с достаточными деньгами: списывает цену, ставит конвейер, убирает кнопку.
-- папка BuyButtons
local buttons = script.Parent
-- папка Values: BuyButtons → Buttons → IndustryModel
local valuesFolder = buttons.Parent.Parent.Values
-- куда ставим купленные конвейеры
local ownedFolder = valuesFolder.Parent.Owned_Items
-- перебираем всё, что лежит в папке
for _, button in pairs(buttons:GetChildren()) do
-- берём только парты-кнопки, сам скрипт пропускаем
if button:IsA("BasePart") then
-- на кнопку нажали
button.ClickDetector.MouseClick:Connect(function(player)
-- нажал владелец здания
if valuesFolder.Owner.Value == player then
-- денег хватает
if player.leaderstats.Money.Value >= button.Price.Value then
-- списываем цену
player.leaderstats.Money.Value -= button.Price.Value
-- копируем конвейер из ServerStorage
local conveyor = button.Conveyor.Value:Clone()
-- ставим его на карту
conveyor.Parent = ownedFolder
-- убираем кнопку вместе с разметкой
button:Destroy()
-- конец проверки денег
end
-- конец проверки владельца
end
-- конец обработчика нажатия
end)
-- конец проверки типа
end
-- конец перебора
endГде: … → GainButtons → CollectGainButton → GainButton → ClickDetector · Script
Зачем: Кнопка переводит деньги из кассы в кошелёк; экран показывает сумму в кассе.
-- ClickDetector кнопки кассы
local clicker = script.Parent
-- экран: ClickDetector → GainButton → CollectGainButton
local screen = clicker.Parent.Parent.GainScreen
-- Values: CollectGainButton → GainButtons → Buttons → IndustryModel
local valuesFolder = screen.Parent.Parent.Parent.Parent.Values
-- нажали на кнопку кассы
clicker.MouseClick:Connect(function(player)
-- нажал владелец
if valuesFolder.Owner.Value == player then
-- сколько в кассе
local gain = valuesFolder.Gain.Value
-- сначала обнуляем — двойной клик не удвоит деньги
valuesFolder.Gain.Value = 0
-- переводим деньги в кошелёк
player.leaderstats.Money.Value += gain
-- конец проверки
end
-- конец обработчика нажатия
end)
-- сумма в кассе изменилась
valuesFolder.Gain.Changed:Connect(function(newGain)
-- показываем её на экране
screen.GainScreenGui.GainText.Text = newGain .. " $"
-- конец обработчика
end)Запусти Play (или Run) и убедись: