Items 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 Phase des Spielzyklus müssen Spieler ihre Gegenstände für Gold verkaufen, damit sie mehr Platz in ihren Rucksäcken kaufen können.

Erstellen einer Verkaufsplattform

Spieler verkaufen ihre Gegenstände, indem sie auf eine Plattform steigen, die ihnen Gold für jeden Gegenstand in ihrem Bag gibt.

Die Plattform einrichten

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

  1. Erstellen Sie ein neues Teil namens SellPlatform. Passen Sie es an, um das Thema Ihres Erlebnisses anzupassen.

  2. In SellPlatform erstellen Sie ein neues Skript namens SellScript und fügen Sie einen Kommentar postenhinzu.

  3. In SellScript, type local sellPart = script.Parent to get the SellPlatform part.


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

Touch-Ereignisse verwalten

Um die Plattform zu verwenden, braucht das Skript eine Funktion, um zu überprüfen, ob irgendwelche Spieler sie berühren.

  1. Erstellen Sie eine Funktion namens onTouch(), die prüft, ob ein Spieler die Plattform berührt.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Um eine der Statistiken auf der Bestenliste zu ändern, muss das Skript wissen, welcher Spieler den Charakter kontrolliert. In der if-Anweisung verwenden Sie die Funktion GetPlayerFromCharacter(), um einen Spieler:inzu finden.


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


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Bekommt die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. In der nächsten Zeile erstellen Sie 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
    -- Bekommt die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Holen Sie sich die Gegenstände und 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 ein Print- Statement hinzu, das ausgeführt wird, wenn ein Spieler touch sellPart.


    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 Verkaufen-Ereignis von Touched.


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Bekommt die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Holen Sie sich die Gegenstände und 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. Spielen Sie Ihr Projekt und treten Sie auf sellPart; Sie sollten die Nachricht "A Player touched sellPart" im Ausgabe-Fenster sehen.

Items verkaufen

In dieser Erlebniserhält ein Spieler 100 Gold für jeden Artikel. Nach dem Erhalt von Geld werden ihre Gegenstände auf 0 zurückgesetzt, damit Spieler die Welt erkunden können, um mehr Gegenstände zu entdecken.

Eine neue Verkaufsfunktion coded

  1. Unter den Variablen erstellen Sie eine Funktion namens sellItems(), die zwei Argumente namens playerItems und playerGold hat.


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

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


    local function sellItems(playerItems, playerGold)
    -- Bekommt, wie viele Gegenstände der Spieler hat, und multipliziert diesen Wert pro Gegenstand.
    local totalSell = playerItems.Value * 100
    end
  3. Geben Sie playerGold.Value += totalSell ein, um das Gold für die Gegenstände in ihr aktuelles Gold einzufü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. Geben Sie 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 werden, behält das Skript die Spieler mit 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, rufen Sie die sellItems() Funktion auf. Passen Sie in den Parametern, 2>playerItems2> und 5>playerGold5>, so dass sie geändert werden können.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Bekommt die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhalten
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Holen Sie sich die Gegenstände und 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. Spielen Sie Ihr Projekt; überprüfen Sie, dass immer, wenn ein Spieler auf die Plattform tritt, sein Gold ansteigt und seine Gegenstände auf 0 eingestellt sind.

Troubleshooting-Tipps

An diesem Punkt funktioniert das Verkaufen von Artikeln nicht wie gedacht, versuchen Sie es mit einer der folgenden Optionen.

  • sellItems() wird in der zweiten Zeile aufgerufen, wenn die Spieler:inüberprüft werden.
  • Jeder IntValue, wie playerItems, verwendet .Value am Ende, wenn Sie eine Änderung vornehmen. Der Wert wird immer Groß geschrieben.
  • sellPart.Touched:Connect(onTouch) wird am unteren Rand des Skripts Skript, das. PL: die Skripts.
  • sellItems(playerItems, playerGold) wird vor dem Ende der if-Humanoid-Anweisung geschrieben.