Paket tiket musiman

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

Paket fitur Tiket Musiman menawarkan fungsionalitas siap pakai untuk membuat sistem progresi berbasis misi dengan waktu terbatas di mana pemain dapat menyelesaikan tujuan misi untuk mendapatkan hadiah yang hanya tersedia selama periode waktu yang telah ditentukan sebelumnya. Menggunakan opsi kustomisasi paket, Anda dapat mempersonalisasi semua tiket musiman untuk memberikan konten baru kepada audiens Anda, mempromosikan retensi pemain, dan menghasilkan pendapatan.

Dapatkan paket

Toko Pembuat adalah tab di Toolbox yang dapat Anda gunakan untuk menemukan semua aset yang dibuat oleh Roblox dan komunitas Roblox untuk digunakan dalam proyek Anda, termasuk model, gambar, mesh, audio, plugin, video, dan aset font. Anda dapat menggunakan Toko Pembuat untuk menambahkan satu atau lebih aset langsung ke dalam pengalaman yang terbuka, termasuk paket fitur!

Setiap paket fitur memerlukan paket fitur Core agar berfungsi dengan baik, dan paket Tiket Musiman memerlukan paket fitur Misi untuk mendefinisikan misi musim. Setelah ketiga aset paket tersebut berada dalam inventaris Anda, Anda dapat menggunakannya kembali dalam proyek mana pun di platform.

Untuk mendapatkan paket dari inventaris Anda ke dalam pengalaman Anda:

  1. Dari menu Window Studio atau toolbar tab Home, buka Toolbox.

  2. Di jendela Toolbox, klik tab Inventaris. Pilihan Model Saya ditampilkan.

    Jendela Toolbox Studio dengan tab Inventaris yang disorot.
  3. Klik ubin Paket Fitur Core, ubin Paket Fitur Misi, lalu ubin Paket Fitur Tiket Musiman. Semua tiga folder paket ditampilkan di jendela Explorer.

  4. Seret folder paket ke dalam ReplicatedStorage.

  5. Izinkan panggilan penyimpanan data untuk melacak pembelian pemain dengan paket tersebut.

    1. Buka jendela FilePengaturan Pengalaman di Studio.
    2. Pergi ke tab Keamanan, lalu aktifkan Aktifkan Akses Studio ke Layanan API.

Konfigurasikan ketergantungan misi

Agar musim berfungsi dengan baik, Anda harus menambahkan logika sehingga paket fitur Tiket Musiman dapat melacak kemajuan pemain dan memperbarui komponen UI-nya. Untuk kesederhanaan, contoh di bawah ini menggunakan paket fitur Misi dan memanggil SeasonPasses.addProgressToSeason() setelah pemain menyelesaikan misi, tetapi Anda dapat melacak kemajuan pemain dengan cara yang Anda inginkan. Namun, baik Anda mendefinisikan misi atau tidak, Anda tetap harus menambahkan paket fitur Misi ke pengalaman Anda agar kode Tiket Musiman berfungsi.

Misi masing-masing memiliki seperangkat tugas yang harus diselesaikan untuk menyelesaikan misi, opsi konfigurasi, dan metadata tampilan opsional. Untuk panduan mendalam tentang cara mengonfigurasi misi dan tugasnya, lihat Definisikan Misi.

Tambahkan XP dari misi ke musim

Contoh ini menggunakan paket fitur Misi untuk mendefinisikan misi yang dapat diselesaikan pemain untuk mendapatkan pengalaman (XP) dan progres melalui musim. Untuk memberikan pemain XP saat mereka menyelesaikan misi yang telah ditentukan, Anda harus menambahkan logika ke skrip server ReplicatedStorage.Missions.Server.Examples.MissionsExample sehingga dapat mengimpor data tiket musiman dan memberikan hadiah kepada pemain sesuai dengan kemajuan mereka.

local SeasonPasses = require(ReplicatedStorage.SeasonPasses.Server.SeasonPasses)
local function completeHandler(player: Player, missionId: Types.MissionId)
print(`{player} menyelesaikan misi {missionId}`)
if missionId == "Walking" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking2" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking3" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Availability" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Manual" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Minutely" then
SeasonPasses.addProgressToSeason(player, 100)
end
end

Tambahkan ikon hadiah tingkat musim

