
Untuk tahap berikutnya dari lingkaran permainan, pemain perlu menjual barang-barang mereka untuk emas agar mereka dapat membeli lebih banyak ruang di ransel mereka.
Buat platform jual
Pemain akan menjual barang-barang mereka dengan melangkah ke platform yang memberi mereka emas untuk setiap barang di tas mereka.
Siapkan platform
Platform bisa menjadi bagian apa pun dan akan termasuk skrip yang menangani penjualan.
Buat bagian baru bernama SellPlatform. Sesuaikan agar sesuai dengan tema pengalaman Anda.
Di SellPlatform, buat skrip baru bernama SellScript dan tambahkan komentar.
Di SellScript, ketik local sellPart = script.Parent untuk mendapatkan bagian SellPlatform.
-- Menjual semua barang pemain dan memberi mereka emaslocal sellPart = script.Parent
Tangani peristiwa sentuhan
Untuk menggunakan platform, skrip membutuhkan fungsi untuk memeriksa apakah ada pemain yang menyentuhnya.
Buat fungsi bernama onTouch() yang memeriksa apakah pemain menyentuh platform.
local function onTouch(partTouched)local character = partTouched.ParentendUntuk mengubah salah satu statistik di papan peringkat, skrip perlu tahu pemain mana yang mengendalikan karakter.Dalam pernyataan if, gunakan fungsi GetPlayerFromCharacter() untuk menemukan pemain.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)Di baris berikutnya, dapatkan kontainer statistik pemimpin pemain itu.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Mendapatkan papan peringkat pemain. Diperlukan untuk mendapatkan barang dan uanglocal playerStats = player:FindFirstChild("leaderstats")endDi baris berikutnya, buat variabel untuk mendapatkan uang dan barang pemain.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Mendapatkan papan peringkat pemain. Diperlukan untuk mendapatkan barang dan uanglocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Mendapatkan barang dan uang pemainlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendUntuk memeriksa pekerjaan Anda, tambahkan pernyataan cetak yang akan dijalankan jika pemain menyentuh sellPart.
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")Di bagian bawah skrip, hubungkan onTouch() ke acara Touched dari sellPart.
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- Mendapatkan papan peringkat pemain. Diperlukan untuk mendapatkan barang dan uanglocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Mendapatkan barang dan uang pemainlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)Mainkan proyek Anda dan melangkah di atas sellPart; Anda harus melihat pesan "A Player touched sellPart" di jendela Output.
Jual barang
Dalam pengalaman ini, seorang pemain akan mendapatkan 100 Emas untuk setiap item.Setelah mendapatkan uang, barang-barang mereka akan diatur ulang ke 0, membiarkan pemain menjelajahi dunia untuk lebih banyak barang.
Kode fungsi jual baru
Di bawah variabel, buat fungsi bernama sellItems() yang mendapatkan dua parameter bernama playerItems dan playerGold .
-- Menjual semua barang pemain dan memberi mereka emaslocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)Untuk memberi pemain jumlah emas yang tepat, ambil nilai dari playerItems dan kalikan dengan jumlah emas yang harus mereka terima per item.Contoh ini memberikan seratus keping emas per item.
Dalam fungsi sellItems() , ketik local totalSell = playerItems.Value * 100
local function sellItems(playerItems, playerGold)-- Mendapatkan berapa banyak item yang dimiliki pemain dan mengalikannya dengan nilai item.local totalSell = playerItems.Value * 100endKetik playerGold.Value += totalSell untuk menambahkan emas untuk item ke emas saat ini mereka.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- Tambahkan berapa banyak pemain mendapatkan uang ke uang merekaplayerGold.Value += totalSellendKetik playerItems.Value = 0 .Ini mengembalikan item pemain ke 0.Jika item pemain tidak dikembalikan ke 0, skrip akan terus memberikan emas kepada pemain tanpa berhenti.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endDalam fungsi onTouch() , di bawah pernyataan kedua , panggil fungsi sellItems().Lewati parameter, playerItems dan playerGold sehingga mereka dapat diubah.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- Mendapatkan papan peringkat pemain. Diperlukan untuk mendapatkan barang dan uanglocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- Mendapatkan barang dan uang pemainlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendMainkan proyek Anda; periksa bahwa setiap kali pemain menginjak platform, emas mereka meningkat dan item diatur ke 0.
Tip Pemecahan Masalah
Pada titik ini, menjual item tidak berfungsi seperti yang diinginkan, coba salah satu dari berikut ini.
- sellItems() dipanggil dalam kedua jika pernyataan yang memeriksa item pemain.
- Setiap IntValue, seperti playerItems, menggunakan .Value di akhir jika Anda membuat perubahan pada itu. Nilai selalu diberi huruf besar.
- sellPart.Touched:Connect(onTouch) ditulis di bagian bawah skrip .
- sellItems(playerItems, playerGold) ditulis sebelum akhir jika humanoid maka pernyataan.