
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.
Erstelle ein neues Teil mit dem Namen SellPlatform. Passen Sie es an, um dem Thema Ihrer Erlebnisentsprechen zu können.
Erstelle in der SellPlatform ein neues Skript mit dem Namen SellScript und füge einen Kommentar postenhinzu.
In SellScript geben Sie local sellPart = script.Parent ein, um den SellPlatform-Teil zu erhalten.
-- Verkauft alle Gegenstände eines Spieler:inund gibt ihm Goldlocal 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.
Erstelle eine Funktion namens onTouch(), die überprüft, ob ein Spieler die Plattform berührt.
local function onTouch(partTouched)local character = partTouched.ParentendUm 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)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 erhaltenlocal playerStats = player:FindFirstChild("leaderstats")endErstelle 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 erhaltenlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Holt die Gegenstände und das Geld des Spieler:inlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendUm 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")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.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Holt sich die Bestenlistedes Spieler:in. Benötigt, um Gegenstände und Geld zu erhaltenlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Holt die Gegenstände und das Geld des Spieler:inlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)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
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 Goldlocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)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 * 100endTyp 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 verdientplayerGold.Value += totalSellendTyp 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 * 100playerGold.Value += totalSellplayerItems.Value = 0endIn 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 erhaltenlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Holt die Gegenstände und das Geld des Spieler:inlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendSpiele 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.