Selain memberikan pemain XP saat mereka menyelesaikan misi, paket fitur Tiket Musiman menggunakan paket fitur Misi untuk mendefinisikan tingkat hadiah unik dalam sebuah musim. Jika Anda ingin menambahkan ikon di layar untuk hadiah tingkat yang dapat diperoleh pemain jika mereka mendapatkan cukup XP, tambahkan ID aset di konfigurasi Misi untuk setiap hadiah tingkat musim.

Tier3Mission = {
categoryId = "Umum",
metadata = {
displayName = "Misi Tingkat 3",
description = "Lompat 10 kali",
visibleAfterComplete = true,
visibleBeforeUnlocked = true,
rewards = {
{
icon = 16826775737,
displayName = "Item",
},
{
icon = 106912146245070,
displayName = "XP Musiman",
},
},
},
}

Konfigurasikan musim

Setelah Anda mengatur setiap misi yang ingin Anda sertakan dalam sebuah musim, saatnya untuk mengonfigurasi tiket musim itu sendiri. Di ReplicatedStorage.SeasonPasses.Configs.Season, terdapat contoh konfigurasi musim untuk referensi Anda, dan contoh kode berikut diambil dari file tersebut.

Definisikan tiket

Tiket memungkinkan Anda untuk mengenakan biaya sekali Robux kepada pemain untuk dapat mengakses misi dan potensi hadiah tiket musiman. Setelah Anda membuat tiket dengan ID aset unik, Anda dapat mengatur detail tiket tersebut di bidang premiumTrack musim Anda. Sebagai contoh, contoh kode berikut mendefinisikan tiket dengan ID aset contoh 928192647 untuk merepresentasikan tiket musim, kemudian memberikan nama trek tiket musim sebagai "Trek Premium".

premiumTrack = {
pricing = {
gamePassId = 928192647,
},
trackMetadata = {
trackName = "Trek Premium",
},
},

Konfigurasikan tingkat dan hadiah

Tingkat musim mewakili tonggak yang harus dicapai pemain untuk mendapatkan hadiah sepanjang musim. Untuk menaiki tingkat, pemain menyelesaikan misi untuk mendapatkan XP, dan ketika mereka mendapatkan cukup XP, mereka lulus ke tingkat berikutnya dan menerima hadiah untuk tingkat yang baru saja mereka selesaikan. Tingkat memiliki properti upperBoundXP yang menetapkan ambang XP yang diperlukan untuk mengklaim hadiah untuk suatu tingkat. Setiap tingkat dapat menawarkan dua jenis hadiah:

  • Gratis - Sebuah hadiah yang dapat diperoleh pemain tanpa membeli tiket musim.
  • Premium - Sebuah hadiah yang hanya bisa diperoleh pemain dengan membeli tiket musim.

Untuk mendemonstrasikan, tinjau contoh kode berikut untuk sebuah musim dengan satu tingkat yang memerlukan 100 XP untuk mendapatkan hadiah tombak es gratis dan hadiah perisai ledakan premium. icon adalah ID aset dari gambar UI yang ditampilkan untuk hadiah, dan displayName menampilkan nama untuk hadiah tersebut. Perhatikan bahwa displayName ditampilkan di UI, tetapi rewardId disembunyikan dari pemain dan terutama digunakan untuk tujuan data store.

tiers = {
[1] = {
upperBoundXP = 100,
freeReward = {
icon = 128181721602852,
displayName = "Tombak Es",
rewardId = "iceLance",
},
premiumReward = {
icon = 95882371958115,
displayName = "Perisai Ledakan",
rewardId = "blastShield",
},
},
}

Sementara skrip ini hanya untuk tujuan ilustrasi tentang cara mengonfigurasi satu tingkat sekaligus, sebagian besar musim mencakup lebih dari satu tingkat. Saat Anda mendefinisikan beberapa tingkat dan hadiah untuk sebuah musim, pastikan setiap rewardId bersifat numerik dan dalam urutan yang meningkat sehingga tingkat Anda ditampilkan dalam urutan yang Anda definisikan dalam daftar tingkat tersebut.

Definisikan detail musim

Sekarang Anda memiliki tiket musiman dengan tingkat dan hadiah, saatnya untuk mendefinisikan detail musim Anda:

  • title - Nama musim Anda.
  • description - Deskripsi musim Anda.
  • startUtc - Awal musim dalam waktu universal terkoordinasi.
  • endUtc - Akhir musim dalam waktu universal terkoordinasi.
  • seasonId - Memungkinkan Anda melacak XP yang diperoleh pemain sepanjang musim yang diberikan.

