Artikel verkaufen

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

Für die nächste Stufe des Spielzyklus müssen Spieler ihre Gegenstände für Gold verkaufen, um mehr Platz in ihren Rucksäcken kaufen zu können.

Erstelle eine Plattform

Spieler verkaufen ihre Artikel, indem sie auf eine Plattform treten, die ihnen Gold für jedes Artikel in ihrer Tasche gibt.

Die Plattform einrichten

Die Plattform kann jedes Teil sein und wird ein Skript enthalten, das den Verkauf handhabt.

  1. Erstelle ein neues Teil mit dem Namen SellPlatform. Passen Sie es an, um dem Thema Ihrer Erlebnisentsprechen zu können.

  2. Erstelle in der SellPlatform ein neues Skript mit dem Namen SellScript und füge einen Kommentar postenhinzu.

  3. In SellScript geben Sie local sellPart = script.Parent ein, um den SellPlatform-Teil zu erhalten.


    -- Verkauft alle Gegenstände eines Spieler:inund gibt ihm Gold
    local sellPart = script.Parent

Berühre Ereignisse bearbeiten

Um die Plattform zu verwenden, benötigt das Skript eine Funktion, um zu überprüfen, ob irgendwelche Spieler es berühren.

  1. Erstelle eine Funktion namens onTouch(), die überprüft, ob ein Spieler die Plattform berührt.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Um eine der Statistiken auf der Bestenlistezu ändern, muss das Skript wissen, welcher Spieler den Charakter steuert.Verwende in der if-Anweisung die Funktion GetPlayerFromCharacter(), um einen Spieler:inzu finden.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. Auf der nächsten Linie erhalten Sie den Leaderstatistik-Container des Spieler:in.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Holt sich die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Erstelle auf der nächsten Zeile Variablen, um das Geld und die Gegenstände des Spieler:inzu erhalten.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Holt sich die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Holt die Gegenstände und das Geld des Spieler:in
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Um deine Arbeit zu überprüfen, füge eine Druckausdruck hinzu, der ausgeführt wird, wenn ein Spieler sellPart berührt.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. Am unteren Rand des Skripts verbinden Sie das onTouch() mit dem berührten Ereignis von sellPart.


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Holt sich die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Holt die Gegenstände und das Geld des Spieler:in
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. Spiele dein Projekt und tritt auf sellPart; du solltest die Nachricht "A Player touched sellPart" im Ausgabe-Fenster sehen.

Artikel verkaufen

In diesem Erlebnis erhält ein Spieler 100 Gold für jedes Item.Nachdem sie Geld erhalten haben, werden ihre Artikel auf 0 zurückgesetzt, so dass Spieler die Welt erkunden können, um mehr Artikel zu finden.

Code eine neue Verkaufsfunktion

  1. Unter den Variablen erstelle eine Funktion mit dem Namen sellItems(), die zwei Parameter mit den Namen playerItems und playerGold erhält.


    -- Verkauft alle Gegenstände eines Spieler:inund gibt ihm Gold
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. Um den Spielern die richtige Menge an Gold zu geben, nimm den Wert des playerItems und multipliziere ihn mit der Menge an Gold, die sie pro Artikel erhalten sollen.Dieses Beispiel gibt einhundert Goldstücke pro Artikel.

    In der sellItems()-Funktion, geben Sie local totalSell = playerItems.Value * 100 ein


    local function sellItems(playerItems, playerGold)
    -- Hält fest, wie viele Artikel der Spieler hat, und multipliziert dies mit dem Wert des Artikels.
    local totalSell = playerItems.Value * 100
    end
  3. Typ playerGold.Value += totalSell um das Gold für die Artikel an ihr aktuelles Gold anzufügen.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- Füge hinzu, wie viel der Spieler mit seinem Geld verdient
    playerGold.Value += totalSell
    end
  4. Typ playerItems.Value = 0 .Dies setzt die Gegenstände eines Spieler:inauf 0 zurück.Wenn die Gegenstände eines Spieler:innicht auf 0 zurückgesetzt sind, gibt das Skript den Spielern weiterhin Gold, ohne zu stoppen.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. In der onTouch()-Funktion, unter der zweiten if-Anweisung , rufe die sellItems()-Funktion auf.Geben Sie die Parameter, playerItems und playerGold ein, damit sie geändert werden können.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Holt sich die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Holt die Gegenstände und das Geld des Spieler:in
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. Spiele dein Projekt; überprüfe, dass jedes Mal, wenn ein Spieler auf die Plattform tritt, sein Gold erhöht wird und Gegenstände auf 0 gesetzt werden.

Problemlösungstipps

An diesem Punkt funktioniert der Verkauf von Artikeln nicht wie beabsichtigt, versuchen Sie eines der folgenden Optionen.

  • sellItems() wird in der zweiten aussage aufgerufen, die die gegenstände des spieler:inüberprüft.
  • Jeder IntValue, wie playerItems, verwendet .Value am Ende, wenn du eine Änderung daran vornimmst. Der Wert wird immer großgeschrieben.
  • sellPart.Touched:Connect(onTouch) wird am unteren rand des skript, das. pl: die skriptseingegeben.
  • sellItems(playerItems, playerGold) wird vor dem ende der if humanoid dann-anweisung eingegeben.