Upgrades kaufen

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Dies bringt uns zum letzten Teil des Spiels - Upgrades zu kaufen. Indem wir erlauben, dass Spieler Upgrades kaufen, die die Größe ihres Gegenstandsbeutels erhöhen, können sie mehr Gegenstände pro Trip kaufen und noch mehr Gold verdienen.

Erstellen eines Shops

Jeder Shop wird eine Schaltfläche haben, die Spieler klicken, um eine größere Artikel-Tasche zu kaufen. Die Shop- selbst wird ein Teil mit einer SurfaceGUI sein, ein Element, das Text auf Teile schreiben kann.

Das Schild erstellen

  1. Im Arbeitsbereicherstellen Sie ein neues Modell namens Shop.

  2. Erstellen Sie im Shop einen neuen Block namens BuyButton.

  3. In BuyButton fügen Sie eine neue Oberflächen-GUI hinzu, indem Sie auf die +-Schaltfläche klicken und mit der Scrollen nach grafische Benutzeroberflächescrollen.

  4. In der Oberfläche grafische Benutzeroberflächefügen Sie ein neues TextLabel hinzu, benannt BuyText. Ein kleines Label wird irgendwo auf der Teil angezeigt.

  5. Abhängig von der Art und Weise, wie das Teil hergestellt wurde, kann das Etikett an einem anderen Ort sein. Wenn Sie das Text-Etikett auf der Seite nicht sehen, gehen Sie in die Oberflächen-GUI und finden Sie die Eigenschaft Gesicht. Ändern Sie diese Eigenschaft, bis Sie das Beschriftungsehen.

Ändern des Zeichentexts

Der TextLabel ist derzeit sehr klein und schwer für die Spieler zu sehen. Es muss skaliert werden.

  1. In den BuyText-Eigenschaften, klicken Sie auf die Pfeile neben Größe . Ändern Sie den Offset für X (links und rechts) und Y (hoch und runter) auf 0.

  2. Ändere die Skala von X und Y auf 0,5, um ein Quadrat zu erhalten.

  3. Scrollen Sie in den TextLabel-Eigenschaften und klicken Sie auf die Pfeil links von AnchorPoint . Tippe in 0.5 für X und Y. Dies bewegt einen Teil deines Labels aus der Ansicht, aber du positionierst es richtig nächste.

  4. Scrollen Sie in den Eigenschaften nach unten und öffnen Sie Position . Ändern Sie die Skalierung von X und Y auf 0.5, so dass die Box in der Mitte angezeigt wird.

  5. In den BuyText-Eigenschaften, scrollen Sie nach unten und ändern Sie Text in etwas Descriptive. Zum Instanz: "Buy Larger Bag: 100 gold" .

  6. Überprüfen Sie TextScaled auf sein . Dies skaliert Ihren Text automatisch, damit er in die Auswahlboxpasst.

Einen Klick-Detektor hinzufügen

Spieler werden Gegenstände kaufen, indem sie auf den Shop klicken, anstatt einfach darauf zu berühren. Das Skript verwendet einen Klick-Detektor, um zu überprüfen, ob ein Spieler auf das Schild im Shop geklickt hat. KlickDetektor sind Objekte, mit denen Benutzer mit etwas in der Umgebung interagieren können, wie das Öffnen einer Tür.

  1. In der KaufSchaltfläche fügen Sie einen ClickDetector hinzu.

  2. In BuyButton fügen Sie ein neues Skript namens BuyScript hinzu und geben Sie es einen beschreibenden Kommentar posten.

  3. In BuyScript erstellen Sie Variablen, um die Button-Teil zu speichern und auf Klicken-Detektor zu klicken.


    -- Lässt Spieler auf eine Schaltfläche klicken, um ein Upgrade zu kaufen, das die Plätze erhöht
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. Erstellen Sie eine neue Funktion namens giveUpgrade(), die einen Parameter namens player erhält. Die Funktion wird die Räume eines Spieler:inaktualisieren, wenn sie auf die Schaltfläche klicken.


    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
    local function giveUpgrade(player)
    end
  5. Nach der Funktion, tippe das Ereignis des Klickdetektors MouseClick auf die Funktion giveUpgrade().


    local function giveUpgrade(player)
    end
    clickDetector.MouseClick:Connect(giveUpgrade)
  6. Fügen Sie eine druckende Anweisung in giveUpgrade() hinzu, um die Funktion zu testen.


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. Spiele dein Projekt . Klicken Sie auf die Schaltfläche und überprüfen Sie, dass Sie den Text im Ausgabe-Fenster sehen.

