Beli perbaikan

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

Ini membawa kita ke tahap terakhir dari loop permainan - membeli peningkatan.Dengan membiarkan pemain membeli peningkatan yang meningkatkan ukuran tas barang mereka, mereka dapat memanen lebih banyak barang per perjalanan dan mendapatkan lebih banyak emas.

Buat belanja

Setiap toko akan memiliki tombol yang diklik pemain untuk membeli tas barang lebih besar.Toko itu sendiri akan menjadi bagian dengan SurfaceGUI, item yang memungkinkan teks ditulis di bagian.

Buat tanda

  1. Di Ruang Kerja, buat model baru bernama Toko.

  2. Di Toko, buat bagian blok baru bernama Tombol Beli.

  3. Di Tombol Beli, tambahkan GUI Surface baru dengan mengklik + dan menggulir ke GUI.

  4. Di GUI Permukaan, tambahkan Label Teks baru bernama BuyText. Label kecil akan muncul di suatu tempat di bagian.

  5. Tergantung pada bagaimana bagian dibuat, label bisa berada di tempat lain.Jika Anda tidak melihat teks di sisi yang Anda inginkan, masuk ke SurfaceGUI dan temukan properti Wajah.Ubah properti itu sampai Anda melihat label teks.

Mengubah teks tanda

Saat ini, Label Teks benar-benar kecil dan sulit bagi pemain untuk melihatnya. Perlu diperluas.

  1. Di properti BuyText, klik panah di sebelah Ukuran . Ubah Offset untuk X (kiri dan kanan) dan Y (atas dan bawah) menjadi 0.

  2. Ubah skala X dan Y menjadi 0,5 untuk membuat kotak.

  3. Gulir ke atas dalam properti Label Teks dan klik panah kiri dari Titik Anchor .Ketikkan 0.5 untuk X dan Y.Ini memindahkan bagian label Anda keluar dari pandangan tetapi Anda akan menempatkannya dengan benar berikutnya.

  4. Gulir ke bawah dalam properti dan buka Posisi . Ubah skala X dan Y ke 0,5 sehingga kotak berada di tengah.

  5. Di properti BuyText, gulir ke bawah dan ubah Teks menjadi sesuatu yang deskriptif. kejadian: "Buy Larger Bag: 100 gold" .

  6. Periksa TextScaled untuk menjadi di . Ini secara otomatis membesarkan teks Anda sehingga sesuai dengan kotak.

Tambahkan detektor klik

Pemain akan membeli barang dengan mengklik toko daripada hanya menyentuhnya.Skrip akan menggunakan detektor klik untuk memberi tahu apakah pemain telah mengklik tanda toko. Detektor Klik adalah objek yang memungkinkan pengguna untuk berinteraksi dengan sesuatu di lingkungan, seperti membuka pintu.

  1. Di Tombol Beli, tambahkan Detektor Klik.

  2. Di Tombol Beli, tambahkan skrip baru bernama BuyScript dan berikan komentar deskriptif.

  3. Di BuyScript, buat variabel untuk menyimpan bagian tombol dan klik detektor.


    -- Biarkan pemain mengklik tombol untuk membeli upgrade yang meningkatkan Spasi
    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
  4. Buat fungsi baru bernama giveUpgrade() yang mendapatkan parameter bernama player .Fungsi akan meningkatkan ruang pemain setiap kali mereka mengklik tombol.


    local buyButton = script.Parent
    local clickDetector = buyButton.ClickDetector
    local function giveUpgrade(player)
    end
  5. Setelah fungsi, ketikkan peristiwa klik detektor MouseClick ke fungsi giveUpgrade().


    local function giveUpgrade(player)
    end
    clickDetector.MouseClick:Connect(giveUpgrade)
  6. Tambahkan pernyataan cetak di giveUpgrade() untuk menguji fungsi.


    local function giveUpgrade(player)
    print("Someone clicked the button.")
    end
  7. Mainkan proyek Anda. Klik tombol dan periksa apakah Anda melihat teks di jendela Output.

Tip pemecahan masalah

Masalah: Anda tidak dapat mengklik tombol atau kursor mouse tidak muncul di tombol.

  • Pastikan bahwa objek ClickDetector adalah anak dari bagian yang Anda coba klik.
  • Periksa apakah karakter Anda cukup dekat dengan tombol. Atau, pastikan alat tidak dilengkapi.

