Eşyaları Satmak

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

Oyunun bir sonraki aşamasında, oyuncuların çantasında daha fazla alan satın alabilmeleri için altın satmaları gerekir.

Bir Satış Platformu Oluşturulması

Oyuncular, çantadaki her öğey için altın veren bir platforma adım atlayarak eşyalarını satacak.

Platform'u ayarlama

Platform herhangi bir parça olabilir ve satışı işleyen bir senaryo içerecektir.

  1. SellPlatform adında yeni bir parça oluşturun. Tasarımınızı deneyiminizin temasına uygun hale getirin.

  2. SellPlatform'da, SellScript adında yeni bir senaryo oluşturun ve bir yorum ekleyin.

  3. SellScript'te, local sellPart = script.Parent


    -- Bir oyuncunun tüm eşyalarını satar ve onlara altın verir
    local sellPart = script.Parent

Dokunmatik Etkinlikleri Ele Alma

platformkullanmak için, kodun herhangi bir oyuncunun dokunup dokunmadığını kontrol etmesi için bir işleve ihtiyacı vardır.

  1. Bir oyuncunun platforma dokunup dokunmadığını kontrol eden onTouch() adlı bir işlev oluşturun.


    local function onTouch(partTouched)
    local character = partTouched.Parent
    end
  2. liderlik tablosutablosundaki herhangi bir istatistik değiştirmek için, özellik kontrol eden oyuncuyu bilmesi gerekir. ifadesinde, GetPlayerFromCharacter() işlevini kullanarak bir oyuncu bulun.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
  3. Sonraki satırda, oyuncunun lider istatistikleri kutusunu alın.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- oyunculiderlik tablosualır. Öğeleri ve para almak için gereklidir
    local playerStats = player:FindFirstChild("leaderstats")
    end
  4. Sonraki satırda, oyuncunun para ve eşyalarını almak için değişkenler oluştur.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- oyunculiderlik tablosualır. Öğeleri ve para almak için gereklidir
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- oyuncueşyalarını ve parasını alır
    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    end
    end
  5. Çalışmanızı test etmek için, bir oyuncu sellPart'a dokunursa çalıştırılan bir print ifadesi ekleyin.


    local playerItems = playerStats:FindFirstChild("Items")
    local playerGold = playerStats:FindFirstChild("Gold")
    print("A player touched sellPart")
  6. Script'in altındaki onTouch() 'i satPart'ın dokunulduğu etkinliği satmak için bağlayı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. Öğeleri ve para almak için gereklidir
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- oyuncueşyalarını ve parası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 oynatın ve satışPart'a adım atın; çıktı Penceresindeki mesajı görün "A Player touched sellPart" .

Eşyaları Satmak

Bu deneyimde, bir oyuncu her öğe için 100 Altın alacak. Para aldıktan sonra, öğeleri 0 olarak yeniden ayarlanacak ve oyuncular dünyayı daha fazla öğe için keşfetmeye izin verecek.

Yeni Bir Satış Fonksiyonu Kodlaması

  1. Değişkenler altında, iki parametreli bir işlev oluşturun, bunlar sellItems() ve playerItems olarak isimlendirilmiştir.


    -- 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 'in değerini al ve altın başına almaları gereken miktarı ile çarpan. Bu örnek, her bir öğe için yüz altın parçası verir.

    In the sellItems() function, type local totalSell = playerItems.Value * 100


    local function sellItems(playerItems, playerGold)
    -- Oyuncunun kaç tane eşyası olduğunu alır ve değerine göre çoğaltır.
    local totalSell = playerItems.Value * 100
    end
  3. playerGold.Value+총Sell yazın, böylece altın öğelerin mevcut altına eklenir.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    -- Oyuncunun para kazandığını ne kadar ekleyin
    playerGold.Value += totalSell
    end
  4. Type playerItems.Value = 0 . Bu, bir oyuncunun öğelerini 0'a yeniden ayarlar. Eğer bir oyuncunun öğeleri 0'a yeniden ayarlanmazsa, kod her oyuncuya altın vermeye devam eder.


    local function sellItems(playerItems, playerGold)
    local totalSell = playerItems.Value * 100
    playerGold.Value += totalSell
    playerItems.Value = 0
    end
  5. In the onTouch() function, ikinci if statement under the second if statement , call the 1> sellItems()1> function. Pass in the parameters, 4> playerItems4> and 7> playerGold7> so they can be changed.


    local Players = game:GetService("Players")
    local player = Players:GetPlayerFromCharacter(character)
    if player then
    -- oyunculiderlik tablosualır. Öğeleri ve para almak için gereklidir
    local playerStats = player:FindFirstChild("leaderstats")
    if playerStats then
    -- oyuncueşyalarını ve parası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. Projenizi oynatın; herhangi bir oyuncu platforma adım attığında, altınlarının artmasını ve öğelerinin 0 olarak ayarlandığını kontrol edin.

Hata ayıklama ipuçları

Bu noktada, öğeleri satmak istediğiniz gibi çalışmaz, aşağıdaki birini deneyin.

  • sellItems() ifadesi oyuncu'ın öğelerini kontrol eden ifade ikinci sırada çağrılır.
  • PlayerItems gibi herhangi bir IntValue, değişiklik yaparsanız sonunda .Value'yi kullanır. Değer her zaman başlık olarak yazılır.
  • sellPart.Touched:Connect(onTouch) kullanıcının sağından aşağıdaki yerlerde yazılmıştır.
  • sellItems(playerItems, playerGold) ifadelerinin sonundan önce yazılır.