Troubleshooting-Tipps

Problem: Du kannst die Schaltfläche nicht anklicken oder ein Mauscursor erscheint nicht auf der Schaltfläche.

  • Stellen Sie sicher, dass das ClickDetector-Objekt ein Kind des Teils ist, auf den Sie versuchen zu klicken.
  • Stellen Sie sicher, dass Ihr Charakter nah genug an der Schaltfläche ist. Oder stellen Sie sicher, dass das Werkzeug nicht ausgerüstet ist.

Upgrades kaufen

Mit einem funktionierenden Button ist es an der Zeit, Code in giveUpgrade hinzuzufügen, um das Gold eines Spieler:inim Austausch für eine aufgewertete Tasche zu entfernen.

Upgrade- Variablen hinzufügen

Jedes Upgrade hat zwei Variablen: die Kosten des Upgrades und wie viele Plätze es hat.

  1. In BuyScript, unter local clickDetector, erstellen Sie zwei Variablen:

    • newSpace : Wie viele Plätze ein Upgrade hinzufügt, wenn es gekauft wird.
    • upgradeCost : Die Kosten für ein einzelnes Upgrade

    -- Variable für das Upgrade
    local newSpaces = 10
    local upgradeCost = 100

Upgrades gewähren

Bevor du dem Spieler die Upgradeverkaufst, musst du überprüfen, ob er genug Geld hat. Wenn sie es tun, fügst du zu ihrem maximalen Anzahl an Plätzen hinzu.

  1. In giveUpgrade() , geben Sie die folgenden Informationen ein, um die Spielerstatistik des Spieler:inzu erhalten, damit Sie auf seine Gold- und Platz variablen zugreifen können.


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Bekommt die Rangliste des Spieler:in, um andere IntColors zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Bekommt das Geld und die Räume des Spieler:in, um Änderungen vorzunehmen
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. Nach dem Schreiben der Variablen für die Plätze erstellen Sie ein if- Statement, um festzustellen, ob der Wert von playerGold mehr oder gleich ist.


    local function giveUpgrade(player)
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    -- Überprüft, ob der Spieler genug Geld hat, um das Upgrade zu finanzieren
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. In der if-Anweisung subtrahiert die Upgrade-Kosten vom Gold des Spieler:in.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- Subtrahiere die Kosten des Artikelaus dem Geld des Spieler:in
    playerGold.Value -= upgradeCost
    end
  4. In der nächsten Zeile fügen Sie die Anzahl der aktuellen Felder des Spieler:inund die neuen Felder hinzu, die pro Upgrade vergeben werden.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    playerGold.Value -= upgradeCost
    playerSpaces.Value += newSpaces
    end
  5. Spielen Sie Ihr Projekt und überprüfen Sie die Rangliste, um zu überprüfen, ob die Platz-Upgrade funktioniert hat.

Troubleshooting-Tipps

An dieser Stelle funktionieren die Upgrades nicht wie erwartet, versuchen Sie einen der folgenden Optionen.

  • Stellen Sie sicher, dass alles in der () von FindFirstChild() hat Zitate auf beiden Seiten, wie **** leaderstats1> .
  • Stellen Sie sicher, dass jede Zeile in FindFirstChild genau dasselbe ist wie der Name von IntValue in der Skript, das. PL: die Skripts. Zum Beispiel, wenn Ihr Code Rubine als Geld verwendet, sollten Sie FindFirstChild("Rubies") haben.
  • Stellen Sie sicher, dass giveUpgrade() über clickDetector.MouseClick ist.

Schließe den Kauf von Skripten ab

Eine fertige Version des Skripts kann unten verwendet werden.


-- Lässt Spieler auf eine Schaltfläche klicken, um ein Upgrade zu kaufen, das die maximale Anzahl von Plätzen erhöht
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Variable für das Upgrade
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Bekommt die Rangliste des Spieler:in, um andere IntColors zu erhalten
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Bekommt das Geld und die Räume des Spieler:in, um Änderungen vorzunehmen
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Überprüft, ob der Spieler genug Geld hat, um das Upgrade zu finanzieren
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Subtrahiere die Kosten des Artikelaus dem Geld des Spieler:in
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)