Berburu Pemburu

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

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:

  1. Dari tab Pandangan, buka Kotak Alat dan pilih tab Toko Pencipta .

    Toolbox toggle button in Studio
  2. Pastikan pengurutan Model dipilih, lalu klik tombol Lihat Semua untuk Kategori .

  3. Temukan dan klik ubin Modul Pengembang .

  4. Temukan modul Berburu Pemburu dan klik, atau seret dan lepaskan ke dalam tampilan 3D.

  5. 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.

  1. Temukan mesh Token1 di dalam folder Ruang kerja dari folder utama modul.

  2. Pindahkan Token1 ke hierarki tingkat atas Ruang kerja dan letakkan di tempat yang diinginkan.

  3. Berikan token nama unik ; nama ini adalah bagaimana modul melacak token yang telah dikumpulkan setiap pemain.

  4. 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.

  1. 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.

  2. Berikan namanya unik . Nama ini adalah bagaimana modul melacak daerah mana setiap pemain telah masuk.

  3. 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.

  4. 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:

  1. Di StarterPlayerScripts , buat yang baru LocalScript dan ganti namanya menjadi KonfigurasiPemburuSampah .

  2. Tempelkan kode berikut ke skrip baru.

    Skrip Lokal - KonfigurasiPemburuHartaKarun

    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,
    })

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 .

KunciDeskripsiStandar
autoDismissTimeWaktu dalam detik sebelum modul secara otomatis menolak dirinya sendiri atau menavigasi ke halaman berikutnya jika ada. Atur ke 0 untuk menonaktifkan.20
closeModalGamepadTombol gamepad digunakan untuk menutup modal ( Enum.KeyCode ).ButtonA
closeModalKeyboardTombol keyboard yang digunakan untuk menutup modul ( Enum.KeyCode ).E
completeModalTextTeks untuk ditampilkan di modal yang muncul setelah mengklik pelacak token saat berburu scavenger selesai.“Terima kasih telah berpartisipasi!”
infoModalTextTeks untuk ditampilkan di 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 ada lebih banyak halaman modal untuk ditampilkan setelah halaman modal saat ini.“rbxassetid://8167172095”
openTokenTrackerGamepadTombol gamepad digunakan untuk menampilkan modal yang muncul setelah mengaktifkan pelacak token ( Enum.KeyCode ).ButtonY
openTokenTrackerKeyboardTombol keyboard yang digunakan untuk menampilkan modul yang muncul setelah mengaktifkan pelacak token ( Enum.KeyCode ).Y
openTokenTrackerGamepadButtonImageGambar untuk tombol gamepad yang digunakan untuk mengaktifkan pelacak token.“rbxassetid://8025860488”
regionIconIkon untuk ditampilkan di samping pelacak token saat memasuki wilayah.“rbxassetid://8073794624”
tokenIconIkon untuk ditampilkan di samping pelacak token saat mengumpulkan token.“rbxassetid://8073794477”
tokenTrackerPositionSmallDevicePosisi UI pelacak token di perangkat kecil seperti telepon ( 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.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 .

KunciDeskripsiStandar
tokenTagTag yang digunakan oleh CollectionService untuk menemukan semua token atau wilayah yang digunakan dalam perburuan scavenger.“Bagian Perburuan Sampah”
datastoreNameNama dari DataStore yang digunakan oleh perburuan scavenger untuk menyimpan kemajuan koleksi setiap pemain.“Token Pemburu Sampah”
resetOnPlayerRemovingJika 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: PlayerPengguna yang bertabrakan dengan token atau memasuki wilayah.
itemName: stringNama token yang bertabrakan atau wilayah yang dimasukkan.
totalDikumpulkan: numberJumlah 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: PlayerPemain 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.