Menu
CoddyTech

Papan Tanda

Pelajaran 7 dari 22 dalam kursus Game Roblox: Tycoon Pabrik di Coddy.

Sebuah papan tanda di atas pabrik menunjukkan siapa pemiliknya. Teks pada permukaan sebuah bagian adalah SurfaceGui di dalam bagian itu, yang memuat TextLabel. Label bernama mudah ditemukan lagi, dan sebuah fungsi kecil menyimpan setiap perubahan pada papan tanda di satu tempat:

local gui = Instance.new("SurfaceGui")
gui.Parent = tycoon.Sign

local signLabel = Instance.new("TextLabel")
signLabel.Name = "Status"
signLabel.Size = UDim2.fromScale(1, 1)
signLabel.TextScaled = true
signLabel.Text = "Opening soon"
signLabel.Parent = gui

UDim2.fromScale(1, 1) membuat label memenuhi seluruh permukaan, dan TextScaled menyesuaikan ukuran kata-kata agar pas.

challenge icon

Tantangan

Sedang

Pasang papan tanda di atas pabrik untuk menunjukkan siapa pemiliknya.

  1. Di tycoon.Sign, tambahkan SurfaceGui yang berisi TextLabel bernama Status yang memenuhi seluruh area, dengan teks berskala yang bertuliskan Step on the green pad to claim this factory.
  2. Tulis setSign(text) untuk mengatur Text pada label tersebut.
  3. Saat pabrik diklaim, panggil setSign(player.Name .. "'s Factory").

Tekan tombol “Main” dan injak bantalan hijau: papan tanda menampilkan namamu. Lalu tekan tombol “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)

-- Pelajaran 7: Sign ditempatkan di sini

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

-- 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()
		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
		for _, dropper in CollectionService:GetTagged("Dropper") do
			if dropper:IsDescendantOf(workspace) then
				startDropper(dropper)
			end
		end
	end
end)

Semua pelajaran di Game Roblox: Tycoon Pabrik

Latihan sendiri: Playground Roblox