Per il prossimo livello della catena di raccolta dei giocatori, i giocatori devono vendere i loro oggetti per l'oro per consentire loro di acquistare più spazio nei loro zaini.
Creazione di una piattaforma di vendita
I giocatori vendranno i loro oggetti posizionandosi su una piattaforma che li dà oro per ciascun oggetto nella loro borsa.
Configurazione della piattaforma
La piattaforma può essere qualsiasi parte e includerà uno script che gestisce la vendita.
Crea una nuova parte chiamata SellPlatform. Personalizzala per adattarti al tema della tua esperienza.
In SellPlatform, crea uno script nuovo chiamato SellScript e aggiungi un Commentare.
In SellScript, type local sellPart = script.Parent to get the SellPlatform part.
-- Vende tutti gli oggetti di un Giocatoree li dà orolocal sellPart = script.Parent
Gestire gli eventi touch
Per utilizzare la Piattaforma, lo script ha bisogno di una funzione per controllare se qualsiasi giocatore lo tocca.
Crea una funzione chiamata onTouch() che controlla se un giocatore tocca la Piattaforma.
local function onTouch(partTouched)local character = partTouched.ParentendPer cambiare qualsiasi delle statistiche sulla Classifica, lo script deve sapere quale giocatore sta controllando il personaggio. Nella dichiarazione if, usa la funzione GetPlayerFromCharacter() per trovare un Giocatore.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)Nella prossima linea, ottieni il container delle statistiche leader di quel Giocatore.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Ottiene la Classificadel Giocatore. Necessario per ottenere oggetti e denarolocal playerStats = player:FindFirstChild("leaderstats")endNella prossima linea, crea variabili per ottenere il denaro e gli oggetti del Giocatore.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Ottiene la Classificadel Giocatore. Necessario per ottenere oggetti e denarolocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Ottiene gli oggetti e i soldi del Giocatorelocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendPer controllare il tuo lavoro, aggiungi una dichiarazione di stampa che verrà eseguita se un giocatore tocca vendPart.
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")Nella parte inferiore dello script, connect the onTouch() to sellPart's Touched event.
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Ottiene la Classificadel Giocatore. Necessario per ottenere oggetti e denarolocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Ottiene gli oggetti e i soldi del Giocatorelocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)Gioca il tuo progetto e passa a sellPart; dovresti vedere il messaggio "A Player touched sellPart" nella finestra di uscita.
Vendere oggetti
In questa esperienza, un giocatore otterrà 100 oro per ciascun Articolo. Dopo aver ottenuto denaro, i loro oggetti saranno impostati su 0, permettendo ai giocatori di esplorare il mondo per più oggetti.
Codice una nuova funzione di vendita
Sotto le variabili, crea una funzione chiamata sellItems() che ottiene due parametri chiamati playerItems e playerGold .
-- Vende tutti gli oggetti di un Giocatoree li dà orolocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)Per dare ai giocatori la giusta quantità di oro, prendi il valore dei playerItems e moltiplicalo per la quantità di oro che dovrebbero ricevere per Articolo. Questo esempio dà cento monete d'oro per Articolo.
Nella funzione sellItems(), digita local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- Ottiene il numero di oggetti che il giocatore ha e li moltiplica per il valore di ogni oggetto.local totalSell = playerItems.Value * 100endDigitare playerGold.Value += totalSell per aggiungere l'oro per gli oggetti al loro oro attuale.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- Aggiungi quanto guadagna il giocatore al suo denaroplayerGold.Value += totalSellendDigita playerItems.Value = 0 . Questo imposta gli oggetti di un Giocatorea 0. Se gli oggetti di un Giocatorenon sono impostati su 0, lo script continuerà a dare monete ai giocatori senza fermarsi.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endNella funzione onTouch(), sotto la seconda frase selettiva, chiama la funzione sellItems() . Passa i parametri, sellItems() e 1>playerGold1> in modo che possano essere modificati.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Ottiene la Classificadel Giocatore. Necessario per ottenere oggetti e denarolocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Ottiene gli oggetti e i soldi del Giocatorelocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendGioca il tuo progetto; controlla che ogni volta che un giocatore si mette sulla Piattaforma, il loro oro aumenta e gli oggetti sono impostati su 0.
Risolvere i problemi
A questo punto, vendere gli articoli non funziona come previsto, prova uno dei seguenti sotto.
- sellItems() è chiamato nella seconda frase se controlla gli oggetti del Giocatore.
- Qualsiasi IntValue, come playerItems, usa .Value alla fine se stai apportando una modifica. Il valore è sempre in maiuscolo.
- sellPart.Touched:Connect(onTouch) è digitato nella parte inferiore dello script.
- sellItems(playerItems, playerGold) è scritto prima del termine della dichiarazione if umanoid then.