Menu
CoddyTech

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
end

Setiap 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.

challenge icon

Tantangan

Sedang

Buat pad pertama berfungsi:

  1. Ambil ServerStorage, lalu letakkan local items = ServerStorage.TycoonItems di dekat bagian atas.
  2. Saat pemain menyentuh tycoon.Buttons.Dropper2Pad: jangan lakukan apa pun kecuali pemain tersebut adalah pemiliknya dan pad masih berada di tycoon.Buttons. Jika Cash mereka setidaknya sebesar atribut Price pada pad, kurangi Cash sebesar harga tersebut, pindahkan pad ke ServerStorage, pindahkan items.Dropper2 ke tycoon.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)
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