Paket misi

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

Paket fitur Misi menawarkan fungsi keluar dari kotak untuk membuat misi yang dapat diselesaikan pemain untuk mencapai hadiah dan kemajuan dalam pengalaman Anda.Semua misi harus memiliki ID, kategori, dan daftar tugas yang harus diselesaikan pemain untuk menyelesaikan misi.Namun, daftar tugas bisa kosong, sehingga hadiah misi dapat diklaim segera.

Menggunakan opsi kustomisasi paket, Anda dapat menyesuaikan semua misi untuk memenuhi persyaratan permainan unik Anda, seperti:

  • Membuat misi yang berada di atas kapal membawa pemain baru ke dalam pengalaman Anda dan meningkatkan pertahanan D1.
  • Menargetkan penyimpanan D7 dan D30 dengan menambahkan tujuan jangka menengah hingga jangka panjang dan rasa kemajuan.
  • Meningkatkan partisipasi dengan menampilkan berbagai sistem di game Anda dan menghadiahi pemain untuk berinteraksi dengan mereka.

Dapatkan paket

Toko Pencipta 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 Pencipta untuk menambahkan satu atau lebih aset langsung ke pengalaman terbuka, termasuk paket fitur!

Setiap paket fitur memerlukan paket fitur Inti untuk berfungsi dengan benar.Setelah Inti dan Misi fitur paket aset sudah ada di inventaris Anda, Anda dapat menggunakannya kembali di proyek apa pun di platform.

Untuk mendapatkan paket dari inventaris Anda ke pengalaman Anda:

  1. Di bilah alat, pilih tab Tampilkan.

  2. Klik Toolbox . Jendela Toolbox ditampilkan.

    Studio's View tab with the Toolbox tool highlighted.
  3. Di jendela Toolbox , klik tab Inventaris . Tampilan urutan Model Saya ditampilkan.

    Studio's Toolbox window with the Inventory tab highlighted.
  4. Klik tombol Fitur Paket Inti , lalu tombol Paket Fitur Misi .Kedua folder paket ditampilkan di jendela Explorer .

  5. Seret folder paket ke dalam ReplicatedStorage .

Definisikan misi

Setiap misi yang dapat diselesaikan termasuk serangkaian tugas yang harus diselesaikan untuk menyelesaikan misi, opsi konfigurasi, dan metadata tampilan opsional, semua yang dapat didefinisikan dalam ReplicatedStorage.Missions.Configs.Missions , dengan jenis diekspor dari skrip Types di folder yang sama.

Bidang yang diperlukan

Bidang berikut diperlukan untuk setiap misi.

NamaJenisDeskripsi
missionIdstringKunci tabel Misi utama. Semua misi diidentifikasi oleh string unik mereka sendiri.
categoryIdstringMisi harus milik kategori, dan dikumpulkan berdasarkan kategori di UI.
taskstableDaftar tugas yang harus diselesaikan pemain untuk menyelesaikan misi.

Buka kondisi

Secara default, misi dibuka untuk pemain secara otomatis dan dapat diselesaikan tepat sekali.Namun, Anda dapat menggunakan opsi konfigurasi berikut opsional untuk mengubah perilaku ini.

NamaJenisDeskripsi
prerequisitestableDaftar ID misi lain yang harus diselesaikan sebelum misi dapat dibuka.
manualOnlyboolNonaktifkan pembukaan otomatis misi.Sebagai gantinya, fungsi harus dipanggil untuk membuka misi.Kondisi pembukaan lainnya masih harus dipenuhi juga.
availableAfterUtcboolMisi tidak dapat dibuka sebelum waktu yang ditentukan dalam UTC.
availableBeforeUtcboolMisi tidak dapat dibuka setelah waktu yang ditentukan dalam UTC. Jika dibuka tetapi tidak diselesaikan sebelum waktu ini, misi akan gagal.
repeatableboolMisi dibuka kembali setelah selesai.
repeatLimitnumberJika misi dapat diulang, itu tidak dapat diulang lebih dari ini berkali-kali.
repeatCooldownSecondsnumberJika misi dapat diulang, ada penundaan sebelum terbuka.
expireSecondsnumberJika misi dibuka dan tidak diselesaikan dalam waktu yang ditentukan dalam beberapa detik, maka gagal sebagai gantinya.
expireCountOfflineboolJika misi memiliki expireSeconds dan expireCountOffline diatur ke benar, waktu saat pemain tidak benar-benar berada dalam pengalaman akan dihitung untuk kedaluwarsa misi.

metadata

