Menjual Barang

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Untuk tahap berikutnya dari game loop, pemain perlu menjual barang mereka untuk emas untuk memungkinkan mereka untuk membeli lebih banyak ruang di ransel mereka.

Menciptakan Platform Penjualan

Pemain akan menjual item mereka dengan menginjak platform yang memberi mereka emas untuk setiap item di tas mereka.

Mengatur Platform

Platform dapat menjadi bagian mana pun dan akan mencakup skrip yang menangani penjualan.

  1. Buat bagian baru bernama SellPlatform. Sesuaikan agar sesuai dengan tema pengalaman Anda.

  2. Di SellPlatform, buat naskah baru bernama SellScript dan tambahkan komentar.

  3. Di SellScript, ketik local sellPart = script.Parent untuk mendapatkan bagian SellPlatform.


    -- Menjual semua item pemain dan memberi mereka emas
    local sellPart = script.Parent

Mengatasi Acara Sentuh

Untuk menggunakan platform, skrip memerlukan fungsi untuk memeriksa apakah pemain menyentuhnya.

  1. Buat fungsi bernama onTouch() yang memeriksa apakah pemain menyentuh platform.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. Untuk mengubah salah satu dari statistik di papan peringkat, script perlu tahu pemain mana yang mengendalikan karakter. Dalam if statement, gunakan fungsi GetPlayerFromCharacter() untuk menemukan pemain.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. Pada baris berikutnya, dapatkan wadah statistik pemain itu.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Mendapatkan papan peringkat pemain. Diperlukan untuk mendapatkan item dan uang
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Pada baris berikutnya, buat variabel untuk mendapatkan uang dan item pemain.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Mendapatkan papan peringkat pemain. Diperlukan untuk mendapatkan item dan uang
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Mendapatkan barang dan uang pemain
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Untuk memeriksa pekerjaan Anda, tambahkan pernyataan cetak yang akan dijalankan jika seorang pemain menyentuh sellPart.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. Pada bagian bawah script, hubungkan onTouch() untuk menjual acara Touched part.


    local Players = game:GetService("Players")
    local function onTouch(partTouched)
    local character = partTouched.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Mendapatkan papan peringkat pemain. Diperlukan untuk mendapatkan item dan uang
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Mendapatkan barang dan uang pemain
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. Mainkan proyek Anda dan masuki sellPart; Anda seharusnya melihat pesan "A Player touched sellPart" di Jendela Keluar.

Menjual Barang

Dalam pengalaman ini, seorang pemain akan mendapatkan 100 Emas untuk setiap item. Setelah mendapatkan uang, item mereka akan diatur kembali menjadi 0, memungkinkan pemain untuk menjelajah dunia untuk lebih banyak item.

Mengkode Fungsi Jual Baru

  1. Di bawah variabel, buat fungsi bernama sellItems() yang mendapatkan dua parameter bernama playerItems dan playerGold .


    -- Menjual semua item pemain dan memberi mereka emas
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. Untuk memberikan pemain jumlah emas yang benar, ambil nilai dari playerItems dan gandakan jumlah emas yang mereka terima per item. Contoh ini memberikan seratus emas per item.

    Dalam fungsi sellItems(), tulis local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- Mendapatkan berapa banyak item yang dimiliki pemain dan menggandakannya dengan nilai setiap item.
    local totalSell = playerItems.Value * 100
    end
  3. Ketik playerGold.Value += totalSell untuk menambahkan emas untuk item ke emas mereka saat ini.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- Tambahkan berapa banyak pemain mendapatkan uang mereka
    playerGold.Value += totalSell
    end
  4. Ketik playerItems.Value = 0 . Ini mengembalikan item pemain ke 0. Jika item pemain tidak diatur kembali ke 0, script akan terus memberikan emas kepada pemain tanpa berhenti.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. Dalam fungsi onTouch(), panggil fungsi under the second if statement , call the sellItems() function. Pass in the parameters, 1> playerItems1> dan 4> playerGold4> sehingga mereka dapat diubah.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- Mendapatkan papan peringkat pemain. Diperlukan untuk mendapatkan item dan uang
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Mendapatkan barang dan uang pemain
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. Mainkan proyek Anda; periksa bahwa setiap kali seorang pemain menginjak platform, emas mereka meningkat dan item ditetapkan ke 0.

Tips Troubleshoot

Pada titik ini, menjual item tidak berfungsi seperti yang diharapkan, coba salah satu dari berikut.

  • sellItems() disebut dalam kedua jika pernyataan yang memeriksa item pemain.
  • Any IntValue, seperti playerItems, menggunakan .Value di akhir jika Anda melakukan perubahan pada itu.Nilai selalu diungkapkan.
  • sellPart.Touched:Connect(onTouch) ditulis di bagian bawah dari script.
  • sellItems(playerItems, playerGold) ditulis sebelum akhir dari jika humanoid kemudian pernyataan.