Katılım Ödülleri özellik paketi, günlük giriş serileri ve oyun oturumu süresi gibi belirli oyuncu etkinlikleri için oyun içi ödüller sunmak üzere özelleştirilebilir bir çerçevedir. İstemci ve sunucu mantığına ek olarak, paket ödül ilerlemesini, ödül durumunu görüntülemek ve ödülleri talep etmek için varsayılan bir kullanıcı arayüzü içerir.

Paketi alın
Core ve Katılım Ödülleri paketlerini, buradaki Envantere Ekle bağlantılarına tıklayarak Studio içindeki envanterinize ekleyin:
Studio'nun Pencere menüsünden veya Ana Sayfa sekmesi araç çubuğundan Araç Kutusu'nu açın.
Araç Kutusu penceresinde, Envanter sekmesine tıklayın. Modellerim sıralaması görüntülenir.

Özellik Paketi Core karosuna, ardından Katılım Ödülleri Özellik Paketi karosuna tıklayın. Her iki paket klasörü de Keşfetici penceresinde görüntülenir.
Klasörleri ReplicatedStorage içine sürükleyin.
Paketi başlatın
Paketleri ReplicatedStorage içine taşıyarak ve oyununuzu test ederek ReplicatedStorage.EngagementRewards.Server.Examples içindeki EngagementRewardsExample betiğini çalıştırırsınız.
Bu betik, oyununuzda paketi kullanmak için nasıl başlatacağınızı gösterir; bu, birkaç modül betiğini gerektirmeyi ve nihayetinde ödülleri oyuncuya vermek için bir rewardClaimedHandlerFunction() fonksiyonu tanımlamayı içerir.
Bu fonksiyon bir boolean döndürmelidir. Örnek betikte, oyuncuya herhangi bir ödül vermediğini, yalnızca oyuncuyu, ödülü ve talep edilen miktarı yazdırdığını görebilirsiniz.
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şleyici fonksiyonu kendi ödül talep işleyici fonksiyonunuzla değiştirin
-- Bu fonksiyon, geçerli olan rewardId için ödül talep olayını yönetmelidir
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Ödül {rewardId} {player} tarafından {quantity} miktarıyla talep edildi`)
return true
end
-- daha fazlaBu betiği doğrudan değiştirebilir veya sunucu kodu için tercih ettiğiniz konum olan ServerScriptService içine taşıyabilirsiniz. Şu haliyle, betik yalnızca test amaçları için kullanışlıdır.
Oyuncuya ödül vermek, oyuna göre değişir. Bazı oyunlarda, bir oyun güçlendirmesi verebilir veya yalnızca oyuncunun altın sayısını artırabilirsiniz. Diğer oyunlarda, özel bir envanter sistemi olabilirken, diğerleri oyuncu sırt çantalarına bir öğe yerleştirebilir. Ancak her durumda, rewardClaimedHandlerFunction() fonksiyonunu kendi fonksiyonunuzla değiştirmeniz gerekir.
Ödüller ve kriterler ekleyin
Çoğu ödül özelleştirmesi ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig içinde gerçekleşir. Bu modül betiği, ödülü ve onu açmak için gerekenleri tanımlar.
Tam tür bildirimlerini (veya yenilerini eklemeyi) ReplicatedStorage.EngagementRewards.Configs.Types içinde görebilirsiniz, ancak muhtemelen yalnızca EngagementRewardsConfig ile çalışmanız gerekecek. Özellik paketi iki ödül türü içerir: Zaman ve Günlük.
local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "Zaman",
tabOrder = 1,
description = "Ödülleri açmak için oynamaya devam edin!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "Buz Mızrağı",
requiredSecondsInGame = 1 * 5,
},
-- daha fazla
[Types.RewardType.Daily] = {
tabDisplayName = "Günlük",
tabOrder = 2,
description = "Ödülleri açmak için günlük oynayın!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Buz Mızrağı",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- daha fazlaHer iki ödül türü de bir simge gerektirir; bu, bir görüntü için bir Roblox varlık kimliğidir (dekal değildir). Ayrıca, UI'de kullanmak için bir görüntü adı istiyorsanız, belirtin. 1'den farklı değerler için quantity belirtin. Ayrıca, UI'de farklı bir arka plan çerçevesi vermek için bir ödülü değerli olarak belirtebilirsiniz (effect = Types.RewardEffect.Valuable).
| Değişken | Tür | Açıklama | Varsayılan | Gerekli |
|---|---|---|---|---|
| icon | Numara | UI simgesi için bir Roblox varlık kimliği. | N/A | Evet |
| displayName | Dize | UI'de kullanılacak ödül adı. | RewardId | Hayır |
| quantity | Numara | Verilecek öğe sayısı. | 1 | Hayır |
| effect | RewardEffect | UI'de kullanılacak görsel efekt. UI'yi Özelleştir bölümüne bakın. | Types.RewardEffect.Default | Hayır |
Zaman ödülleri
Zaman ödülleri, oyunda belirli bir süre geçtikten sonra açılır. Bu sayıları ihtiyaçlarınıza göre özelleştirin. Kolay testler için küçük sayılar kullanabilirsiniz ve yayımlanan oyunda 10 dakikadan sonra bir ödül, 30 dakikadan sonra başka bir ödül, bir saat sonra başka bir ödül verebilirsiniz.
Çarpma, insanlara saniye cinsinden sayılarla çalışmayı kolaylaştırır, bu nedenle iki saat için 2 * 60 * 60 belirtmeyi tercih edebilirsiniz, 7200 yerine.
| Değişken | Tür | Açıklama | Varsayılan | Gerekli |
|---|---|---|---|---|
| requiredSecondsInGame | Numara | Oyuncunun ödülü kazanmak için oyunda geçirmesi gereken saniye sayısı (pozitif tam sayı). | N/A | Evet |
Günlük ödüller
Günlük ödüller, belirli bir sayıda ardışık günlük girişten sonra açılır. Örneğin, bir oyuncunun ilk gün giriş yaptığında, ona üç iksir veya bir tarçın rulosu verebilirsiniz. Ardışık günlerde, daha değerli tüketilebilir öğelerle ödüllendirebilir, ardından yedi gün boyunca giriş yaptıktan sonra dayanıklı bir öğe, örneğin yeni bir olta verebilirsiniz.
| Değişken | Tür | Açıklama | Varsayılan | Gerekli |
|---|---|---|---|---|
| requiredDaysVisitedStreak | Numara | Oyuncunun ödülü kazanmak için oyuna bağlanması gereken ardışık gün sayısı. | N/A | Evet |
DailyRewardTabConfig içinde iki ek günlük ödül yapılandırma seçeneği mevcuttur.
[Types.RewardType.Daily] = {
tabDisplayName = "Günlük",
tabOrder = 2,
description = "Ödülleri açmak için günlük oynayın!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Buz Mızrağı",
requiredDaysVisitedStreak = 1,
},
-- daha fazla| Değişken | Tür | Açıklama | Varsayılan | Gerekli |
|---|---|---|---|---|
| isHiddenOnJoin | Boolean | Doğru olduğunda, ödüller oyuna katıldığında otomatik olarak görünmez. Yanlış olduğunda, oyuncunun talep edilecek yeni bir günlük ödülü varsa, oyuna katıldığında otomatik olarak görünür. | Yanlış | Hayır |
| isAlignedToStreakResetTime | Boolean | Doğru olduğunda, 2. gün ödülleri, ilk 1. gün talep edilebilir zamanından 24 saat sonra talep edilebilir. Yanlış olduğunda, 2. gün ödülleri, 1. gün talep edilebilir zamanından sonraki ilk gece yarısında talep edilebilir. Örneğin, bir oyuncu 11:00 PM (23:00) de giriş yapar ve 1. gün ödülünü talep ederse, doğruysa 2. gün ödülünü bir sonraki gün 11:00 PM'de talep edemez. Yanlışsa, 2. gün ödülünü 12:00 AM (00:00) de, bir saat sonra talep edebilir. 3. gün ve sonrası ödülleri her zaman bir önceki günün talep edilebilir zamanından 24 saat sonra mevcuttur. | Yanlış | Hayır |
UI'yi Özelleştirin
Önceki bölümde, kullanıcı arayüzünün temel özelleştirmesine olanak tanıyan tabDisplayName, tabOrder ve description alanlarını fark etmiş olabilirsiniz. Ayrıca, ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings içinde bazı UI dizelerini bulabilirsiniz.

effect değişkenini kullanarak yeni bir ödül arka planı belirtmek için, ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames içine bir çerçeve ekleyin. Ardından, çerçevenin adını ReplicatedStorage.EngagementRewards.Configs.Types içindeki Types.RewardEffect tablosuna ekleyin.
Daha kapsamlı özelleştirme için, ReplicatedStorage.EngagementRewards.Objects içindeki nesneleri değiştirin. Örneğin, RewardsHudButton.Background çerçevesinin BackgroundColor3 veya FooterContentFrame.ClaimableUIGradient'in Color değerlerini değiştirebilirsiniz.
Kullanıcı arayüzü için giriş noktası, gerekli nesneleri alıp UI'yi başlatan ReplicatedStorage.EngagementRewards.Client.UIController betiğidir. Üst düzey nesneleri ekler veya yeniden adlandırırsanız (yalnızca çocuk eklemek veya özellikleri değiştirmek yerine), bunları işlemek için bu klasördeki kodu güncellemeniz gerekebilir.