Paket fitur Hadiah Keterlibatan adalah framework yang dapat disesuaikan untuk menawarkan hadiah dalam game untuk aktivitas pemain tertentu, termasuk rekor login harian dan waktu sesi bermain.Selain logika klien dan server, paket tersebut memiliki UI default untuk melihat kemajuan hadiah, status hadiah, dan mengklaim hadiah.

Dapatkan paket
Tambahkan paket Inti dan Hadiah Partisipasi ke inventaris Studio dengan mengklik tautan Tambahkan ke Inventaris di sini:
Di Studio, pilih tab Tampilan .
Klik Kotak Alat .
Di jendela Kotak Alat , klik tab Inventaris .
Klik tombol Paket Fitur Inti , lalu tombol Paket Hadiah Keterlibatan .Kedua folder paket ditampilkan di jendela Explorer .
Seret folder 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 memberikan hadiah (s) kepada pemain.
Fungsi ini harus mengembalikan boolean.Dalam skrip contoh, Anda dapat melihat bahwa itu tidak memberikan hadiah kepada pemain; hanya mencetak pemain, hadiah, dan kuantitas yang diklaim.
Contoh Hadiah Keterlibatan
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 penangani ini dengan fungsi penangani hadiah Anda sendiri yang diklaim
-- Fungsi ini harus menangani acara hadiah yang diklaim untuk hadiahId yang ditransmikan
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more
Anda dapat mengubah skrip ini secara langsung atau memindahkannya ke ServerScriptService jika itu lokasi favorit Anda untuk kode server.As-is, skrip hanya berguna untuk tujuan pengujian.
Memberi hadiah kepada pemain bervariasi tergantung pengalaman.Dalam beberapa pengalaman, Anda mungkin memberikan dorongan pengalaman atau hanya meningkatkan hitungan emas pemain.Di pengalaman lain, Anda mungkin memiliki sistem inventaris khusus, sementara yang lain mungkin menempatkan barang ke dalam ransel pemain.Namun, dalam semua kasus, Anda harus mengganti rewardClaimedHandlerFunction() dengan fungsi Anda sendiri.
Tambahkan hadiah dan kriteria
Kustomisasi sebagian besar hadiah terjadi dalam ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig . Skrip modul ini mendefinisikan hadiah dan persyaratan untuk membukanya.
Anda dapat melihat deklarasi jenis lengkap (atau menambahkan yang baru) di ReplicatedStorage.EngagementRewards.Configs.Types , tetapi Anda mungkin hanya perlu bekerja dengan EngagementRewardsConfig .Paket fitur termasuk dua jenis hadiah: Time dan 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,},-- lebih[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
Kedua jenis hadiah memerlukan ikon, yang merupakan ID aset Roblox untuk gambar ( tidak sebuah stiker).Anda mungkin juga menginginkan nama tampilan untuk digunakan di UI.Spesifikasikan quantity untuk nilai lain dari 1.Anda juga dapat menunjukkan hadiah sebagai berharga ( effect = Types.RewardEffect.Valuable ) untuk memberikannya latar belakang berbeda di UI.
Variabel | Jenis | Deskripsi | Standar | Diperlukan :--- | :--- | :--- | :--- | :--- ikon | Nomor | ID aset Roblox untuk ikon UI.| N/A | Ya displayName | String | Nama untuk hadiah yang digunakan di UI.| The RewardId | Tidak ada kuantitas | Angka | Jumlah item untuk dihargai.| 1 | Tidak ada efek | RewardEffect | Efek visual untuk digunakan di UI.Lihat Kustomisasi UI.| Types.RewardEffect.Default | No
Hadiah waktu
Time hadiah terbuka setelah beberapa detik dalam game tertentu.Sesuaikan angka-angka ini untuk memenuhi kebutuhan Anda.Anda mungkin menggunakan angka kecil untuk pengujian mudah, dan dalam pengalaman yang dipublikasikan, berikan hadiah setelah 10 menit, lain setelah 30 menit, lain setelah satu jam, dan seterusnya.
Penggandaan membuat angka dalam beberapa detik lebih mudah bagi manusia untuk bekerja, jadi selama dua jam, Anda mungkin lebih suka menyebutkan 2 * 60 * 60 daripada 7200.
Variabel | Jenis | Deskripsi | Standar | Diperlukan :--- | :--- | :--- | :--- | :--- diperlukanDetikDalamPermainan | Angka | Jumlah detik (integer positif) yang harus dihabiskan pemain dalam game untuk mendapatkan hadiah.| Tidak/Tidak | Ya
Hadiah seharian
Daily hadiah terbuka setelah jumlah login harian berturut-turut tertentu.Sebagai contoh, hari pertama seorang pemain masuk, Anda mungkin memberi mereka tiga ramuan atau gulungan cinnamon.Hari-hari berikutnya, Anda mungkin memberi hadiah konsumsi yang lebih berharga, diikuti oleh itemtahan lama, seperti tongkat memancing baru, setelah tujuh hari berturut-turut.
Variabel | Jenis | Deskripsi | Standar | Diperlukan :--- | :--- | :--- | :--- | :--- diperlukanDaysVisitedStreak | Angka | Jumlah hari berturut-turut yang harus dihubungkan pemain ke pengalaman untuk mendapatkan hadiah.| Tidak/Tidak | Ya
Dua opsi konfigurasi hadiah harian tambahan tersedia di 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
Variabel | Jenis | Deskripsi | Standar | Diperlukan :--- | :--- | :--- | :--- | :--- isHiddenOnJoin | Boolean | Saat benar, hadiah tidak muncul secara otomatis saat bergabung dengan pengalaman.Ketika palsu, hadiah secara otomatis muncul saat bergabung dengan permainan jika pemain memiliki hadiah harian baru untuk diklaim.| Salah | Tidak ada isAlignedToStreakResetTime | Boolean | Saat benar, hadiah untuk hari 2 dapat diklaim 24 jam setelah waktu klaim awal hari 1.Ketika palsu, hadiah hari 2 dapat diklaim pada tengah malam pertama setelah waktu klaim hari 1.Sebagai contoh, jika seorang pemain masuk pada pukul 11:00 PM (23:00) dan mengklaim hadiah hari 1, artinya mereka tidak dapat mengklaim hadiah hari 2 sampai 11:00 PM hari berikutnya.Salah berarti mereka dapat mengklaim hadiah hari 2 pada pukul 12:00 AM (00:00), satu jam kemudian.Hadiah untuk hari 3 dan seterusnya selalu tersedia 24 jam setelah waktu yang dapat diklaim hari sebelumnya.| Salah | Tidak
Kustomisasi UI
Di bagian sebelumnya, Anda mungkin telah memperhatikan bidang tabDisplayName , tabOrder , dan description , yang memungkinkan untuk 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 frame ke ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames.Kemudian tambahkan nama frame ke tabel Types.RewardEffect di ReplicatedStorage.EngagementRewards.Configs.Types.
Untuk kustomisasi yang lebih lengkap, modifikasi objek di ReplicatedStorage.EngagementRewards.Objects .Sebagai contoh, Anda mungkin memodifikasi BackgroundColor3 dari frame 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 mungkin perlu memperbarui kode di folder ini untuk menanganinya.