Paket fitur Hadiah Keterlibatan adalah kerangka yang dapat disesuaikan untuk menawarkan hadiah dalam permainan berdasarkan aktivitas tertentu pemain, termasuk streak login harian dan waktu sesi bermain. Selain logika klien dan server, paket ini mencakup UI default untuk melihat kemajuan hadiah, status hadiah, dan mengklaim hadiah.

Ambil paketnya
Tambahkan paket Core dan Hadiah Keterlibatan ke inventaris Anda di dalam Studio dengan mengklik tautan Tambah ke Inventaris di sini:
Dari menu Window Studio atau toolbar tab Home, buka Toolbox.
Di jendela Toolbox, klik tab Inventaris. Penyortiran Model Saya ditampilkan.

Klik ubin Paket Fitur Core, lalu ubin Paket Fitur Hadiah Keterlibatan. Kedua folder paket ditampilkan di jendela Explorer.
Seret folder-folder tersebut ke dalam ReplicatedStorage.
Inisialisasi paket
Memindahkan paket ke ReplicatedStorage dan menguji pengalaman Anda menjalankan skrip EngagementRewardsExample di ReplicatedStorage.EngagementRewards.Server.Examples.
Skrip ini menunjukkan cara menginisialisasi paket untuk digunakan dalam pengalaman Anda, yang melibatkan memerlukan beberapa skrip modul dan mendefinisikan fungsi rewardClaimedHandlerFunction() yang akhirnya memberi hadiah kepada pemain.
Fungsi ini harus mengembalikan nilai boolean. Dalam skrip contoh, Anda dapat melihat bahwa itu tidak memberikan hadiah kepada pemain; itu hanya mencetak pemain, hadiah, dan jumlah yang diklaim.
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)
-- Ganti fungsi pengelola hadiah ini dengan fungsi pengelola hadiah yang Anda miliki
-- Fungsi ini harus menangani peristiwa hadiah yang diklaim untuk rewardId yang diberikan
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- lebihAnda dapat memodifikasi skrip ini langsung atau memindahkannya ke ServerScriptService jika itu adalah lokasi pilihan Anda untuk kode server. Begitu saja, skrip ini hanya berguna untuk tujuan pengujian.
Memberikan hadiah kepada pemain bervariasi tergantung pengalaman. Dalam beberapa pengalaman, Anda mungkin memberikan dorongan pengalaman atau hanya meningkatkan jumlah emas pemain. Dalam pengalaman lain, Anda mungkin memiliki sistem inventaris kustom, sedangkan yang lainnya mungkin menempatkan barang ke dalam ransel pemain. Namun dalam semua kasus, Anda harus mengganti rewardClaimedHandlerFunction() dengan fungsi Anda sendiri.
Tambahkan hadiah dan kriteria
Kebanyakan kustomisasi hadiah dilakukan di dalam ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig. Skrip modul ini mendefinisikan hadiah dan persyaratan untuk membukanya.
Anda bisa melihat seluruh deklarasi tipe (atau menambahkan yang baru) di ReplicatedStorage.EngagementRewards.Configs.Types, tetapi Anda mungkin hanya perlu bekerja dengan EngagementRewardsConfig. Paket fitur ini mencakup dua jenis hadiah: Time dan Daily.
local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "Waktu",
tabOrder = 1,
description = "Terus bermain untuk membuka hadiah!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "Es Lance",
requiredSecondsInGame = 1 * 5,
},
-- lebih
[Types.RewardType.Daily] = {
tabDisplayName = "Harian",
tabOrder = 2,
description = "Mainkan setiap hari untuk membuka hadiah!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Es Lance",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- lebihKedua jenis hadiah memerlukan ikon, yang merupakan ID aset Roblox untuk gambar (bukan dekali). Anda juga mungkin ingin nama tampilan untuk digunakan di UI. Tentukan quantity untuk nilai selain 1. Anda juga dapat secara opsional menetapkan hadiah sebagai berharga (effect = Types.RewardEffect.Valuable) agar memiliki bingkai latar belakang yang berbeda di UI.
| Variable | Type | Description | Default | Required |
|---|---|---|---|---|
| icon | Number | ID aset Roblox untuk ikon UI. | N/A | Ya |
| displayName | String | Nama untuk hadiah yang digunakan di UI. | ID RewardId | Tidak |
| quantity | Number | Jumlah barang yang akan diberikan. | 1 | Tidak |
| effect | RewardEffect | Efek visual yang digunakan di UI. Lihat Kustomisasi UI. | Types.RewardEffect.Default | Tidak |
Hadiah Waktu
Hadiah Time dibuka setelah sejumlah detik tertentu di dalam permainan. Sesuaikan angka-angka ini untuk memenuhi kebutuhan Anda. Anda mungkin menggunakan angka kecil untuk pengujian yang mudah, dan dalam pengalaman yang diterbitkan, memberikan hadiah setelah 10 menit, hadiah lainnya setelah 30 menit, hadiah lainnya setelah satu jam, dan seterusnya.
Perkalian membuat angka dalam detik lebih mudah untuk manusia, jadi untuk dua jam, Anda mungkin lebih suka menetapkan 2 * 60 * 60 dibandingkan 7200.
| Variable | Type | Description | Default | Required |
|---|---|---|---|---|
| requiredSecondsInGame | Number | Jumlah detik (bilangan bulat positif) yang harus dihabiskan pemain dalam permainan untuk mendapatkan hadiah. | N/A | Ya |
Hadiah Harian
Hadiah Daily dibuka setelah sejumlah login harian berturut-turut. Misalnya, pada hari pertama pemain login, Anda mungkin memberikan mereka tiga ramuan atau sepotong kue kayu manis. Pada hari-hari berikutnya, Anda mungkin memberikan barang konsumsi yang lebih bernilai, diikuti dengan barang tahan lama, seperti pancing baru, setelah tujuh hari berturut-turut.
| Variable | Type | Description | Default | Required |
|---|---|---|---|---|
| requiredDaysVisitedStreak | Number | Jumlah hari berturut-turut pemain harus terhubung ke pengalaman untuk mendapatkan hadiah. | N/A | Ya |
Dua opsi konfigurasi hadiah harian tambahan tersedia di DailyRewardTabConfig.
[Types.RewardType.Daily] = {
tabDisplayName = "Harian",
tabOrder = 2,
description = "Mainkan setiap hari untuk membuka hadiah!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Es Lance",
requiredDaysVisitedStreak = 1,
},
-- lebih| Variable | Type | Description | Default | Required |
|---|---|---|---|---|
| isHiddenOnJoin | Boolean | Ketika true, hadiah tidak muncul secara otomatis saat bergabung dengan pengalaman. Ketika false, hadiah muncul secara otomatis saat bergabung dengan permainan jika pemain memiliki hadiah harian baru untuk diklaim. | False | Tidak |
| isAlignedToStreakResetTime | Boolean | Ketika true, hadiah untuk hari ke-2 dapat diklaim 24 jam setelah waktu klaim hari ke-1 awal. Ketika false, hadiah hari ke-2 dapat diklaim pada tengah malam pertama setelah waktu klaim hari ke-1. Misalnya, jika seorang pemain login pada pukul 11:00 malam (23:00) dan mengklaim hadiah hari ke-1 mereka, true berarti mereka tidak dapat mengklaim hadiah hari ke-2 sampai 11:00 malam hari berikutnya. False berarti mereka dapat mengklaim hadiah hari ke-2 pada pukul 12:00 AM (00:00), satu jam kemudian. Hadiah untuk hari ke-3 dan seterusnya selalu tersedia 24 jam setelah waktu klaim hari sebelumnya. | False | Tidak |
Kustomisasi UI
Di bagian sebelumnya, Anda mungkin telah memperhatikan bidang tabDisplayName, tabOrder, dan description, yang memungkinkan kustomisasi dasar dari antarmuka pengguna. Anda juga dapat menemukan beberapa string UI di ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

Untuk menentukan latar belakang hadiah baru menggunakan variabel effect, tambahkan bingkai ke ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames. Kemudian tambahkan nama bingkai ke tabel Types.RewardEffect di ReplicatedStorage.EngagementRewards.Configs.Types.
Untuk kustomisasi yang lebih komprehensif, modifikasi objek di ReplicatedStorage.EngagementRewards.Objects. Misalnya, Anda mungkin memodifikasi BackgroundColor3 dari bingkai RewardsHudButton.Background atau Color dari FooterContentFrame.ClaimableUIGradient.
Titik masuk untuk antarmuka pengguna adalah skrip ReplicatedStorage.EngagementRewards.Client.UIController, yang mendapatkan objek yang diperlukan dan menginisialisasi UI. Jika Anda menambahkan atau mengganti nama objek tingkat atas (berbeda dari hanya menambahkan anak atau memodifikasi properti), Anda kemungkinan perlu memperbarui kode di folder ini untuk menangani objek tersebut.