Das Schild
Lektion 7 von 22 im Kurs Roblox-Spiel: Fabrik-Tycoon von Coddy.
Ein Schild über der Fabrik zeigt, wem sie gehört. Text auf der Oberfläche eines Teils ist ein SurfaceGui im Teil, das ein TextLabel enthält. Benannte Beschriftungen lassen sich leicht wiederfinden, und eine kleine Funktion sorgt dafür, dass alle Änderungen am Schild an einer Stelle vorgenommen werden:
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) sorgt dafür, dass die Beschriftung die gesamte Oberfläche ausfüllt, und TextScaled passt die Wörter daran an.
Aufgabe
MittelBringe über der Fabrik ein Schild an, auf dem steht, wem sie gehört.
- Füge in
tycoon.Signeine SurfaceGui mit einem TextLabel namensStatushinzu, das sie ausfüllt und skalierten Text mit der AufschriftStep on the green pad to claim this factoryanzeigt. - Schreibe
setSign(text), die den Text dieses Labels festlegt. - Rufe beim Beanspruchen der Fabrik
setSign(player.Name .. "'s Factory")auf.
Drücke „Spielen“ und trete auf das grüne Feld: Das Schild zeigt deinen Namen. Drücke dann „Prüfen“.
Probier es selbst
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")
-- Jeder Spieler erhält Cash auf der Bestenliste
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)
-- Lektion 7: Das Schild kommt hierhin
-- Erz: ein kleines Teil, das Cash wert ist und unter einem Dropper abgeworfen wird
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
-- Das Förderband transportiert alles, was darauf liegt
tycoon.Conveyor.AssemblyLinearVelocity = Vector3.new(Settings.BeltSpeed, 0, 0)
-- Der Sammler wandelt Erz in Cash um
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)
-- Inbesitznahme: Dem ersten Spieler, der die Plattform betritt, gehört die Fabrik
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)
Alle Lektionen in Roblox-Spiel: Fabrik-Tycoon
Übe selbstständig: Roblox-Playground