Katılım Ödülleri özellik paketi, günlük giriş serisi ve oyun oturum süresi dahil olmak üzere belirli oyuncu aktiviteleri için oyun içi ödüller sunmak için özelleştirilebilir bir çerçevedir.Müşteri ve sunucu mantığına ek olarak, paket ödül ilerleme görüntüleme, ödül durumu ve ödül alma için varsayılan bir UI içerir.

Paketi alın
Studio'daki envanterinize Çekirdek ve Katılım Ödülleri paketlerini ekleyin, buradaki Envantere Ekle bağlantılarına tıklayarak:
Stüdyoda, Görüntüle sekmesini seçin.
Tıklayın Alet çantası .
Araç kutusu penceresinde, Envanter sekmesine tıklayın.
Özellik Paketi Çekirdeği tuşuna tıklayın, ardından Katılım Ödülleri Özelliği Paketi tuşuna.Her iki paket klasörü Gezgini penceresinde görüntülenir.
Katıkları Yeniden Yansıtılan Depoya sürükle.
Paketi başlatın
Paketleri Yeniden Yazılabilir Depoya taşımak ve deneyiminizi test etmek, EngagementRewardsExample deneyimini ReplicatedStorage.EngagementRewards.Server.Examples 'da çalıştırır.
Bu senaryo, deneyiminizde kullanılmak üzere paketin nasıl başlatılacağını gösterir, bu da birkaç modül kodunun gerektirilmesini ve sonunda oyuncuya ödül(ler) veren bir rewardClaimedHandlerFunction() fonksiyonun tanımlanmasını gerektirir.
Bu işlev bir boolean döndürmelidir.Örnek kodda, oyuncuya herhangi bir ödül vermediğini görebilirsiniz; sadece oyuncu, ödül ve miktar basılır.
Katılım Ödülleri Örneği
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EngagementRewardsConfig = require(ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig)
local EngagementRewards = require(ReplicatedStorage.EngagementRewards.Server.EngagementRewards)
local EngagementRewardsUtils = require(ReplicatedStorage.EngagementRewards.Utils.EngagementRewardsUtils)
local Types = require(ReplicatedStorage.EngagementRewards.Configs.Types)
-- Bu işleci işlevini kendi ödül alınan işleviyle değiştirin
-- Bu işlev, ödül talep edilen olayı ödül kimliği olarak geçen için ele almalıdır
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more
Bu senaryoyu doğrudan değiştirebilir veya sunucu kodu için tercih edilen konum olan ServerScriptService adresine taşıyabilirsiniz.As-is, yazılım sadece test amaçlı kullanışlıdır.
Oyuncuya ödül vermek deneyime göre değişir.Bazı deneyimlerde, bir deneyim artışı yapabilir veya oyuncunun altın sayısını sadece artırabilirsiniz.Diğer deneyimlerde, özel bir envanter sistemine sahip olabilirsiniz, diğerleri ise bir öğeyi oyuncunun sırt çantasına yerleştirebilir.Ancak tüm durumlarda, rewardClaimedHandlerFunction() ile kendi işlevinizi değiştirmeniz gerekir.
Ödüller ve kriterler ekleyin
En çok ödül özelleştirme ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig içinde gerçekleşir. Bu modül kodu ödülü ve kilidini açmak için gereken gereksinimleri tanımlar.
Tam tür deklarasyonlarını (veya yeni eklemeleri) ReplicatedStorage.EngagementRewards.Configs.Types içinde görebilirsiniz, ancak muhtemelen sadece EngagementRewardsConfig ile çalışmanız gerekir.Özellik paketi iki ödül türü içerir: Time ve Daily .
local engagementRewardsConfig: Types.EngagementRewardsConfig = {[Types.RewardType.Time] = {tabDisplayName = "Time",tabOrder = 1,description = "Keep playing to unlock rewards!",rewards = {MinutesPlayed1 = {icon = 116913478160966,displayName = "Ice Lance",requiredSecondsInGame = 1 * 5,},-- daha fazla[Types.RewardType.Daily] = {tabDisplayName = "Daily",tabOrder = 2,description = "Play daily to unlock rewards!",rewards = {DailyStreak1 = {icon = 116913478160966,displayName = "Ice Lance",requiredDaysVisitedStreak = 1,effect = Types.RewardEffect.Valuable,},-- more
Her iki ödül türü de bir simgegerektirir, bu bir görüntü için Roblox varlık kimliğidir ( değil bir çıkartma).Muhtemelen ayrıca UI'de kullanım için bir görüntü adı da istiyorsunuz.1'den başka değerler için quantity belirtin.Ayrıca seçmeli olarak bir ödülü değerli olarak belirleyebilirsiniz ( effect = Types.RewardEffect.Valuable ) buna UI'de farklı bir arka plan çerçevesi vermek için.
Değişken | Tür | Açıklama |Varsayılan | Gerekli :--- | :--- | :--- | :--- | :--- simgesi | Sayı | UI simgesi için bir Roblox varlık kimliği.| N/A | Evet displayName | Dize | UI'de kullanılan ödüller için bir isim.| The RewardId | Hiçbir miktar | Sayı | Ödüllendirilecek öğe sayısı.| 1 | Hiçbir etki | ÖdülEtkisi | UI'de kullanılacak görsel efekt.Bakın UI'yi özelleştirin .| Types.RewardEffect.Default | No
Süre ödülleri
Time ödülleri oyundaki belli bir süre sonra kilidi açılır.İhtiyaçlarınızı karşılamak için bu sayıları özelleştirin.Kolay test için küçük sayılar kullanabilir ve yayınlanmış deneyimde, 10 dakika sonra bir ödül verir, 30 dakika sonra bir diğeri, bir saat sonra bir diğeri ve böylece devam edin.
Katlanma, sayıları insanların bir saniye içinde daha kolay çalışmasını sağlar, bu yüzden iki saat boyunca, 2 * 60 * 60 yerine 7200 belirtmeyi tercih edebilirsiniz.
Değişken | Tür | Açıklama |Varsayılan | Gerekli :--- | :--- | :--- | :--- | :--- gerekliSaniyelerOyunda | Sayı | Oyuncunun ödülü kazanmak için oyunda geçirmesi gereken saniye sayısı (pozitif bir tamsayı)| Yok | Evet
Günlük ödüller
Daily ödülleri belirli bir günlük giriş sayısından sonra kilidi açılır.Örneğin, bir oyuncu ilk gününe girdiğinde, onlara üç iksir veya bir tarçın rulosu verebilirsiniz.Sonraki günlerde, daha değerli tüketim eşyalarını ödüllendirebilir, bunu yeni bir balık oltası gibi dayanıklı bir öğe takip edebilirsiniz, yedi sıradan günden sonra.
Değişken | Tür | Açıklama |Varsayılan | Gerekli :--- | :--- | :--- | :--- | :--- günleri ziyaret edildi günleri ödül kazanmak için oyuncunun deneyime bağlanması gereken gün sayısı | Sayı | Oyuncunun ödül kazanmak için deneyime bağlanması gereken gün sayısı.| Yok | Evet
Günlük ödül yapılandırma seçeneklerine ek olarak iki ek günlük ödül yapılandırma seçeneği mevcuttur: DailyRewardTabConfig .
[Types.RewardType.Daily] = {tabDisplayName = "Daily",tabOrder = 2,description = "Play daily to unlock rewards!",isHiddenOnJoin = true,isAlignedToStreakResetTime = true,rewards = {DailyStreak1 = {icon = 116913478160966,displayName = "Ice Lance",requiredDaysVisitedStreak = 1,},-- more
Değişken | Tür | Açıklama |Varsayılan | Gerekli :--- | :--- | :--- | :--- | :--- isHiddenOnJoin | Boolean | Gerçek olduğunda, deneyime katılmak sırasında otomatik olarak ödül açılmaz.Yanlış olduğunda, oyuncunun talep edecek yeni bir günlük ödülü varsa oyuna katılırken ödüller otomatik olarak görünür.| Yanlış | Hayır isAlignedToStreakResetTime | Boolean | Başlangıç gününden 24 saat sonra gün 2 için ödüller talep edilebilir.Yanlış olduğunda, gün 2 ödülleri gün 1 talep edilebilir süreden sonraki ilk gece yarısında alınabilir.Örneğin, bir oyuncu 11:00'de (23:00) giriş yapar ve gün 1 ödülünü talep ederse, gerçek ertesi gün 11:00'a kadar gün 2 ödülünü talep edemeyeceğini ifade eder.Yanlış, gün 2 ödülünü saat 12:00'de (00:00) bir saat sonra alabilecekleri anlamına gelir.3. ve sonraki gün için ödüller, önceki günün talep edilebilir süresinden 24 saat sonra daima mevcuttur.| Yanlış | Hayır
Arayüzü özelleştirin
Önceki bölümde, kullanıcı arayüzünün temel özelleştirilmesine izin veren tabDisplayName , tabOrder ve description alanlarını fark etmiş olabilirsiniz.Ayrıca bazı UI dizelerini ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings 'de bulabilirsiniz.

Yeni bir ödül arka planını belirtmek için effect değişkenini kullanarak, bir çerçeve ekleyin ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames .Sonra çerçevenin adını Types.RewardEffect tablosuna ReplicatedStorage.EngagementRewards.Configs.Types ekleyin.
Daha kapsamlı özelleştirme için, ReplicatedStorage.EngagementRewards.Objects 'deki nesneleri değiştirin.Örneğin, BackgroundColor3 çerçevenin RewardsHudButton.Background veya Color 'in FooterContentFrame.ClaimableUIGradient 'inin değiştirilmesini sağlayabilirsiniz.
Kullanıcı arayüzünün giriş noktası, gerekli nesneleri alan ve UI'yi başlatan ReplicatedStorage.EngagementRewards.Client.UIController kodudur, ki bu da gerekli nesneleri alır ve UI'yi başlatır.Sadece çocukları eklemek veya özellikleri değiştirmek yerine üst düzey nesneleri ekleyin veya yeniden adlandırın (sadece çocukları eklemek veya özellikleri değiştirmekle karşılaştırın), muhtemelen onlarla başa çıkmak için bu klasördeki kodu güncellemeniz gerekir.