
Oyun döngüsünün bir sonraki aşaması için, oyuncuların altınları için eşyalarını satması gerekiyor, böylece daha fazla alan satın alabilirler.
Satış platformu oluştur
Oyuncular, çantalarındaki her bir öğe için onlara altın veren bir platforma adım atarak eşyalarını satacaklar.
platformkurun
Platform herhangi bir parça olabilir ve satışı yöneten bir senaryo içerecektir.
Satış Platformu adlı yeni bir parça oluşturun. Deneyiminizin temasına uyacak şekilde özelleştirin.
Satış Platformunda, SellScript adlı yeni bir senaryo oluştur ve bir yorum ekleyin.
SellScript'te, SellPlatform parçasını almak için local sellPart = script.Parent yazın.
-- Bir oyuncunun tüm eşyalarını satar ve onlara altın verirlocal sellPart = script.Parent
Dokunma olaylarını işle
platformkullanmak için, senaryonun herhangi bir oyuncunun dokunduğunu kontrol etmek için bir işleve ihtiyacı vardır.
Bir oyuncunun platforma dokunduğunu kontrol eden onTouch() adlı bir işlev oluşturun.
local function onTouch(partTouched)local character = partTouched.Parentendliderlik tablosuistatistiklerden herhangi birini değiştirmek için, senaryonun hangi oyuncunun karakteri kontrol ettiğini bilmesi gerekir.if ifadesinde, bir oyuncu bulmak için GetPlayerFromCharacter() işlevini kullanın.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)Sonraki satırda, o oyuncunun liderlik istatistikleri kutusunu alın.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- oyunculiderlik tablosualır. Eşyaları ve paraı almak için gereklidirlocal playerStats = player:FindFirstChild("leaderstats")endSonraki satırda, oyuncunun parasını ve eşyalarını almak için değişkenler oluşturun.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- oyunculiderlik tablosualır. Eşyaları ve paraı almak için gereklidirlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- oyuncueşyalarını ve paralarını alırlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")endendÇalışmanızı kontrol etmek için, bir oyuncu satışParçasına dokunduğunda çalışacak bir yazdırma ifadesi ekleyin.
local playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")Senaryonun en altında, satışParçası'nın dokunulmuş etkinliğini satmak için onTouch() 'ye bağlanın.
local Players = game:GetService("Players")local function onTouch(partTouched)local character = partTouched.Parentlocal player = Players:GetPlayerFromCharacter(character)if player then-- oyunculiderlik tablosualır. Eşyaları ve paraı almak için gereklidirlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- oyuncueşyalarını ve paralarını alırlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")print("A player touched sellPart")endendendsellPart.Touched:Connect(onTouch)Projenizi oynayın ve satışParçasına basın; çıktı penceresinde mesajı "A Player touched sellPart" görmelisiniz.
Eşyaları sat
Bu deneyimde, bir oyuncu her bir öğe için 100 Altın alacak.Para aldıktan sonra, eşyaları 0'a sıfırlanacak ve oyuncuların dünyayı daha fazla eşya için keşfetmesine izin verilecek.
Yeni bir satış işlevi kodlayın
Değişkenlerin altında, sellItems() ve playerItems ve playerGold adlı iki parametre alan bir işlev oluşturun.
-- Bir oyuncunun tüm eşyalarını satar ve onlara altın verirlocal sellPart = script.Parentlocal function sellItems(playerItems, playerGold)endlocal function onTouch(partTouched)Oyunculara doğru miktarda altın vermek için, playerItems değerini alın ve her bir öğe için alacakları altın miktarı ile çarptırın.Bu örnek, her bir öğe için yüz altın parça verir.
sellItems() fonksiyonunda, local totalSell = playerItems.Value * 100 yaz
local function sellItems(playerItems, playerGold)-- Oyuncunun kaç tane eşyası olduğunu ve bunların değerini çarptırır.local totalSell = playerItems.Value * 100endAltını eşyalara mevcut altınlarına eklemek için playerGold.Value += totalSell tipi ekleyin.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100-- Oyuncunun kazandığı paraya ne kadar ekleyinplayerGold.Value += totalSellendTür playerItems.Value = 0 .Bu, bir oyuncunun eşyalarını 0'a geri ayarlar.Bir oyuncunun eşyaları 0'a sıfırlanmazsa, senaryo oyunculara duraksamadan altın vermeyi sürdürecektir.
local function sellItems(playerItems, playerGold)local totalSell = playerItems.Value * 100playerGold.Value += totalSellplayerItems.Value = 0endonTouch() işlevinde, ikinci if ifadesinin altında , sellItems() işlevini çağırın.Değiştirilebilmeleri için parametreleri geçin, playerItems ve playerGold böylece değiştirilebilirler.
local Players = game:GetService("Players")local player = Players:GetPlayerFromCharacter(character)if player then-- oyunculiderlik tablosualır. Eşyaları ve paraı almak için gereklidirlocal playerStats = player:FindFirstChild("leaderstats")if playerStats then-- oyuncueşyalarını ve paralarını alırlocal playerItems = playerStats:FindFirstChild("Items")local playerGold = playerStats:FindFirstChild("Gold")if playerItems and playerGold thensellItems(playerItems, playerGold)endendendProjeni oyna; bir oyuncu platforma adım attığında altınının arttığını ve öğelerin 0 olarak ayarlandığını kontrol et.
Sorun Giderme İpuçları
Bu noktada, öğeler satışı planlandığı gibi çalışmıyor, aşağıdakilerden birini deneyin.
- sellItems() oyuncunun öğelerini kontrol eden ikinci if ifadesi çağrılır, oyuncunun öğelerini kontrol eden
- OyuncuÖğeleri gibi herhangi bir IntValue, sonunda .Value'yi kullanır ve değişiklik yapıyorsanız değer daima büyük harfli olur.
- sellPart.Touched:Connect(onTouch) kodu, senaryonun dibine yazılır.
- sellItems(playerItems, playerGold) if insanoid sonra ifadesinin sonundan önce yazılır.