Werkstatt
Ein eigener Shop in Roblox
Vier Etappen · Geld sammeln, kaufen, schneller werden.
Das Sparschwein
Variable = ein beschriftetes Sparschwein
Bevor wir Geld verdienen können, braucht jeder Spieler ein Konto — ein Sparschwein, in dem das Geld liegt.
Früher hat Roblox dieses Sparschwein automatisch oben rechts angezeigt. In der neuen Studio-Version versteckt sich diese Liste aber oft — macht nichts, in Teil 2 bauen wir uns gleich eine eigene Anzeige, die man garantiert sieht.
Variable — Ein Kasten mit einem Namen, in dem eine Zahl oder ein Wort liegt. "Geld" ist so ein Kasten — sein Inhalt kann sich ändern.
In Studio
- Im Explorer (die Liste rechts) auf ServerScriptService rechtsklicken.
- Insert Object → Script wählen.
- Den fertigen Beispiel-Code löschen und das hier reinschreiben:
/werkstatt/roblox-shop/e1-explorer.png
/werkstatt/roblox-shop/e1-leaderstats.png-- Gibt jedem Spieler ein eigenes Geld-Konto
game.Players.PlayerAdded:Connect(function(spieler)
-- ein "Ordner", den Roblox als offiziellen Punktestand kennt
local konto = Instance.new("Folder")
konto.Name = "leaderstats" -- dieser Name ist Magie, muss GENAU so sein
konto.Parent = spieler
-- das Geld selbst: faengt bei 0 an
local geld = Instance.new("IntValue")
geld.Name = "Geld"
geld.Value = 0
geld.Parent = konto
end)Grünen Play-Knopf drücken (F5). Schau im Explorer rechts nach: Players → dein Name → leaderstats → Geld. Steht da "Value 0"? Dann hat dein Skript funktioniert — riesig! (Robloxs Anzeige oben rechts versteckt sich oft. Macht nichts — in Teil 2 bauen wir uns gleich eine eigene, die man garantiert sieht.)
Teil 2: Geld groß anzeigen
Robloxs eingebaute Liste oben rechts versteckt sich gern. Also bauen wir uns unsere EIGENE Geld-Anzeige — groß, golden, immer da.
Wichtig: diesmal nehmen wir einen LocalScript, keinen normalen Script.
Der Code ist diesmal länger — aber keine Sorge: Das meiste beschreibt nur, wie die Anzeige aussehen soll (wie groß, welche Farbe, wo auf dem Bildschirm). Das tippst du einfach ab wie ein Rezept, verstehen musst du es noch nicht. Worauf es wirklich ankommt, ist die allerletzte Zeile — die sorgt dafür, dass sich die Zahl von selbst neu schreibt, sobald sich dein Geld ändert.
LocalScript (Client) — Ein normaler Skript ist der "Server" — er macht die Regeln für alle. Ein LocalScript kümmert sich nur um DEINEN Bildschirm (das nennt man "Client"). Anzeigen, die nur du siehst, gehören immer in einen LocalScript.
In Studio
- Im Explorer StarterGui suchen und anklicken.
- Rechtsklick → Insert Object → LocalScript. Achtung: diesmal LocalScript, nicht Script!
- Den Beispiel-Code löschen und das hier reinschreiben:
/werkstatt/roblox-shop/e1b-localscript.png
/werkstatt/roblox-shop/e1b-anzeige.png-- zeigt dein Geld gross oben im Bild an
local spieler = game.Players.LocalPlayer
-- warte, bis das Geld-Konto vom anderen Skript da ist
local geld = spieler:WaitForChild("leaderstats"):WaitForChild("Geld")
-- eine Anzeige-Flaeche auf deinem Bildschirm
local flaeche = Instance.new("ScreenGui")
flaeche.Name = "GeldAnzeige"
flaeche.Parent = spieler:WaitForChild("PlayerGui")
-- der goldene Text darauf
local text = Instance.new("TextLabel")
text.Size = UDim2.new(0, 260, 0, 60)
text.Position = UDim2.new(0, 20, 0, 70)
text.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
text.BackgroundTransparency = 0.4
text.TextColor3 = Color3.fromRGB(255, 215, 0)
text.TextScaled = true
text.Font = Enum.Font.FredokaOne
text.Parent = flaeche
-- schreibt den Text immer neu
local function aktualisieren()
text.Text = "Geld: " .. geld.Value
end
aktualisieren() -- einmal am Anfang
geld.Changed:Connect(aktualisieren) -- und immer, wenn sich das Geld aendertF5 drücken. Jetzt steht oben links groß und golden "Geld: 0" — diesmal siehst du es garantiert. In Etappe 2 zählt es bei jeder Münze mit.
Geld einsammeln
Event = "immer wenn jemand mich berührt, mach was"
Jetzt legen wir Münzen in die Welt. Läuft die Spielfigur drüber, springt das Geld hoch und die Münze verschwindet.
Event — Etwas, worauf der Computer wartet und dann sofort reagiert. "Touched" (berührt) ist ein Event — wie eine Türklingel, die auf einen Finger wartet.
In Studio
- Oben ein Part einfügen (Model → Part). Das ist unsere Münze.
- Den Part im Explorer anklicken, umbenennen in Muenze (ohne ü — das ist nur der Name).
- In den Properties: Anchored anhaken (sonst fällt sie runter), Color auf Gold stellen.
- Auf die Muenze rechtsklicken → Insert Object → Script, und das hier reinschreiben:
/werkstatt/roblox-shop/e2-rename.png
/werkstatt/roblox-shop/e2-muenze.png-- steckt IN der Muenze. Laeuft ein Spieler drauf, gibt es Geld.
local muenze = script.Parent
muenze.Touched:Connect(function(getroffen)
-- gehoert das, was die Muenze beruehrt, zu einem Spieler?
local spieler = game.Players:GetPlayerFromCharacter(getroffen.Parent)
if spieler then
-- +1 aufs Konto
spieler.leaderstats.Geld.Value = spieler.leaderstats.Geld.Value + 1
-- Muenze verschwindet, damit sie nur EINMAL zaehlt
muenze:Destroy()
end
end)Play drücken, mit den Pfeiltasten/WASD über die Münze laufen. "Geld" springt auf 1, die Münze ist weg. Tipp fürs Kind: die Muenze mit Strg+D kopieren und viele davon verteilen — ein ganzer Geldregen!
Der Shop-Türsteher
Bedingung (if) = der Türsteher, der nur bei genug Geld verkauft
Jetzt der eigentliche Shop: ein Podest, zu dem man hingeht und E drückt. Ist genug Geld da, wird es abgezogen und man läuft ab sofort doppelt so schnell.
Das Podest ist der Türsteher — er schaut erst ins Sparschwein und lässt nur rein, wer bezahlen kann.
Bedingung (if) — Eine Ja/Nein-Frage im Code. "if" heißt "falls". Nur wenn die Antwort Ja ist, passiert das in den Klammern darunter.
In Studio
- Noch einen Part einfügen, umbenennen in Shop, Anchored anhaken — das ist das Verkaufs-Podest.
- Auf den Shop rechtsklicken → Insert Object → ProximityPrompt. Das ist der eingebaute "Drück E"-Knopf, ganz ohne Menü-Gebastel.
- Beim ProximityPrompt in den Properties: ActionText = "Kaufen", ObjectText = "Schneller laufen (5 Geld)", HoldDuration = 0.
- Dann auf den Shop noch ein Script einfügen und das hier reinschreiben:
/werkstatt/roblox-shop/e3-prompt.png-- der Shop-Tuersteher: prueft Geld, dann verkauft er "schneller laufen"
local shop = script.Parent
local knopf = shop:WaitForChild("ProximityPrompt")
local PREIS = 5
knopf.Triggered:Connect(function(spieler)
local geld = spieler.leaderstats.Geld
if geld.Value >= PREIS then -- genug Geld im Sparschwein?
geld.Value = geld.Value - PREIS -- bezahlen
local figur = spieler.Character
local koerper = figur:FindFirstChildWhichIsA("Humanoid")
koerper.WalkSpeed = 32 -- normal ist 16 -> doppelt so schnell!
end
end)Play, ein paar Münzen einsammeln (mindestens 5), zum Shop-Podest laufen, E drücken. Das Geld fällt um 5 — und plötzlich flitzt die Figur. Wenn nichts passiert: hattest du wirklich 5 Geld? Der Türsteher ist streng.
Mach es zu DEINEM Spiel
Ausprobieren = so lernt man programmieren wirklich
Jetzt kommt der beste Teil: verändern und schauen, was passiert. Kaputtmachen ist erlaubt — Strg+Z macht alles rückgängig.
Ändere im Shop-Script eine Zahl oder ein Wort und drück Play. Jede kleine Änderung ist ein Experiment.
Wert — Die Zahlen und Wörter, die du im Code änderst — wie PREIS = 5 — heißen Werte. An Werten drehen und schauen, was passiert, machen echte Programmierer den ganzen Tag.
In Studio
- Alle Ideen unten passieren im Shop-Script aus Etappe 3. Eine Sache ändern, Play, gucken, wiederholen.
Ideen zum Ausprobieren
- Teurer oder billiger: ändere PREIS = 5 in PREIS = 10 oder PREIS = 2.
- Statt schneller — höher springen: tausche die WalkSpeed-Zeile gegen koerper.JumpHeight = 15 (normal ist 7).
- Noch schneller: probier WalkSpeed = 50. Ab wann wird es zu wild?
- Ein zweiter Shop: kopiere das ganze Shop-Podest (Strg+D), gib dem neuen ein anderes Item und einen anderen Preis.
- Baue ein Schild aus einem Part, das erklärt, was der Shop verkauft.
Es gibt hier kein richtig oder falsch. Wenn etwas Rotes im Fenster erscheint (ein Fehler), lies die erste Zeile zusammen — meistens fehlt nur ein Buchstabe. Zeig stolz her, was du verändert hast!
Fertig? Erzähl uns, was der Shop verkaufen soll — dann bauen wir das nächste Tutorial.