Eşyaları sat

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

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.

  1. Satış Platformu adlı yeni bir parça oluşturun. Deneyiminizin temasına uyacak şekilde özelleştirin.

  2. Satış Platformunda, SellScript adlı yeni bir senaryo oluştur ve bir yorum ekleyin.

  3. 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 verir
    local 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.

  1. Bir oyuncunun platforma dokunduğunu kontrol eden onTouch() adlı bir işlev oluşturun.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. liderlik 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)
  3. 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 gereklidir
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Sonraki 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 gereklidir
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- oyuncueşyalarını ve paralarını alır
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Ç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")
  6. 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.Parent
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- oyunculiderlik tablosualır. Eşyaları ve paraı almak için gereklidir
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- oyuncueşyalarını ve paralarını alır
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
    end
    end
    end
    sellPart.Touched:Connect(onTouch)
  7. 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

  1. 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 verir
    local sellPart = script.Parent
    local function sellItems(playerItems, playerGold)
    end
    local function onTouch(partTouched)
  2. 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 * 100
    end
  3. Altı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 ekleyin
    playerGold.Value += totalSell
    end
  4. Tü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 * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. onTouch() 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 gereklidir
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- oyuncueşyalarını ve paralarını alır
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    if playerItems and playerGold then
    sellItems(playerItems, playerGold)
    end
    end
    end
  6. Projeni 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.