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.
Erstellen Sie ein neues Teil namens SellPlatform. Passen Sie es an, um das Thema Ihres Erlebnisses anzupassen.
In SellPlatform erstellen Sie ein neues Skript namens SellScript und fügen Sie einen Kommentar postenhinzu.
In SellScript, type local sellPart = script.Parent to get the SellPlatform part.
-- Verkauft alle Gegenstände eines Spieler:inund gibt ihnen Goldlocal 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.
Erstellen Sie eine Funktion namens onTouch(), die prüft, ob ein Spieler die Plattform berührt.
local function onTouch(partTouched)local character = partTouched.ParentendUm 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)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 erhaltenlocal playerStats = player:FindFirstChild("leaderstats")endIn 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 erhaltenlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Holen Sie sich die Gegenstände und Geld des Spieler:inlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendUm 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")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.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Bekommt die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhaltenlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Holen Sie sich die Gegenstände und Geld des Spieler:inlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)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
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 Goldlocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)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 * 100endGeben 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 verdientplayerGold.Value += totalSellendGeben 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 * 100playerGold.Value += totalSellplayerItems.Value = 0endIn 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 erhaltenlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Holen Sie sich die Gegenstände und Geld des Spieler:inlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendSpielen 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.