Menu
CoddyTech

Haufen kommen zurück

Lektion 4 von 18 im Kurs Roblox-Spiel: Haustiersimulator von Coddy.

Sobald jeder Haufen zerstört ist, gehen dem Spiel die Münzen aus. Ein zerstörter Haufen sollte nach Settings.RespawnTime Sekunden an seinem Platz wieder erscheinen.

Der Haufen muss sich seinen Platz merken. Eine Tabelle, deren Schlüssel der Haufen ist, erledigt das:

local pileSpot = {} -- jeder Stapel -> die Stelle, auf der er steht
pileSpot[pile] = spot

task.delay(seconds, fn, ...) ruft später eine Funktion mit Argumenten auf, ohne jetzt etwas anzuhalten:

task.delay(Settings.RespawnTime, spawnPile, spot)

Entferne den Haufen aus der Tabelle, wenn er zerstört wird, damit die Tabelle nicht jeden Haufen behält, den es jemals gab.

challenge icon

Aufgabe

Einfach
  1. Weiter oben: local pileSpot = {}.
  2. Speichere in spawnPile pileSpot[pile] = spot.
  3. Lies in hitPile, wenn der Stapel zerbricht, seinen Platz aus, entferne ihn aus pileSpot, zerstöre den Stapel und rufe task.delay(Settings.RespawnTime, spawnPile, spot) auf.

Die Stapel in dieser Lektion erscheinen nach 1 Sekunde wieder. Drücke Play und dann Check.

Probier es selbst

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

local piles = workspace.Piles

print("A Meadow pile gives " .. Settings.PileValue .. " coins")

-- Jeder Spieler erhält Coins auf der Bestenliste
Players.PlayerAdded:Connect(function(player)
	local leaderstats = Instance.new("Folder")
	leaderstats.Name = "leaderstats"
	leaderstats.Parent = player

	local coins = Instance.new("IntValue")
	coins.Name = "Coins"
	coins.Parent = leaderstats
end)

-- Für das Anklicken eines Haufens wird hitPile benötigt, das unterhalb von spawnPile definiert wird: Deklariere es
-- hier, vor beiden Funktionen
local hitPile

-- Ein Münzhaufen auf einem Platz: eine Kopie von ServerStorage.CoinPile mit Lebenspunkten
-- und Wert als Attributen
local function spawnPile(spot)
	local pile = ServerStorage.CoinPile:Clone()
	pile.Position = spot.Position
	pile:SetAttribute("MaxHealth", Settings.PileHealth)
	pile:SetAttribute("Health", Settings.PileHealth)
	pile:SetAttribute("Value", Settings.PileValue)
	-- Klicke darauf, um ihn zu treffen
	local detector = Instance.new("ClickDetector")
	detector.Parent = pile
	pile.Parent = piles
	detector.MouseClick:Connect(function(player)
		hitPile(player, pile)
	end)
	return pile
end

-- Ein Treffer zieht einem Haufen 1 Lebenspunkt ab;
-- bei 0 zerbricht der Haufen und zahlt seinen Wert aus
function hitPile(player, pile)
	local health = pile:GetAttribute("Health") - 1
	if health > 0 then
		pile:SetAttribute("Health", health)
		return
	end
	player.leaderstats.Coins.Value += pile:GetAttribute("Value")
	pile:Destroy()
end

-- Ein Haufen auf jedem Platz in der Meadow
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
	spawnPile(spot)
end
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Roblox-Spiel: Haustiersimulator