Pertandingan Mengumpulkan Barang

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

Modul ScavengerHunt pengembang memberikan cara yang menggembirakan secara inheren bagi pemain untuk menjelajahi pengalaman Anda, secara organik memperkenalkan mereka ke seluruh tempat. Kemajuan pemain bersifat persisten, sehingga perburuan barang dapat berlanjut di antara sesi.

Penggunaan modul

Instalasi

Untuk menggunakan modul ScavengerHunt dalam suatu pengalaman:

  1. Dari menu Jendela di Studio atau toolbar tab Beranda, buka Toolbox dan pilih tab Toko Kreator.

  2. Pastikan penyortiran Model dipilih, lalu klik tombol Lihat Semua untuk Kategori.

  3. Temukan dan klik ubin Paket.

  4. Temukan modul Pertandingan Mengumpulkan Barang dan klik, atau seret dan jatuhkan ke dalam tampilan 3D.

  5. Di jendela Jelajah, pindahkan seluruh model ScavengerHunt ke dalam ReplicatedStorage. Setelah menjalankan pengalaman, modul akan mulai berjalan.

Menggunakan token

Modul pertandingan mengumpulkan barang menggunakan token sebagai item yang dicari dan dikumpulkan oleh pemain. Modul ini dilengkapi dengan satu model token yang dapat Anda posisikan di dunia 3D.

  1. Temukan mesh Token1 di dalam folder Workspace di folder utama modul.

  2. Pindahkan Token1 ke dalam hierarki Workspace tingkat atas dan posisikan di tempat yang diinginkan.

  3. Beri token nama unik; nama ini adalah cara modul melacak token mana yang telah dikumpulkan oleh setiap pemain.

  4. Untuk menambahkan lebih banyak token, duplikat token yang ada dan beri nama yang unik.

Jika Anda tidak ingin menggunakan token mesh yang disertakan, model Model atau BasePart mana pun akan berfungsi, asalkan memenuhi kriteria berikut:

  • Objek memiliki tag CollectionService bernama ScavengerHuntPart. Jika diinginkan, nama tag CollectionService yang digunakan modul dapat diubah dengan mengatur nilai yang berbeda untuk tokenTag dalam panggilan configureServer.

  • Objek mengandung instance StringValue anak yang diatur ke "flavor text" untuk ditampilkan saat token dikumpulkan.

    Model
    MeshPart

Menggunakan wilayah

Wilayah sedikit berbeda dari token, karena area besar yang ditandai sebagai "dikumpulkan" setelah pemain memasukinya. Selain itu, ketika seorang pemain keluar dari wilayah, modal flavor text secara otomatis akan ditutup dan wilayah itu sendiri dihapus dari workspace.

  1. Buat bagian terikat di sekitar wilayah, seperti blok atau bola. Modul ini akan secara otomatis menonaktifkan properti CanCollide saat runtime sehingga pemain tidak bertabrakan secara fisik dengan wilayah.

  2. Beri nama unik. Nama ini adalah cara modul melacak wilayah mana yang telah dimasuki oleh setiap pemain.

  3. Menggunakan bagian Tags di properti bagian, terapkan tag ScavengerHuntPart pada bagian agar CollectionService dapat mendeteksinya. Jika diinginkan, nama tag yang digunakan modul dapat diubah dengan mengatur nilai yang berbeda untuk tokenTag dalam panggilan configureServer.

  4. Sertakan instance StringValue anak yang diatur ke "flavor text" yang akan ditampilkan saat wilayah dimasuki.

Konfigurasi

Modul ini telah dikonfigurasi sebelumnya untuk bekerja dalam sebagian besar kasus penggunaan, tetapi dapat dengan mudah disesuaikan. Misalnya, untuk mengubah kecepatan rotasi token dan menyesuaikan pesan informasi modal:

  1. Dalam StarterPlayerScripts, buat LocalScript baru dan ubah namanya menjadi ConfigureScavengerHunt.

  2. Tempelkan kode berikut ke dalam skrip baru.

    LocalScript - ConfigureScavengerHunt

    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
    ScavengerHunt.configureClient({
    infoModalText = "Selamat datang di Pertandingan Mengumpulkan Barang saya!",
    completeModalText = "Terima kasih telah memainkan Pertandingan Mengumpulkan Barang saya!",
    tokenRotationSpeed = 60,
    })

Peristiwa pengumpulan

Setiap kali pemain mengumpulkan token atau memasuki wilayah, peristiwa collected dipicu. Anda dapat mendengarkan peristiwa ini dari Script sisi-server dan merespons sesuai kebutuhan. Fungsi terhubung menerima Player yang bertabrakan dengan token atau memasuki wilayah dan nama token atau wilayah tersebut.

