Vendere oggetti

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

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.

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

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

  3. In SellScript, type local sellPart = script.Parent to get the SellPlatform part.


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

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


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Per 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)
  3. 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 denaro
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Nella 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 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 vendPart.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. 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.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 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

  1. 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à oro
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. 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 * 100
    end
  3. Digitare 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 denaro
    playerGold.Value += totalSell
    end
  4. Digita 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 * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. Nella 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 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 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.