Menu
CoddyTech

Quặng vàng

Bài học 5 trên 22 trong khóa học Game Roblox: nhà máy tycoon của Coddy.

Một chút may mắn sẽ khiến người chơi dõi theo băng chuyền: một số quặng là vàng, có giá trị gấp năm lần. math.random() không có đối số sẽ trả về một số từ 0 đến (không bao gồm) 1, vì vậy cứ mười lần thì một lần giá trị nhỏ hơn 0.1:

if math.random() < Settings.GoldChance then
	-- Cái này là vàng
end

Quặng vàng phát sáng (Neon) và có giá trị là Settings.OreValue * 5.

Một số quặng sẽ rơi khỏi băng chuyền trong quá trình chơi. Debris:AddItem(ore, 20) sẽ xóa từng quặng sau 20 giây, bất kể nó rơi ở đâu, để thế giới không bao giờ đầy những mảnh vật thể rơi vãi.

challenge icon

Thử thách

Dễ

Cứ mười quặng thì có một quặng vàng, đồng thời dọn các quặng còn sót lại.

  1. Trong dropOre, nếu math.random() < Settings.GoldChance: tô quặng bằng màu Color3.fromRGB(255, 200, 40), đặt vật liệu là Neon và đặt Value thành Settings.OreValue * 5.
  2. Sau khi gán quặng vào đối tượng cha, gọi Debris:AddItem(ore, 20).

Nhấn Chơi: thỉnh thoảng một quặng vàng phát sáng sẽ chạy trên băng chuyền và trả 50. Sau đó nhấn Kiểm tra.

Tự làm thử

local Players = game:GetService("Players")
local Settings = require(game.ReplicatedStorage.Settings)

local tycoon = workspace.Tycoon

print("Ore is worth " .. Settings.OreValue .. " Cash")

-- Mỗi người chơi có Cash trên bảng xếp hạng
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: một khối nhỏ có giá trị Cash, rơi xuống từ 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)
	-- Bài học 5: thêm Gold Ore vào đây
	ore.Parent = workspace
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)

-- Băng chuyền di chuyển mọi thứ nằm trên nó
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)

-- Bộ thu gom chuyển quặng thành 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)

Tất cả bài học trong Game Roblox: nhà máy tycoon

Tự luyện tập: Playground Roblox