Misi memiliki metadata yang menentukan bagaimana mereka akan ditampilkan di antarmuka pengguna Misi.Anda dapat menggunakan bidang opsional berikut untuk menyesuaikan metadatanya .

NamaJenisDeskripsi
displayNamestringNama untuk ditampilkan untuk misi di antarmuka pengguna alih-alih missionId.
descriptionstringBlok teks yang lebih panjang yang memberikan informasi atau konteks tambahan tentang misi.
visibleAfterCompleteboolJika ditetapkan ke benar, misi akan muncul dalam daftar misi bahkan setelah selesai tetapi ditandai sebagai selesai.
visibleAfterFailedboolJika ditetapkan ke benar, misi akan muncul dalam daftar misi bahkan setelah gagal tetapi ditandai gagal.
visibleBeforeUnlockedboolJika diatur ke benar, misi akan terlihat tetapi dikunci dalam daftar misi sebelum tersedia untuk diselesaikan.
invisibleWhileActiveboolJika ditetapkan ke benar, misi akan tidak terlihat bahkan saat aktif dalam progres.
rewardstableDaftar informasi tampilan hadiah.
  • assetID ( number ) - ID gambar yang ditampilkan di UI misi di bawah hadiah untuk pencarian. Ini diperlukan jika hadiah hadir.
  • displayName ( string ) - Nama yang ditampilkan di UI misi di bawah ikon.

Definisikan tugas

Setiap misi dapat memiliki nol atau lebih banyak tugas.Jika misi memiliki tugas nol, misi dapat diklaim segera setelah dibuka; jika misi memiliki satu atau lebih tugas, setelah tugas selesai, pemain dapat mengumpulkan hadiah apa pun yang terkait dengan misi.Setiap tugas memiliki taskId, yang merupakan kunci yang terkait dengan tugas untuk misi tertentu.

Tugas datang dalam dua jenis:

  • Tugas Berjangka - Memungkinkan Anda memulai dan menghentikan tugas di titik waktu yang berbeda.Jumlah waktu tertentu harus lewat saat timer tugas berjalan, maka tugas selesai.
  • Menghitung Tugas - Memungkinkan Anda menambahkan atau mengatur kemajuan tugas. Saat kemajuan mencapai nilai yang ditetapkan, tugas selesai.

Kedua jenis tugas berbagi bidang berikut:

NamaJenisDeskripsi
taskTypestringMenentukan apakah jenis tugas adalah hitung atau ditentukan waktu.
counterobject(Opsi) Counter yang dilacak tugas ini.Penghitung adalah penyimpanan permanen spesifik pemain untuk nomor atau waktu tertentu.Beberapa tugas dapat melacak satu respons; misalnya, jika lebih dari satu tugas melacak berapa banyak koin yang dikumpulkan pemain, maka mereka semua dapat berbagi respons"koin" yang sama.Tugas-tugas ini dapat secara independen melacak koin baru yang dikumpulkan, mulai dari nol, atau melanjutkan penghitungan dari nilai counter (semua koin sudah dikumpulkan).
  • counterId ( string ) - ID counter yang harus dilacak. Gunakan id ini untuk mendapatkan atau mengatur nilai respons.
  • continueFromCounter (Opsi bool ) - Jika diatur ke benar, kemajuan tugas akan langsung cocok dengan nilai counter daripada jumlah yang telah meningkat.
metadataobject(Opsi) Informasi tentang bagaimana tugas ditampilkan di UI.
  • displayName ( string ) - Nama tugas, digunakan saat ditampilkan di UI.
  • numericType (Opsi string ) - bagaimana nomor kemajuan dalam tugas harus ditampilkan.
    • Fraksi, misalnya.5/10 atau 5k/50k
    • Persentase, misalnya50% atau 10%
    • LongFraction, misalnya5/10 atau 5000/50000
    • Boolean, misalnya.Tidak lengkap
callToActionobject(Opsi) Tombol yang memicu fungsi panggil balasan.
  • callback ( function ) - Fungsi yang dipicu oleh tombol callToAction .
  • buttonText ( string ) - Teks yang ditampilkan di tombol UI.

Hitung bidang tugas

Hitung tugas memiliki nilai yang diperlukan. Saat kemajuan tugas memenuhi jumlah ini, tugas selesai.

NamaJenisDeskripsi
goalCountnumber(Opsi) Kemajuan yang diperlukan untuk menyelesaikan tugas.

Bidang tugas waktu

Tugas waktu memiliki jumlah waktu yang ditargetkan, dan dimulai dan dihentikan. Saat jumlah waktu target terpenuhi, tugas selesai.

