Modul penggila pemburu memberi pemain cara yang inheren bergamifikasi untuk menjelajahi pengalaman Anda, secara organik memperkenalkan mereka ke seluruh tempat.Kemajuan pemain bersifat permanen, sehingga perburuan scavenger dapat berlanjut di seluruh sesi.
Penggunaan modul
Instalasi
Untuk menggunakan modul Berburu Scavenger dalam pengalaman:
Pastikan pengurutan Model dipilih, lalu klik tombol Lihat Semua untuk Kategori .
Temukan dan klik ubin Modul Pengembang .
Temukan modul Berburu Pemburu dan klik, atau seret dan lepaskan ke dalam tampilan 3D.
Di jendela Explorer, pindahkan seluruh model Berburu Scavenger ke ServerScriptService .Setelah menjalankan pengalaman, modul akan didistribusikan ke berbagai layanan dan mulai berjalan.
Gunakan token
Modul berburu scavenger menggunakan token sebagai item yang dicari dan dikumpulkan oleh pemain.Modul ini hadir dengan satu model token yang dapat Anda posisikan di dunia 3D.
Temukan mesh Token1 di dalam folder Ruang kerja dari folder utama modul.
Pindahkan Token1 ke hierarki tingkat atas Ruang kerja dan letakkan di tempat yang diinginkan.
Berikan token nama unik ; nama ini adalah bagaimana modul melacak token yang telah dikumpulkan setiap pemain.
Untuk menambahkan lebih banyak token, salin token yang ada dan beri nama unik.
Jika Anda tidak ingin menggunakan token mesh bundel, apa pun Model atau BasePart akan berfungsi, asalkan memenuhi kriteria berikut:
Objek memiliki tag CollectionService dari ScavengerHuntPart .Jika diinginkan, nama tag CollectionService yang digunakan modul dapat diubah dengan menetapkan nilai berbeda untuk tokenTag dalam panggilan konfigurasiServer.
Objek berisi anak StringValue instansi yang ditetapkan ke "flavor text" untuk ditampilkan saat token dikumpulkan.
Model Bagian Mesh
Gunakan wilayah
Wilayah berbeda sedikit dari token, karena area besar yang ditandai sebagai "dikumpulkan" setelah pemain memasukinya.Selain itu, ketika pemain meninggalkan wilayah, teks rasa modal secara otomatis ditolak dan wilayah itu sendiri dihapus dari ruang kerja.
Buat bagian yang diikat di sekitar wilayah, seperti blok atau bola.Modul akan secara otomatis menonaktifkan properti CanCollide pada saat eksekusi sehingga pemain tidak secara fisik bertabrakan dengan wilayah.
Berikan namanya unik . Nama ini adalah bagaimana modul melacak daerah mana setiap pemain telah masuk.
Menggunakan bagian Tag dari properti bagian, atau Editor Tag Studio, terapkan tag ScavengerHuntPart ke bagian sehingga CollectionService mendeteksi.Jika diinginkan, nama tag yang digunakan oleh modul dapat diubah dengan menetapkan nilai berbeda untuk tokenTag dalam panggilan konfigurasiServer.
Termasuk anak StringValue instansi yang ditetapkan ke "flavor text" untuk ditampilkan saat wilayah dimasukkan.
Konfigurasi
Modul sudah diatur sebelumnya untuk bekerja untuk sebagian besar kasus penggunaan, tetapi dapat dengan mudah disesuaikan.Sebagai contoh, untuk mengubah kecepatan rotasi token dan menyesuaikan pesan informasi modal:
Di StarterPlayerScripts , buat yang baru LocalScript dan ganti namanya menjadi KonfigurasiPemburuSampah .
Tempelkan kode berikut ke skrip baru.
Skrip Lokal - KonfigurasiPemburuHartaKarunlocal ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureClient({infoModalText = "Welcome to my Scavenger Hunt!",completeModalText = "Thanks for playing my Scavenger Hunt!",tokenRotationSpeed = 60,})
Acara koleksi
Setiap kali pemain mengumpulkan token atau memasuki wilayah, peristiwa dikumpulkan terjadi.Anda dapat mendengarkan acara ini dari sisi server Script dan menanggapi sesuai.Fungsi terhubung menerima Player yang bertabrakan dengan token atau masuk ke wilayah dan nama token atau wilayah itu.
Demikian pula, ketika pemain mengumpulkan semua token atau memasuki semua wilayah ditagih, acara semuaDikumpulkan terjadi dan fungsi terhubung menerima Player yang terkait.Fungsi ini hanya ditembakkan sekali per pemain dan dapat digunakan untuk menghadiahkan pemain itu dengan lencana buruk, akses ke area baru, mata uang pengalaman dalam, dll.
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName)
print(player.DisplayName, itemName)
end)
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
GUI Kustom
Modul ini mengekspos beberapa opsi untuk menyesuaikan GUI defaultnya, tetapi Anda dapat memilih untuk menampilkan elemen GUI khusus alih-alih.
Ketika useCustomModals diatur ke true dalam fungsi konfigurasiClient, acara showInfoModal terjadi setiap kali pemain mengaktifkan pelacak token.Demikian pula, acara showCompleteModal terjadi ketika pemain telah mengumpulkan semuanya dalam perburuan scavenger.Kedua peristiwa ini dapat didengarkan dalam LocalScript .
Skrip Lokal
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- Tampilkan modul informasi khusus
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Tampilkan modul lengkap khusus
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)
Keterlihatan GUI
Secara default, perburuan pemburu menyembunyikan semua ScreenGuis dan CoreGuis (kecuali daftar pemain) ketika modal informasi atau modal selesai muncul.Jika Anda ingin menggantikan perilaku penyembunyian otomatis ini dan memutuskan secara programatik mana GUI yang harus tetap terlihat, sertakan panggilan balik hideOtherGuis dan showOtherGuis dan tanggapi dengan logika khusus Anda sendiri.
Skrip Lokal
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local StarterGui = game:GetService("StarterGui")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
local player = Players.LocalPlayer
local playerGui = player:WaitForChild("PlayerGui")
local hiddenInstances = {}
-- Buat GUI layar yang tidak akan disembunyikan
local specialGuiInstance = Instance.new("ScreenGui")
-- Menggambar GUI layar di atas GUI perburuan scavenger
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 = "Remains visible when displaying modals"
specialLabel.Font = Enum.Font.GothamMedium
specialLabel.TextSize = 24
specialLabel.Parent = specialGuiInstance
ScavengerHunt.hideOtherGuis(function()
-- Sembunyikan semua GUI layar yang didefinisikan 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 khusus
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Tampilkan semua GUI layar yang didefinisikan oleh pengembang yang disembunyikan
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Tampilkan GUI inti khusus yang disembunyikan
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Referensi API
Fungsi
konfigurasiClient
konfigurasiKlien(config: table)
Menggantikan opsi konfigurasi sisi klien default melalui kunci/nilai berikut di tabel config.Fungsi ini hanya dapat dipanggil dari LocalScript .
Kunci | Deskripsi | Standar |
---|---|---|
autoDismissTime | Waktu dalam detik sebelum modul secara otomatis menolak dirinya sendiri atau menavigasi ke halaman berikutnya jika ada. Atur ke 0 untuk menonaktifkan. | 20 |
closeModalGamepad | Tombol gamepad digunakan untuk menutup modal ( Enum.KeyCode ). | ButtonA |
closeModalKeyboard | Tombol keyboard yang digunakan untuk menutup modul ( Enum.KeyCode ). | E |
completeModalText | Teks untuk ditampilkan di modal yang muncul setelah mengklik pelacak token saat berburu scavenger selesai. | “Terima kasih telah berpartisipasi!” |
infoModalText | Teks untuk ditampilkan di modal yang muncul setelah mengklik pelacak token. | “Temukan semua token untuk menyelesaikan perburuan” |
tokenRotationSpeed | Kecepatan di mana token berputar, dalam derajat per detik. Atur ke 0 untuk mencegah rotasi. | 20 |
nextArrowImage | Gambar yang digunakan untuk menunjukkan ada lebih banyak halaman modal untuk ditampilkan setelah halaman modal saat ini. | “rbxassetid://8167172095” |
openTokenTrackerGamepad | Tombol gamepad digunakan untuk menampilkan modal yang muncul setelah mengaktifkan pelacak token ( Enum.KeyCode ). | ButtonY |
openTokenTrackerKeyboard | Tombol keyboard yang digunakan untuk menampilkan modul yang muncul setelah mengaktifkan pelacak token ( Enum.KeyCode ). | Y |
openTokenTrackerGamepadButtonImage | Gambar untuk tombol gamepad yang digunakan untuk mengaktifkan pelacak token. | “rbxassetid://8025860488” |
regionIcon | Ikon untuk ditampilkan di samping pelacak token saat memasuki wilayah. | “rbxassetid://8073794624” |
tokenIcon | Ikon untuk ditampilkan di samping pelacak token saat mengumpulkan token. | “rbxassetid://8073794477” |
tokenTrackerPositionSmallDevice | Posisi UI pelacak token di perangkat kecil seperti telepon ( UDim2 ). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | Posisi UI pelacak token di perangkat yang lebih besar seperti tablet dan PC ( UDim2 ). | (1, 0, 1, -16) |
useRegions | Alih-alih token, gunakan wilayah. | salah |
Skrip Lokal
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureClient({infoModalText = "Welcome to my Scavenger Hunt!",completeModalText = "Thanks for playing my Scavenger Hunt!",tokenRotationSpeed = 60,navigationBeam = {lightEmission = 1},modal = {textSize = 14},})
konfigurasiServer
konfigurasiServer(config: table )
Menggantikan opsi konfigurasi sisi server default melalui kunci/nilai berikut di tabel config.Fungsi ini hanya dapat dipanggil dari Script .
Kunci | Deskripsi | Standar |
---|---|---|
tokenTag | Tag yang digunakan oleh CollectionService untuk menemukan semua token atau wilayah yang digunakan dalam perburuan scavenger. | “Bagian Perburuan Sampah” |
datastoreName | Nama dari DataStore yang digunakan oleh perburuan scavenger untuk menyimpan kemajuan koleksi setiap pemain. | “Token Pemburu Sampah” |
resetOnPlayerRemoving | Jika benar, mengatur ulang kemajuan pengguna saat mereka meninggalkan pengalaman; nyaman untuk tidak menyimpan kemajuan saat menguji perburuan scavenger. | salah |
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.configureServer({tokenTag = "GreenGem",})
nonaktifkan
menonaktifkan()
Sembunyikan semua UI untuk berburu scavenger, memutus semua pendengar acara input, dan mencegah pemain mengumpulkan token atau berinteraksi dengan wilayah.Fungsi ini hanya dapat dipanggil dari Script.
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.disable()
aktifkan
aktifkan()
Menampilkan semua UI untuk perburuan scavenger, menghubungkan semua pendengar acara input, dan memungkinkan pemain untuk mengumpulkan token dan berinteraksi dengan wilayah.Fungsi ini hanya dapat dipanggil dari Script.
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))ScavengerHunt.enable()
Peristiwa
mengumpulkan
Melepaskan api saat pemain bertabrakan dengan token atau memasuki wilayah.Fungsi terhubung akan menerima Player yang bertabrakan dengan token atau masuk ke wilayah dan nama token yang bertabrakan atau wilayah yang masuk.Acara ini hanya dapat terhubung di Script .
Parameter | |
---|---|
pemain: Player | Pengguna yang bertabrakan dengan token atau memasuki wilayah. |
itemName: string | Nama token yang bertabrakan atau wilayah yang dimasukkan. |
totalDikumpulkan: number | Jumlah total token yang dikumpulkan oleh pengguna yang diwakili oleh player . |
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.collected:Connect(function(player, itemName, totalCollected)
print(player.DisplayName, itemName, totalCollected)
end)
semuaTerumpil
Melepaskan api saat pemain mengumpulkan semua token atau memasuki semua wilayah dalam perburuan scavenger.Fungsi terhubung akan menerima Player yang mengumpulkan semua token, dan hanya pernah ditembak sekali per pemain.Acara ini hanya dapat terhubung di Script .
Parameter | |
---|---|
pemain: Player | Pemain yang mengumpulkan semua token atau memasuki semua wilayah. |
Skrip
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)
tampilkanInfoModal
Melepaskan api ketika pemain mengklik pelacak token saat opsi konfigurasi diatur ke benar.Acara ini hanya dapat terhubung di LocalScript .
Skrip Lokal
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
local infoModal = Players.LocalPlayer.PlayerGui.InfoModal
infoModal.Enabled = true
end)
tampilkanModal Lengkap
Melepaskan api ketika pemain mengklik pelacak token saat opsi konfigurasi diatur ke dan pemain telah mengumpulkan semua token dalam perburuan scavenger.Acara ini hanya dapat terhubung di LocalScript .
Skrip Lokal
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showCompleteModal:Connect(function()
local completeModal = Players.LocalPlayer.PlayerGui.CompleteModal
completeModal.Enabled = true
end)
Panggilan Balik
sembunyikanOtherGuis
sembunyikanOtherGuis( callback: function )
Panggilan balasan ini dijalankan segera sebelum modal ditampilkan, memungkinkan Anda menonaktifkan seluruh ScreenGuis atau elemen di dalamnya sebelum modal ditampilkan.Lihat Visibilitas GUI untuk rincian dan kode sampel.
tunjukkanOtherGuis
tampilkanOtherGuis( callback: function )
Panggilan balasan ini dijalankan segera setelah modal ditolak, memungkinkan Anda untuk mengaktifkan seluruh ScreenGuis atau elemen di dalamnya.Lihat Visibilitas GUI untuk rincian dan kode sampel.