Menu
CoddyTech

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

UDim2.fromScale(1, 1) sorgt dafür, dass die Beschriftung die gesamte Oberfläche ausfüllt, und TextScaled passt die Wörter daran an.

challenge icon

Aufgabe

Mittel

Bringe über der Fabrik ein Schild an, auf dem steht, wem sie gehört.

  1. Füge in tycoon.Sign eine SurfaceGui mit einem TextLabel namens Status hinzu, das sie ausfüllt und skalierten Text mit der Aufschrift Step on the green pad to claim this factory anzeigt.
  2. Schreibe setSign(text), die den Text dieses Labels festlegt.
  3. 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