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.
Buat bagian baru bernama SellPlatform. Sesuaikan agar sesuai dengan tema pengalaman Anda.
Di SellPlatform, buat naskah baru bernama SellScript dan tambahkan komentar.
Di SellScript, ketik local sellPart = script.Parent untuk mendapatkan bagian SellPlatform.
-- Menjual semua item pemain dan memberi mereka emaslocal sellPart = script.Parent
Mengatasi Acara Sentuh
Untuk menggunakan platform, skrip memerlukan fungsi untuk memeriksa apakah pemain menyentuhnya.
Buat fungsi bernama onTouch() yang memeriksa apakah pemain menyentuh platform.
local function onTouch(partTouched)local character = partTouched.ParentendUntuk 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)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 uanglocal playerStats = player:FindFirstChild("leaderstats")endPada 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 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 seorang pemain menyentuh sellPart.
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")Pada bagian bawah script, hubungkan onTouch() untuk menjual acara Touched part.
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 item 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 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
Di bawah variabel, buat fungsi bernama sellItems() yang mendapatkan dua parameter bernama playerItems dan playerGold .
-- Menjual semua item pemain dan memberi mereka emaslocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)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 * 100endKetik 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 merekaplayerGold.Value += totalSellendKetik 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 * 100playerGold.Value += totalSellplayerItems.Value = 0endDalam 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 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 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.