Paket menggunakan startUtc dan endUtc untuk menampilkan hitung mundur musim.

startUtc = DateTime.fromUniversalTime(2024, 10, 01, 17, 0, 0),
endUtc = DateTime.fromUniversalTime(2025, 2, 28, 17, 0, 0),
title = "Musim 1",
description = "Menuju Kota Angkasa",
seasonId = "season1",

Integrasikan logika server

Lihat ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample, yang menunjukkan bagaimana server Anda akan berinteraksi dengan Paket Fitur Tiket Musiman. Potongan kode di bawah ini diambil dari skrip tersebut.

Anda perlu membuat fungsi penangan untuk memberikan hadiah kepada pemain yang telah mengklaim. Misalnya, contoh kode berikut membuat fungsi rewardClaimedHandlerFunction() yang melacak kapan pemain maju ke tingkat berikutnya, kemudian memberikan mereka baik hadiah gratis, atau baik hadiah gratis dan hadiah premium jika mereka membeli tiket musim.

Untuk keperluan Anda, ganti panggilan task.wait() dengan logika yang memungkinkan pemain mendapatkan hadiah yang telah mereka klaim dalam musim. Fungsi ini harus mengembalikan boolean: true jika server memberikan hadiah, false jika tidak.

local function rewardClaimedHandlerFunction(_player: Player, _rewardId: Types.RewardId): boolean
task.wait(2)
return true
end
local function initializeRewardClaimedHandlers()
for tierId, tier in pairs(Season.tiers) do
if tier then
if tier.freeReward then
SeasonPasses.setRewardClaimedHandler(tier.freeReward.rewardId, rewardClaimedHandlerFunction)
end
if tier.premiumReward then
SeasonPasses.setRewardClaimedHandler(tier.premiumReward.rewardId, rewardClaimedHandlerFunction)
end
end
end
end

Konfigurasikan konstanta

Konstanta untuk paket fitur Core berada di dua lokasi:

  • Konstanta bersama berada di ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.
  • Konstanta spesifik paket, dalam hal ini paket fitur Tiket Musiman, berada di ReplicatedStorage.SeasonPasses.Configs.Constants. Hal-hal utama yang mungkin ingin Anda sesuaikan agar memenuhi kebutuhan desain pengalaman Anda:
  • ID aset suara
  • Durasi efek pembelian dan warna partikel Selain itu, Anda dapat menemukan string untuk terjemahan yang dibreak out ke dalam satu lokasi: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

Kustomisasi komponen UI

Dengan memodifikasi objek paket, seperti warna, font, dan transparansi, Anda dapat menyesuaikan presentasi visual dari prompt tiket musim Anda. Namun, ingatlah bahwa jika Anda memindahkan objek mana pun secara hierarkis, kode tidak akan dapat menemukannya, dan Anda perlu melakukan penyesuaian pada kode Anda.

Sebuah musim terdiri dari komponen tingkat tinggi berikut yang ditambahkan secara programatis ke komponen UI Paket Fitur Misi:

  • SeasonBottomFrame – Frame yang mencakup informasi tentang setiap trek, sebuah frame yang menggulirkan hadiah untuk tingkat, dan data tingkat.
  • SeasonDescriptionFrame - Frame di header yang menampilkan judul musim, deskripsi, dan hitung mundur.
  • TierRewardFrame - Frame yang menampilkan hadiah spesifik untuk suatu tingkat.
  • TierProgressFrame - Frame yang menampilkan kemajuan yang telah dibuat pemain menuju tingkat saat ini yang sedang mereka kerjakan.
  • PurchaseFrame - Frame yang meminta pemain untuk membeli tiket premium.
  • SeasonProgressFrame - Frame yang menampilkan bilah kemajuan pemain sepanjang musim.
  • RewardsButtonFrame - Frame yang menambahkan tombol yang memungkinkan informasi musim ditampilkan melalui SeasonBottomFrame.
©2026 Roblox Corporation. Roblox, logo Roblox, dan Powering Imagination termasuk dalam merek dagang kami yang terdaftar dan tidak terdaftar di AS dan negara lainnya.