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").LocalPlayerDer 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.
Aufgabe
MittelIn PetClient:
- Rufe
Playersab,local me = Players.LocalPlayerundlocal hud = script.Parent. - Warte auf
leaderstatsund dessenCoins. - Schreibe
showCoins(), dashud.Coins.TextaufCoins: 5(den Wert) setzt, rufe es einmal auf und verbinde es mitCoins.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
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
2Client und Server
Münzen auf dem Bildschirm