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 = guiUDim2.fromScale(1, 1) membuat label memenuhi seluruh permukaan, dan TextScaled menyesuaikan ukuran kata-kata agar pas.
Tantangan
SedangPasang papan tanda di atas pabrik untuk menunjukkan siapa pemiliknya.
- Di
tycoon.Sign, tambahkan SurfaceGui yang berisi TextLabel bernamaStatusyang memenuhi seluruh area, dengan teks berskala yang bertuliskanStep on the green pad to claim this factory. - Tulis
setSign(text)untuk mengatur Text pada label tersebut. - 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