Hadiah Keterlibatan

*Konten ini diterjemahkan menggunakan AI (Beta) dan mungkin mengandung kesalahan. Untuk melihat halaman ini dalam bahasa Inggris, klik di sini.

Paket fitur Hadiah Keterlibatan adalah kerangka kerja yang dapat disesuaikan untuk menawarkan hadiah dalam permainan untuk aktivitas pemain tertentu, 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.

Dapatkan paket

  1. Tambahkan paket Core dan Hadiah Keterlibatan ke inventaris Anda di dalam Studio dengan mengklik tautan Tambahkan ke Inventaris di sini:

  2. Dari menu Jendela Studio atau toolbar tab Beranda, buka Toolbox.

  3. Di jendela Toolbox, klik tab Inventaris. Penyortiran Model Saya ditampilkan.

    Jendela Toolbox Studio dengan tab Inventaris yang disorot.
  4. Klik ubin Paket Fitur Core, lalu ubin Paket Fitur Hadiah Keterlibatan. Kedua folder paket ditampilkan di jendela Explorer.

  5. Seret folder-folder tersebut ke dalam ReplicatedStorage.

Inisialisasi paket

Memindahkan paket ke ReplicatedStorage dan menguji permainan Anda menjalankan skrip EngagementRewardsExample di ReplicatedStorage.EngagementRewards.Server.Examples.

Skrip ini menunjukkan cara menginisialisasi paket untuk digunakan dalam permainan Anda, yang melibatkan memerlukan beberapa skrip modul dan mendefinisikan fungsi rewardClaimedHandlerFunction() yang pada akhirnya memberikan hadiah kepada pemain.

Fungsi ini harus mengembalikan boolean. Dalam skrip contoh, Anda dapat melihat bahwa ia tidak memberikan hadiah kepada pemain; ia hanya mencetak pemain, hadiah, dan jumlah yang diklaim.

EngagementRewardsExample
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 handler ini dengan fungsi handler klaim hadiah Anda sendiri
-- Fungsi ini harus menangani peristiwa klaim hadiah untuk rewardId yang diberikan
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Hadiah {rewardId} diklaim oleh {player} dengan jumlah {quantity}`)
return true
end
-- lebih banyak

Anda dapat memodifikasi skrip ini secara langsung atau memindahkannya ke ServerScriptService jika itu adalah lokasi yang Anda pilih untuk kode server. Dalam keadaan sekarang, skrip ini hanya berguna untuk tujuan pengujian.

Memberikan hadiah kepada pemain bervariasi tergantung pada permainan. Dalam beberapa permainan, Anda mungkin memberikan dorongan permainan atau hanya menambah jumlah emas pemain. Dalam permainan lain, Anda mungkin memiliki sistem inventaris kustom, sedangkan yang lain mungkin menempatkan item ke dalam ransel pemain. Namun, dalam semua kasus, Anda harus mengganti rewardClaimedHandlerFunction() dengan fungsi Anda sendiri.

Tambahkan hadiah dan kriteria

Sebagian besar kustomisasi hadiah terjadi di dalam ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig. Skrip modul ini mendefinisikan hadiah dan persyaratan untuk membukanya.

Anda dapat melihat deklarasi tipe lengkap (atau menambahkan yang baru) di ReplicatedStorage.EngagementRewards.Configs.Types, tetapi Anda mungkin hanya perlu bekerja dengan EngagementRewardsConfig. Paket fitur ini mencakup dua jenis hadiah: Waktu dan Harian.

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 banyak
[Types.RewardType.Daily] = {
tabDisplayName = "Harian",
tabOrder = 2,
description = "Bermain setiap hari untuk membuka hadiah!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Es Lance",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- lebih banyak

Kedua jenis hadiah memerlukan ikon, yang merupakan ID aset Roblox untuk gambar (bukan decal). 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) untuk memberikannya bingkai latar belakang yang berbeda di UI.

VariabelTipeDeskripsiDefaultDiperlukan
iconNomorID aset Roblox untuk ikon UI.N/AYa
displayNameStringNama untuk hadiah untuk digunakan di UI.ID RewardIdTidak
quantityNomorJumlah item yang akan diberikan.1Tidak
effectRewardEffectEfek visual yang digunakan di UI. Lihat Kustomisasi UI.Types.RewardEffect.DefaultTidak

Hadiah Waktu

Hadiah Waktu dibuka setelah sejumlah detik tertentu dalam permainan. Sesuaikan angka-angka ini untuk memenuhi kebutuhan Anda. Anda mungkin menggunakan angka kecil untuk pengujian yang mudah, dan dalam permainan yang diterbitkan, memberikan hadiah setelah 10 menit, hadiah lain setelah 30 menit, hadiah lain setelah satu jam, dan seterusnya.

Perkalian membuat angka dalam detik lebih mudah bagi manusia untuk bekerja, jadi untuk dua jam, Anda mungkin lebih suka menentukan 2 * 60 * 60 daripada 7200.

VariabelTipeDeskripsiDefaultDiperlukan
requiredSecondsInGameNomorJumlah detik (bilangan bulat positif) yang harus dihabiskan pemain dalam permainan untuk mendapatkan hadiah.N/AYa

Hadiah Harian

Hadiah Harian 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 berharga, diikuti oleh item tahan lama, seperti pancing baru, setelah tujuh hari berturut-turut.

VariabelTipeDeskripsiDefaultDiperlukan
requiredDaysVisitedStreakNomorJumlah hari berturut-turut pemain harus terhubung ke permainan untuk mendapatkan hadiah.N/AYa

Dua opsi konfigurasi hadiah harian tambahan tersedia di DailyRewardTabConfig.

[Types.RewardType.Daily] = {
tabDisplayName = "Harian",
tabOrder = 2,
description = "Bermain setiap hari untuk membuka hadiah!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Es Lance",
requiredDaysVisitedStreak = 1,
},
-- lebih banyak
VariabelTipeDeskripsiDefaultDiperlukan
isHiddenOnJoinBooleanKetika true, hadiah tidak muncul secara otomatis saat bergabung dengan permainan. Ketika false, hadiah muncul secara otomatis saat bergabung dengan permainan jika pemain memiliki hadiah harian baru untuk diklaim.FalseTidak
isAlignedToStreakResetTimeBooleanKetika true, hadiah untuk hari ke-2 dapat diklaim 24 jam setelah waktu klaim hari 1 yang awal. Ketika false, hadiah hari ke-2 dapat diklaim pada tengah malam pertama setelah waktu klaim hari 1. Misalnya, jika seorang pemain login pada pukul 11:00 PM (23:00) dan mengklaim hadiah hari 1 mereka, true berarti mereka tidak dapat mengklaim hadiah hari ke-2 sampai pukul 11:00 PM keesokan harinya. 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.FalseTidak

Kustomisasi UI

Di bagian sebelumnya, Anda mungkin telah memperhatikan bidang tabDisplayName, tabOrder, dan description, yang memungkinkan kustomisasi dasar 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 dengan hanya menambahkan anak atau memodifikasi properti), Anda mungkin perlu memperbarui kode di folder ini untuk menanganinya.

©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.