NamaJenisDeskripsi
goalSecondsnumberJumlah detik yang harus dilalui untuk menyelesaikan tugas.
startImmediatelyboolJika tugas harus mulai menghitung waktu segera setelah dibuka, bukan setelah dimulai.
includesOfflineTimeboolJika tugas harus termasuk waktu yang dihabiskan saat pemain tidak aktif dalam pengalaman.

Konfigurasi kategori

Kategori tidak harus secara eksplisit didefinisikan untuk digunakan, karena kategori untuk sebuah misi memiliki nilai default yang akan digunakan.Namun, Anda dapat mengkonfigurasi nilai-nilai ini di ReplicatedStorage.Missions.Configs.Categories untuk menambahkan efek tambahan ke kategori.Kategori diidentifikasi oleh unik CategoryIds , yang sama yang disebutkan dalam konfigurasi misi.

NamaJenisDeskripsi
repeatDelaySecondsnumber(Opsi) Jika diatur, semua misi dalam kategori diatur ulang setiap kali jumlah waktu yang ditentukan berlalu, dan mungkin dibuka, diselesaikan, dan hadiah mereka diklaim lagi.Ini terpisah dari misi yang dapat diulang, yang dapat diulang dalam kategori tertentu yang diulang.

Integrasikan logika server

Lihat ReplicatedStorage.Missions.Server.Examples.MissionsExample , yang menunjukkan bagaimana server Anda akan berinteraksi dengan paket fitur Misi .

Anda terutama perlu menghubungkan empat hal setelah menyeret paket fitur Misi ke pengalaman Anda:

  1. Tetapkan misi di konfigurasi misi Anda.

  2. Tambahkan logika ke pengalaman Anda untuk memperbarui kemajuan tugas atau penghitung kemajuan yang terikat.

    README

    -- Meningkatkan kemajuan pada misi Melompat dengan tugas Lompat
    Missions.addProgressToTask(player, "Jumping", "Jumps", 1)
    -- Memulai timer pada misi BattlingTime dengan tugas TimeInBattle
    Missions.startTimedTask(player, "BattlingTime", "TimeInBattle")
    -- Menghentikan waktu pengatur waktu pada misi BattlingTime dengan tugas TimeInBattle
    Missions.stopTimedTask(player, "BattlingTime", "TimeInBattle")
    -- Meningkatkan kemajuan pada semua tugas yang terkait dengan responsLompatan
    CounterSystem.addCounter(player, "Jumps", 1)
    -- Memulai waktu pengatur waktu pada semua tugas terjadwal yang terikat dengan responswaktu di TimeInBattle
    CounterSystem.startTimer(player, "TimeInBattle")
    -- Menghentikan waktu pengatur waktu pada semua tugas terjadwal yang terikat dengan responswaktu di TimeInBattle
    CounterSystem.stopTimer(player, "TimeInBattle")
  3. Tetapkan penangan penyelesaian misi, dan secara opsional buka atau gagalkan penangan.Gunakan penangan penyelesaian untuk menghadiahkan hadiah dari misi dalam pengalaman Anda.

    README

    local function completeHandler(player: Player, missionId: Types.MissionId)
    print(`{player} completed mission {missionId}`)
    -- Hadiahkan pemain hadiah mereka.
    end
    Missions.setCompletionHandler(missionId, completeHandler)
  4. Buka misi yang tidak dibuka secara otomatis. Paket logik misi memastikan bahwa semua persyaratan misi dipenuhi sebelum misi selesai, dan hadiahnya dapat koleksi.

    README

    Missions.unlockMission(player, "Manual")

Konfigurasi konstan

Konstan untuk paket fitur Inti hidup di dua tempat:

  • Konstan bersama hidup di ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants .

  • Konstan khusus paket, dalam hal ini paket fitur Misi hidup di ReplicatedStorage.Missions.Configs.Constants .

Selain itu, Anda dapat menemukan string untuk terjemahan 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 UI misi Anda.Sebagai contoh, di ReplicatedStorage.Missions.Configs.Constants , Anda dapat mengaktifkan SingleTaskMode untuk menampilkan bilah kemajuan untuk tugas langsung di misi itu sendiri untuk misi yang hanya memiliki satu tugas.

Selain itu, jika pengalaman Anda sudah memiliki UI yang ada yang ingin Anda integrasikan dengan paket fitur Misi, klien berisi semua fungsi yang diperlukan untuk mendapatkan informasi tentang misi pemain yang dikirim dari server.