Menu
CoddyTech

Münzen auf dem Bildschirm

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

Jetzt der Client. PetClient ist ein LocalScript innerhalb des HUD, einer ScreenGui, die Roblox beim Spawnen aus StarterGui auf den Bildschirm jedes Spielers kopiert. Ein LocalScript wird auf dem eigenen Gerät des Spielers ausgeführt und kann den Spieler benennen, für den es ausgeführt wird:

local me = game:GetService("Players").LocalPlayer

Der Server fügt dem Spieler kurz nach dessen Beitritt leaderstats hinzu, daher wartet der Client mit WaitForChild darauf. Dann zeigt er die Münzen im Coins-Label des HUD an und erneut bei jeder Änderung: Das Changed-Ereignis eines IntValue wird mit dem neuen Wert ausgelöst.

Das Label zeigt nur an, was der Server festgelegt hat. Wenn du Coins.Value in einem LocalScript änderst, ändert sich dadurch nur die Ansicht dieses Spielers und nichts auf dem Server.

challenge icon

Aufgabe

Mittel

In PetClient:

  1. Rufe Players ab, local me = Players.LocalPlayer und local hud = script.Parent.
  2. Warte auf leaderstats und dessen Coins.
  3. Schreibe showCoins(), das hud.Coins.Text auf Coins: 5 (den Wert) setzt, rufe es einmal auf und verbinde es mit Coins.Changed.

Drücke Play und zerstöre einen Haufen. Klicke dann auf Check.

Probier es selbst

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

local piles = workspace.Piles
local pileSpot = {} -- jeder Haufen -> der Platz, auf dem er steht

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)

-- Ein Klick auf einen Haufen benötigt hitPile, das unter spawnPile definiert wird: daher hier
-- vor beiden deklarieren
local hitPile

-- Ein Münzhaufen auf einem Platz: eine Kopie von ServerStorage.CoinPile mit Gesundheit
-- 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
	pileSpot[pile] = spot
	pile.Parent = piles
	detector.MouseClick:Connect(function(player)
		hitPile(player, pile)
	end)
	return pile
end

-- Ein Treffer verringert die Gesundheit eines Haufens um 1;
-- bei 0 zerfällt 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")
	local spot = pileSpot[pile]
	pileSpot[pile] = nil
	pile:Destroy()
	-- ein neuer Haufen am selben Platz, einige Sekunden später
	task.delay(Settings.RespawnTime, spawnPile, spot)
end

-- Ein Haufen auf jedem Platz in 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