Beli perbaikan

Dengan tombol yang berfungsi, saatnya untuk menambahkan kode ke giveUpgrade untuk menghapus emas pemain dalam pertukaran untuk tas yang ditingkatkan.

Tambahkan variabel peningkatan

Setiap peningkatan akan memiliki dua variabel: biaya upgrade dan berapa banyak ruang yang dimilikinya.

  1. Di BuyScript, di bawah local clickDetector, buat dua variabel:

    • newSpace : Berapa banyak ruang yang ditambahkan peningkatan saat dibeli.
    • upgradeCost : Biaya upgrade tunggal

    -- Variabel untuk upgrade
    local newSpaces = 10
    local upgradeCost = 100

Berikan peningkatan

Sebelum menjual pemutar upgrade, Anda perlu memeriksa apakah mereka memiliki cukup uang. Jika mereka melakukannya, Anda akan menambahkan ke jumlah maksimum ruang mereka.

  1. Di giveUpgrade() , ketikkan berikut untuk mendapatkan statistik pemimpin pemain sehingga Anda dapat mengakses variabel emas dan ruang mereka.


    local function giveUpgrade(player)
    print("Someone clicked the button")
    -- Dapatkan papan peringkat pemain untuk mendapatkan IntValues lain
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- Mendapatkan uang dan ruang pemain untuk membuat perubahan
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    end
    end
  2. Setelah menulis variabel untuk ruang, buat pernyataan if untuk jika nilai playerGold lebih atau sama dengan biaya upgrade.


    local function giveUpgrade(player)
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    local playerGold = playerStats:FindFirstChild("Gold")
    local playerSpaces = playerStats:FindFirstChild("Spaces")
    -- Memeriksa apakah pemain memiliki cukup uang untuk membeli upgrade
    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    end
    end
    end
  3. Dalam pernyataan if, kurangi biaya upgrade dari emas pemain.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    -- Kurangi biaya item dari uang pemain
    playerGold.Value -= upgradeCost
    end
  4. Di baris berikutnya, tambahkan jumlah ruang saat ini pemain bersama dengan ruang baru yang diberikan per upgrade.


    if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
    playerGold.Value -= upgradeCost
    playerSpaces.Value += newSpaces
    end
  5. Mainkan proyek Anda dan periksa papan peringkat untuk memeriksa apakah peningkatan ruang berfungsi.

Tip pemecahan masalah

Pada titik ini, peningkatan tidak berfungsi seperti yang diinginkan, coba salah satu dari berikut ini.

  • Pastikan apa pun di dari memiliki kutipan di kedua sisi, seperti .
  • Periksa bahwa setiap string di FindFirstChild persis sama dengan nama IntValue tersebut di skrip PlayerSetup.Sebagai contoh, jika kode Anda menggunakan Ruby sebagai uang, Anda harus memiliki FindFirstChild("Rubies") .
  • Pastikan bahwa giveUpgrade() di atas clickDetector.MouseClick.

Selesaikan naskah BuyScript

Versi selesai dari skrip dapat di referensikan di bawah ini.


-- Biarkan pemain mengklik tombol untuk membeli upgrade yang meningkatkan MaxSpaces
local buyButton = script.Parent
local clickDetector = buyButton.ClickDetector
-- Variabel untuk upgrade
local newSpaces = 10
local upgradeCost = 100
local function giveUpgrade(player)
print("Someone clicked the button")
-- Dapatkan papan peringkat pemain untuk mendapatkan IntValues lain
local playerStats = player:FindFirstChild("leaderstats")
if playerStats then
-- Mendapatkan uang dan ruang pemain untuk membuat perubahan
local playerGold = playerStats:FindFirstChild("Gold")
local playerSpaces = playerStats:FindFirstChild("Spaces")
-- Memeriksa apakah pemain memiliki cukup uang untuk membeli upgrade
if playerGold and playerSpaces and playerGold.Value >= upgradeCost then
print("Player can buy item")
-- Kurangi biaya item dari uang pemain
playerGold.Value -= upgradeCost
playerSpaces.Value += newSpaces
end
end
end
clickDetector.MouseClick:Connect(giveUpgrade)