Ein Ei ausbrüten
Lektion 9 von 20 im Kurs Roblox-Spiel: Haustier-Simulator von Coddy.
Das weiße Ei in der Nähe des Spawnpunkts hat einen ProximityPrompt: Geh darauf zu und Roblox zeigt „Ausbrüten“ mit einer Taste an, die du gedrückt halten musst (E oder eine Berührung auf einem Smartphone). Wenn der Spieler die Taste lange genug gedrückt hält, löst der Prompt auf dem Server Triggered aus und übergibt den Spieler:
workspace.Egg.ProximityPrompt.Triggered:Connect(function(player)
end)Der Server prüft den Preis, zieht die Münzen ab und gibt ein Haustier. Ein Haustier ist ein StringValue, der seinen Namen enthält, in einem Pets-Ordner im Spieler. Alles, was der Server in einen Spieler einfügt, wird an den Client dieses Spielers repliziert. So weiß die Haustierliste in einer späteren Lektion, was sie anzeigen soll.
Aufgabe
MittelBrüte am Ei für 25 Münzen eine Katze aus.
- Füge in
PlayerAddeddem Spieler einen Ordner namensPetshinzu. - Schreibe
givePet(player, name): einen StringValuePetmit dem Wertnamein Pets; gib ihn zurück. - Bei
workspace.Egg.ProximityPrompt.Triggered: Wenn Coins mindestensSettings.EggPricebeträgt, ziehe den Betrag ab, rufegivePet(player, "Cat")auf und gibplayer.Name .. " hatched a Cat"aus.
Drücke „Spielen“, verdiene 25 Münzen und halte E am Ei gedrückt: Coins sinkt um 25. Drücke dann „Prüfen“.
Probier es selbst
local Players = game:GetService("Players")
local ServerStorage = game:GetService("ServerStorage")
local Settings = require(game.ReplicatedStorage.Settings)
local remotes = game.ReplicatedStorage.Remotes
local piles = workspace.Piles
local pileSpot = {} -- jeder Münzhaufen -> der Platz, auf dem er steht
local lastHit = {} -- jeder Spieler -> wann er zuletzt zugeschlagen hat
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 Münzhaufen auf einem Platz: eine Kopie von ServerStorage.CoinPile mit seiner Gesundheit
-- und seinem Wert als Attribute
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)
pile.HealthGui.Label.Text = pile:GetAttribute("Health") .. "/" .. pile:GetAttribute("MaxHealth")
pileSpot[pile] = spot
pile.Parent = piles
return pile
end
-- Ein Treffer verringert die Gesundheit eines Münzhaufens um 1;
-- bei 0 zerfällt der Münzhaufen und zahlt seinen Wert aus
local function hitPile(player, pile)
local health = pile:GetAttribute("Health") - 1
if health > 0 then
pile:SetAttribute("Health", health)
pile.HealthGui.Label.Text = health .. "/" .. pile:GetAttribute("MaxHealth")
return
end
player.leaderstats.Coins.Value += pile:GetAttribute("Value")
local spot = pileSpot[pile]
pileSpot[pile] = nil
pile:Destroy()
-- ein paar Sekunden später ein neuer Münzhaufen am selben Platz
task.delay(Settings.RespawnTime, spawnPile, spot)
end
-- Ein Münzhaufen auf jedem Platz in Meadow
for _, spot in workspace.Zones.Meadow.Spawns:GetChildren() do
spawnPile(spot)
end
-- Der Client fordert einen Treffer auf einen Münzhaufen an. Vertraue dem Client niemals: Jeder kann
-- dieses Remote mit beliebigen Daten, von überall und beliebig schnell auslösen.
remotes.Hit.OnServerEvent:Connect(function(player, pile)
-- ein echter Münzhaufen
if typeof(pile) ~= "Instance" or pile.Parent ~= piles then
return
end
-- in Reichweite
local character = player.Character
local root = character and character:FindFirstChild("HumanoidRootPart")
if not root or (root.Position - pile.Position).Magnitude > Settings.Reach then
return
end
-- nicht zu schnell
local now = time()
if lastHit[player] and now - lastHit[player] < Settings.HitCooldown then
return
end
lastHit[player] = now
hitPile(player, pile)
end)
-- Lektion 9: Hatch an Egg kommt hierhin
Alle Lektionen in Roblox-Spiel: Haustier-Simulator
3Eier und Haustiere
Ein Ei ausbrütenÜbe selbstständig: Roblox-Playground