Klaim Pabrik
Pelajaran 6 dari 18 dalam kursus Game Roblox: Tycoon Pabrik di Coddy.
Sebuah tycoon dimiliki seseorang. Pad hijau di dekat pintu masuk menentukan pemiliknya: pemain pertama yang menginjaknya menjadi pemilik, pabrik mulai beroperasi, dan hanya pemilik yang dibayar. Pemilik disimpan dalam satu variabel di bagian atas skrip, dengan nilai nil sampai seseorang mengklaimnya:
local owner = nil
claimPad.Touched:Connect(function(hit)
local player = Players:GetPlayerFromCharacter(hit.Parent)
if player and not owner then
owner = player
end
end)Saat pabrik diklaim, setiap dropper di dalamnya mulai beroperasi. Dropper memiliki tag, Dropper, sehingga CollectionService:GetTagged("Dropper") menemukan semuanya, di mana pun lokasinya. Dropper yang dibeli akan menunggu di ServerStorage, jadi hanya dropper yang ada di workspace yang mulai beroperasi.
Nantinya, pabrik bisa diklaim lagi setelah pemiliknya pergi. Agar tidak ada dropper yang menjalankan dua perulangan, startDropper menandai dropper yang sedang berjalan dengan atribut dan tidak melakukan apa pun jika atribut itu sudah disetel.
Sebuah papan di atas pabrik menunjukkan siapa pemiliknya: sebuah SurfaceGui pada tycoon.Sign, seperti pada papan mana pun.
Tantangan
SedangBuat pabrik bisa diklaim:
- Dapatkan
CollectionService, lalu tambahkanlocal owner = nildi dekat bagian atas. - Pasang tanda pada
tycoon.Sign: SurfaceGui dengan TextLabel bernamaStatusyang memenuhi seluruh permukaannya, teks putih berskala pada latar gelap, bertuliskanStep on the green pad to claim this factory, dan fungsisetSign(text). - Di dalam
startDropper, segera lakukan return jika atributRunningpada dropper sudah diatur. Jika tidak, atur atribut tersebut, lalu hapus nilainya saat perulangan berakhir. - Hapus baris yang menjalankan
tycoon.Dropper. Saat pemain menginjaktycoon.ClaimPaddan belum ada pemilik: jadikan pemain itu pemilik, ubah pad menjadi abu-abu (Color3.fromRGB(120, 120, 120), SmoothPlastic), atur tanda menjadiPlayer1's Factory(dengan Name pemain itu), lalu jalankan setiap dropper bertag di workspace. - Bayar hanya pemilik di collector (jika ada).
Tekan Play dan klaim pabrikmu, lalu tekan Check.
Coba sendiri
local Players = game:GetService("Players")
local Debris = game:GetService("Debris")
local Settings = require(game.ReplicatedStorage.Settings)
local tycoon = workspace.Tycoon
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)
-- Ore: bagian 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
local function startDropper(dropper)
task.spawn(function()
while dropper:IsDescendantOf(workspace) do
dropOre(dropper)
task.wait(Settings.DropInterval)
end
end)
end
startDropper(tycoon.Dropper)
-- Ban berjalan mengangkut 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()
for _, player in Players:GetPlayers() do
player.leaderstats.Cash.Value += value
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