Menu
CoddyTech

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.

challenge icon

Tantangan

Sedang

Buat pabrik bisa diklaim:

  1. Dapatkan CollectionService, lalu tambahkan local owner = nil di dekat bagian atas.
  2. Pasang tanda pada tycoon.Sign: SurfaceGui dengan TextLabel bernama Status yang memenuhi seluruh permukaannya, teks putih berskala pada latar gelap, bertuliskan Step on the green pad to claim this factory, dan fungsi setSign(text).
  3. Di dalam startDropper, segera lakukan return jika atribut Running pada dropper sudah diatur. Jika tidak, atur atribut tersebut, lalu hapus nilainya saat perulangan berakhir.
  4. Hapus baris yang menjalankan tycoon.Dropper. Saat pemain menginjak tycoon.ClaimPad dan belum ada pemilik: jadikan pemain itu pemilik, ubah pad menjadi abu-abu (Color3.fromRGB(120, 120, 120), SmoothPlastic), atur tanda menjadi Player1's Factory (dengan Name pemain itu), lalu jalankan setiap dropper bertag di workspace.
  5. 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)
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Game Roblox: Tycoon Pabrik

Latihan sendiri: Playground Roblox