Demikian pula, ketika seorang pemain mengumpulkan semua token atau memasuki semua wilayah yang ditandai, peristiwa allCollected dipicu dan fungsi terhubung menerima Player yang bersangkutan. Fungsi ini hanya dipicu sekali per pemain dan dapat digunakan untuk memberi penghargaan kepada pemain tersebut dengan lencana, akses ke area baru, mata uang dalam pengalaman, dll.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.collected:Connect(function(player, itemName)
print(player.DisplayName, itemName)
end)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " menyelesaikan perburuan!")
end)

GUI Kustom

Modul ini menawarkan beberapa opsi untuk menyesuaikan GUI bawaan, tetapi Anda dapat memilih untuk menampilkan elemen GUI kustom sebagai gantinya.

Ketika useCustomModals diatur ke true dalam fungsi configureClient, peristiwa showInfoModal dipicu setiap kali pemain mengaktifkan pelacak token. Demikian pula, peristiwa showCompleteModal dipicu saat pemain telah mengumpulkan semuanya dalam perburuan barang. Keduanya dapat didengarkan dalam LocalScript.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.showInfoModal:Connect(function()
-- Tampilkan modal informasi kustom
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Tampilkan modal penyelesaian kustom
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)

Visibilitas GUI

Secara default, pertandingan mengumpulkan barang menyembunyikan semua ScreenGuis dan CoreGuis (kecuali untuk daftar pemain) saat modal informasi atau modal penyelesaian muncul. Jika Anda ingin mengesampingkan perilaku menyembunyikan otomatis ini dan secara programatis memutuskan GUI mana yang harus tetap terlihat, sertakan callback hideOtherGuis dan showOtherGuis dan tanggapi dengan logika kustom Anda sendiri.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Buat GUI layar yang tidak akan disembunyikan
local specialGuiInstance = Instance.new("ScreenGui")
-- Gambar GUI layar di atas GUI pertandingan mengumpulkan barang
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Tambahkan label teks ke GUI
local specialLabel = Instance.new("TextLabel")
specialLabel.Size = UDim2.fromScale(1, 0.1)
specialLabel.Text = "Tetap terlihat saat menampilkan modal"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
ScavengerHunt.hideOtherGuis(function()
-- Sembunyikan semua GUI layar yang ditentukan oleh pengembang
local instances = playerGui:GetChildren()
for _, instance in instances do
if instance:IsA("ScreenGui") and not instance.Name == "ScavengerHunt" and instance.Enabled then
instance.Enabled = false
table.insert(hiddenInstances, instance)
end
end
-- Sembunyikan GUI inti tertentu
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Tampilkan semua GUI layar yang ditentukan oleh pengembang yang disembunyikan
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Tampilkan GUI inti tertentu yang disembunyikan
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

Referensi API

Fungsi

configureClient

configureClient(config: table)

Mengganti opsi konfigurasi sisi klien default melalui kunci/nilai berikut dalam tabel config. Fungsi ini hanya dapat dipanggil dari LocalScript.

KunciDeskripsiDefault
autoDismissTimeWaktu dalam detik sebelum modal secara otomatis menutup dirinya sendiri atau bernavigasi ke halaman berikutnya jika ada. Atur ke 0 untuk menonaktifkan.20
closeModalGamepadTombol gamepad yang digunakan untuk menutup modal (Enum.KeyCode).ButtonA
closeModalKeyboardKunci keyboard yang digunakan untuk menutup modal (Enum.KeyCode).E
completeModalTextTeks yang ditampilkan pada modal yang muncul setelah mengklik pelacak token ketika perburuan barang selesai."Terima kasih telah berpartisipasi!"
infoModalTextTeks yang ditampilkan pada modal yang muncul setelah mengklik pelacak token."Temukan semua token untuk menyelesaikan perburuan"
tokenRotationSpeedKecepatan di mana token berputar, dalam derajat per detik. Atur ke 0 untuk mencegah rotasi.20
nextArrowImageGambar yang digunakan untuk menunjukkan bahwa ada lebih banyak halaman modal yang harus ditampilkan setelah halaman modal saat ini."rbxassetid://8167172095"
openTokenTrackerGamepadTombol gamepad yang digunakan untuk menampilkan modal yang muncul setelah mengaktifkan pelacak token (Enum.KeyCode).ButtonY
openTokenTrackerKeyboardKunci keyboard yang digunakan untuk menampilkan modal yang muncul setelah mengaktifkan pelacak token (Enum.KeyCode).Y
openTokenTrackerGamepadButtonImageGambar untuk tombol gamepad yang digunakan untuk mengaktifkan pelacak token."rbxassetid://8025860488"
regionIconIkon yang ditampilkan di samping pelacak token saat memasuki wilayah."rbxassetid://8073794624"
tokenIconIkon yang ditampilkan di samping pelacak token saat mengumpulkan token."rbxassetid://8073794477"
tokenTrackerPositionSmallDevicePosisi UI pelacak token di perangkat kecil seperti ponsel (UDim2).(1, 0, 0, 84)
tokenTrackerPositionLargeDevicePosisi UI pelacak token di perangkat yang lebih besar seperti tablet dan PC (UDim2).(1, 0, 1, -16)
useRegionsAlih-alih token, gunakan wilayah.false
LocalScript

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.configureClient({
infoModalText = "Selamat datang di Pertandingan Mengumpulkan Barang saya!",
completeModalText = "Terima kasih telah memainkan Pertandingan Mengumpulkan Barang saya!",
tokenRotationSpeed = 60,
navigationBeam = {
lightEmission = 1
},
modal = {
textSize = 14
},
})

configureServer

configureServer(config: table)

Mengganti opsi konfigurasi sisi server default melalui kunci/nilai berikut dalam tabel config. Fungsi ini hanya dapat dipanggil dari Script.

KunciDeskripsiDefault
tokenTagTag yang digunakan oleh CollectionService untuk menemukan semua token atau wilayah yang digunakan dalam pertandingan mengumpulkan barang."ScavengerHuntPart"
datastoreNameNama DataStore yang digunakan oleh pertandingan mengumpulkan barang untuk menyimpan kemajuan koleksi masing-masing pemain."ScavengerHuntTokens"
resetOnPlayerRemovingJika true, mereset kemajuan pengguna saat mereka meninggalkan pengalaman; nyaman untuk tidak menyimpan kemajuan saat menguji pertandingan mengumpulkan barang.false
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.configureServer({
tokenTag = "GreenGem",
})

disable

disable()

Menyembunyikan semua UI untuk pertandingan mengumpulkan barang, memutus semua pendengar peristiwa input, dan mencegah pemain mengumpulkan token atau berinteraksi dengan wilayah. Fungsi ini hanya dapat dipanggil dari Script.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.disable()

enable

enable()

Menampilkan semua UI untuk pertandingan mengumpulkan barang, menghubungkan semua pendengar peristiwa input, dan memungkinkan pemain mengumpulkan token dan berinteraksi dengan wilayah. Fungsi ini hanya dapat dipanggil dari Script.

Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.enable()

Peristiwa

collected

Dipicu ketika seorang pemain bertabrakan dengan token atau memasuki wilayah. Fungsi terhubung akan menerima Player yang bertabrakan dengan token atau memasuki wilayah dan nama token yang bertabrakan atau wilayah yang dimasuki. Peristiwa ini hanya dapat dihubungkan dalam Script.

Parameter
player: PlayerPengguna yang bertabrakan dengan token atau memasuki wilayah.
itemName: string Nama token yang bertabrakan atau wilayah yang dimasuki.
totalCollected: numberJumlah total token yang dikumpulkan oleh pengguna yang diwakili oleh player.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)

