Platform Pembelian
Pelajaran 7 dari 18 dalam kursus Game Roblox: Tycoon Pabrik di Coddy.
Uang tunai digunakan untuk berbelanja. Setiap pad biru di depan sabuk membeli sesuatu; pad pertama membeli dropper kedua. Sebuah pad mengetahui harganya dari atribut Price, yang ditetapkan saat dunia dibuat.
Barang yang dibelinya menunggu di ServerStorage.TycoonItems, sudah berada di tempat yang tepat. Pembelian memindahkannya ke folder Built milik pabrik, sehingga barang itu muncul di dunia, lalu memindahkan pad ke ServerStorage, tempat tidak ada yang bisa menginjaknya. Pad itu dipindahkan, bukan dihancurkan: pelajaran selanjutnya akan menghadirkan pad kembali.
if cash.Value >= price then
cash.Value -= price
pad.Parent = ServerStorage
items.Dropper2.Parent = tycoon.Built
endSetiap anggota tubuh yang menyentuh pad memicu Touched beberapa kali dalam momen yang sama. Setelah pembelian pertama terjadi, pad tidak lagi berada di tycoon.Buttons, jadi memeriksanya terlebih dahulu akan mencegah pembelian ganda.
Tantangan
SedangBuat pad pertama berfungsi:
- Ambil
ServerStorage, lalu letakkanlocal items = ServerStorage.TycoonItemsdi dekat bagian atas. - Saat pemain menyentuh
tycoon.Buttons.Dropper2Pad: jangan lakukan apa pun kecuali pemain tersebut adalah pemiliknya dan pad masih berada ditycoon.Buttons. Jika Cash mereka setidaknya sebesar atributPricepada pad, kurangi Cash sebesar harga tersebut, pindahkan pad ke ServerStorage, pindahkanitems.Dropper2ketycoon.Built, lalu jalankan.
Tekan Mainkan, dapatkan 30 Cash dan beli pad itu, lalu tekan Periksa.
Coba sendiri
local Players = game:GetService("Players")
local CollectionService = game:GetService("CollectionService")
local Debris = game:GetService("Debris")
local Settings = require(game.ReplicatedStorage.Settings)
local tycoon = workspace.Tycoon
local owner = nil
print("Ore is worth " .. Settings.OreValue .. " Cash")
-- Setiap pemain mendapat Cash di papan peringkat
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)
-- Papan tanda di atas pabrik
local gui = Instance.new("SurfaceGui")
gui.Parent = tycoon.Sign
local signLabel = Instance.new("TextLabel")
signLabel.Name = "Status"
signLabel.Size = UDim2.fromScale(1, 1)
signLabel.BackgroundColor3 = Color3.fromRGB(25, 25, 35)
signLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
signLabel.TextScaled = true
signLabel.Text = "Step on the green pad to claim this factory"
signLabel.Parent = gui
local function setSign(text)
signLabel.Text = text
end
-- Ore: part kecil bernilai Cash yang dijatuhkan di bawah dropper
local function dropOre(dropper)
local ore = Instance.new("Part")
ore.Name = "Ore"
ore.Size = Vector3.new(1, 1, 1)
ore.Color = Color3.fromRGB(150, 150, 160)
ore.Position = dropper.Position - Vector3.new(0, 2.5, 0)
ore:SetAttribute("Value", Settings.OreValue)
if math.random() < Settings.GoldChance then
ore.Color = Color3.fromRGB(255, 200, 40)
ore.Material = Enum.Material.Neon
ore:SetAttribute("Value", Settings.OreValue * 5)
end
ore.Parent = workspace
Debris:AddItem(ore, 20)
end
-- Dropper menjalankan satu perulangan, meskipun dimulai berkali-kali
local function startDropper(dropper)
if dropper:GetAttribute("Running") then
return
end
dropper:SetAttribute("Running", true)
task.spawn(function()
while dropper:IsDescendantOf(workspace) do
dropOre(dropper)
task.wait(Settings.DropInterval)
end
dropper:SetAttribute("Running", nil)
end)
end
-- Ban berjalan membawa apa pun yang berada di atasnya
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)
-- Pengumpul mengubah ore menjadi Cash
tycoon.Collector.Touched:Connect(function(hit)
if hit.Name == "Ore" then
local value = hit:GetAttribute("Value")
hit:Destroy()
if owner then
owner.leaderstats.Cash.Value += value
end
end
end)
-- Klaim: pemain pertama yang menginjak pad menjadi pemilik pabrik
local claimPad = tycoon.ClaimPad
claimPad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and not owner then
owner = player
claimPad.Color = Color3.fromRGB(120, 120, 120)
claimPad.Material = Enum.Material.SmoothPlastic
setSign(player.Name .. "'s Factory")
for _, dropper in CollectionService:GetTagged("Dropper") do
if dropper:IsDescendantOf(workspace) then
startDropper(dropper)
end
end
end
end)
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Game Roblox: Tycoon Pabrik
Latihan sendiri: Playground Roblox