Vendi oggetti

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

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.

  1. Crea una nuova parte chiamata SellPlatform. Personalizzala per adattarsi al tema della tua esperienza.

  2. In SellPlatform, crea uno script nuovo chiamato SellScript e aggiungi un Commentare.

  3. In SellScript, digita local sellPart = script.Parent per ottenere la parte della piattaforma di vendita.


    -- Vende tutti gli oggetti di un Giocatoree gli dà oro
    local 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.

  1. Crea una funzione chiamata onTouch() che controlla se un giocatore sta toccando la Piattaforma.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Per 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)
  3. 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 denaro
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Nella 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 denaro
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Ottiene gli oggetti e i soldi del Giocatore
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Per 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")
  6. 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.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Ottiene la Classificadel Giocatore. Necessario per ottenere oggetti e denaro
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Ottiene gli oggetti e i soldi del Giocatore
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. 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

  1. 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à oro
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. 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 * 100
    end
  3. Digita 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 denaro
    playerGold.Value += totalSell
    end
  4. Tipo 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 * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. Nella 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 denaro
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Ottiene gli oggetti e i soldi del Giocatore
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. Gioca 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.