allCollected

Dipicu ketika seorang pemain mengumpulkan semua token atau memasuki semua wilayah dalam pertandingan mengumpulkan barang. Fungsi terhubung akan menerima Player yang mengumpulkan semua token, dan event ini hanya dipicu sekali per pemain. Peristiwa ini hanya dapat dihubungkan dalam Script.

Parameter
player: PlayerPemain yang mengumpulkan semua token atau memasuki semua wilayah.
Script

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " menyelesaikan perburuan!")
end)

showInfoModal

Dipicu ketika pemain mengklik pelacak token saat opsi pengaturan useCustomModals diatur ke true. Peristiwa ini hanya dapat dihubungkan dalam LocalScript.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.showInfoModal:Connect(function()
local infoModal = Players.LocalPlayer.PlayerGui.InfoModal
infoModal.Enabled = true
end)

showCompleteModal

Dipicu ketika pemain mengklik pelacak token saat opsi pengaturan useCustomModals diatur ke true dan pemain telah mengumpulkan semua token dalam perburuan barang. Peristiwa ini hanya dapat dihubungkan dalam LocalScript.

LocalScript

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage.ScavengerHunt)
ScavengerHunt.showCompleteModal:Connect(function()
local completeModal = Players.LocalPlayer.PlayerGui.CompleteModal
completeModal.Enabled = true
end)

Callback

hideOtherGuis

hideOtherGuis(callback: function)

Callback ini berjalan segera sebelum modal ditampilkan, memungkinkan Anda untuk menonaktifkan seluruh ScreenGuis atau elemen di dalamnya sebelum modal ditampilkan. Lihat Visibilitas GUI untuk detail dan contoh kode.

showOtherGuis

showOtherGuis(callback: function)

Callback ini berjalan segera setelah modal ditutup, memungkinkan Anda untuk mengaktifkan seluruh ScreenGuis atau elemen di dalamnya. Lihat Visibilitas GUI untuk detail dan contoh kode.

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