
Per la prossima fase del ciclo di gioco, i giocatori devono vendere i loro oggetti per oro per consentire loro di acquistare più spazio nei loro zaini.
Crea una piattaforma di Piattaforma
I giocatori venderanno i loro oggetti posizionandosi su una piattaforma che dà loro oro per ogni oggetto nella loro borsa.
Configura la Piattaforma
La piattaforma può essere qualsiasi parte e includerà uno script che gestisce la vendita.
Crea una nuova parte chiamata SellPlatform. Personalizzala per adattarsi al tema della tua esperienza.
In SellPlatform, crea uno script nuovo chiamato SellScript e aggiungi un Commentare.
In SellScript, digita local sellPart = script.Parent per ottenere la parte della piattaforma di vendita.
-- Vende tutti gli oggetti di un Giocatoree gli dà orolocal sellPart = script.Parent
Gestire gli eventi di tocco
Per utilizzare la Piattaforma, lo script ha bisogno di una funzione per controllare se qualche giocatore lo tocca.
Crea una funzione chiamata onTouch() che controlla se un giocatore sta toccando la Piattaforma.
local function onTouch(partTouched)local character = partTouched.ParentendPer modificare qualsiasi statistica sulla Classifica, lo script deve sapere quale giocatore sta controllando il personaggio.Nella dichiarazione if, utilizza la funzione GetPlayerFromCharacter() per trovare un Giocatore.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)Nella prossima linea, ottieni il contenitore leaderstats 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 le variabili per ottenere i soldi 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 sellPart.
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")Nella parte inferiore dello script, connetti il onTouch() per vendere l'evento Touched di sellPart.
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 al tuo progetto e passa su sellPart; dovresti vedere il messaggio "A Player touched sellPart" nella finestra di output.
Vendi oggetti
In questa esperienza, un giocatore otterrà 100 oro per ogni Articolo.Dopo aver ottenuto i soldi, i loro oggetti verranno ripristinati a 0, permettendo ai giocatori di esplorare il mondo per altri oggetti.
Codifica 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 gli dà orolocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)Per dare ai giocatori la giusta quantità d'oro, prendi il valore del playerItems e moltiplicalo con la quantità d'oro che dovrebbero ricevere per Articolo.Questo esempio dà cento pezzi d'oro per Articolo.
Nella funzione sellItems(), digita local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- Calcola quante unità ha il giocatore e le moltiplica con il valore dell'elemento.local totalSell = playerItems.Value * 100endDigita 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 il giocatore guadagna al suo denaroplayerGold.Value += totalSellendTipo playerItems.Value = 0 .Questo ripristina gli oggetti di un Giocatorea 0.Se gli oggetti di un Giocatorenon vengono ripristinati a 0, lo script continuerà a dare oro ai giocatori senza fermarsi.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endNella funzione , sotto la seconda if statement , chiama la funzione .Passa nei parametri, playerItems e playerGold 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 al tuo progetto; controlla che ogni volta che un giocatore si posiziona sulla Piattaforma, il suo oro aumenta e gli oggetti sono impostati a 0.
Suggerimenti per la risoluzione dei problemi
A questo punto, la vendita di oggetti non funziona come previsto, prova uno dei seguenti.
- sellItems() è chiamata nella seconda dichiarazione che controlla gli elementi del giocatore.
- Qualsiasi IntValue, come playerItems, utilizza .Value alla fine se stai apportando un cambiamento ad esso. Il valore è sempre maiuscolo.
- sellPart.Touched:Connect(onTouch) è digitato alla fine del script .
- sellItems(playerItems, playerGold) è digitato prima della fine della dichiarazione if umanoide allora.