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 yang terbatas waktu, di mana pemain dapat menyelesaikan tujuan misi untuk mendapatkan hadiah yang hanya tersedia selama periode waktu yang telah ditentukan. Dengan menggunakan opsi kustomisasi paket ini, 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 dari 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 permainan yang terbuka, termasuk paket fitur!

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

Untuk mendapatkan paket dari inventaris Anda ke dalam permainan Anda:

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

  2. Di jendela Toolbox, klik tab Inventaris. Penyortiran 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. Navigasikan ke tab Keamanan, lalu aktifkan Aktifkan Akses Studio ke Layanan API.

Konfigurasi 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, apakah Anda mendefinisikan misi atau tidak, Anda tetap harus menambahkan paket fitur Misi ke permainan Anda agar kode Tiket Musiman berfungsi.

Misi masing-masing memiliki serangkaian 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 XP kepada pemain ketika 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 tingkatan musim

Selain memberikan XP kepada pemain ketika mereka menyelesaikan misi, paket fitur Tiket Musiman menggunakan paket fitur Misi untuk mendefinisikan tingkatan hadiah unik dalam sebuah musim. Jika Anda ingin menambahkan ikon di layar untuk hadiah tingkatan yang dapat diperoleh pemain jika mereka mendapatkan cukup XP, tambahkan ID aset di konfigurasi Misi untuk setiap hadiah tingkatan 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",
},
},
},
}

Konfigurasi musim

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

Definisikan tiket

Tiket memungkinkan Anda untuk mengenakan biaya kepada pemain dengan biaya Robux satu kali untuk mengakses misi dan hadiah potensial dari tiket musiman. Setelah Anda membuat tiket dengan ID aset unik, Anda dapat mengatur detail tiket di bidang premiumTrack dari musim Anda. Sebagai contoh, cuplikan kode berikut mendefinisikan tiket dengan ID aset contoh 928192647 untuk mewakili tiket musiman, kemudian memberikan tiket musiman nama jalur "Jalur Premium".

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

Konfigurasi tingkatan dan hadiah

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

  • Gratis - Hadiah yang dapat diperoleh pemain tanpa membeli tiket musiman.
  • Premium - Hadiah yang hanya dapat diperoleh pemain dengan membeli tiket musiman.

Untuk mendemonstrasikan, tinjau cuplikan kode berikut untuk sebuah musim dengan satu tingkatan 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 sebuah hadiah, dan displayName menampilkan nama untuk hadiah tersebut. Perhatikan bahwa displayName ditampilkan di UI, tetapi rewardId disembunyikan dari pemain dan terutama digunakan untuk tujuan penyimpanan data.

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

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

Definisikan detail musim

Sekarang Anda memiliki tiket musiman dengan tingkatan 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 ini 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 Luar Angkasa",
seasonId = "season1",

Integrasikan logika server

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

Anda terutama perlu membuat fungsi penangan untuk memberikan hadiah yang diklaim kepada pemain Anda. Sebagai contoh, cuplikan kode berikut membuat fungsi rewardClaimedHandlerFunction() yang melacak ketika pemain maju ke tingkatan berikutnya, kemudian memberikan mereka baik hadiah gratis, atau baik hadiah gratis dan premium jika mereka membeli tiket musiman.

Untuk keperluan Anda, ganti panggilan task.wait() dengan logika yang memungkinkan pemain mendapatkan hadiah yang telah mereka klaim di musim tersebut. 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

Konfigurasi konstanta

Konstanta untuk paket fitur Core berada di dua tempat:

  • 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 utama yang mungkin ingin Anda sesuaikan untuk memenuhi persyaratan desain permainan Anda:
  • ID aset suara
  • Durasi efek pembelian dan warna partikel Selain itu, Anda dapat menemukan string untuk terjemahan yang dibagi menjadi 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 musiman Anda. Namun, ingatlah bahwa jika Anda memindahkan salah satu objek 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 jalur, frame gulir dari hadiah untuk tingkatan, dan data tingkatan.
  • SeasonDescriptionFrame - Frame di header yang menampilkan judul musim, deskripsi, dan hitung mundur.
  • TierRewardFrame - Frame yang menampilkan hadiah spesifik untuk sebuah tingkatan.
  • TierProgressFrame - Frame yang menampilkan kemajuan yang telah dibuat pemain menuju tingkatan saat ini yang 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.