Berburu Rampok

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

The ScavengerHunt 模块开发者 memberikan pemain cara bermain yang bawaan, secara organik memperkenalkan mereka ke seluruh tempat. Kemajuan pemain bertahan, jadi buru2>manusia2> dapat melanjutkan di sesi.

Penggunaan Modul

Pemasangan

Untuk menggunakan modul ScavengerHunt dalam pengalaman:

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

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

  3. Temukan dan klik Modul Dev ubin.

  4. Temukan modul Scavenger Hunt dan klik, atau seret-seret ke dalam tampilan 3D.

  5. Di jendela Explorer, pindahkan seluruh ScavengerHunt model ke ServerScriptService . Setelah mengeksekusi pengalaman, modul akan di distribusikan ke berbagai layanan dan mulai berjalan.

Menggunakan Token

Modul pemburu harta karun menggunakan token sebagai item yang dicari dan dikumpulkan. Modul ini hadir dengan satu model token yang dapat Anda posisikan di dunia 3D.

  1. Temukan Token1 meshes di dalam Folder Workspace di mana Anda menemukan modul utama.

  2. Pindahkan Token1 ke tingkat hierarki Ruang kerja dan letakkan di mana diinginkan.

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

  4. Untuk menambahkan lebih banyak token, duplikasi token yang ada dan berikan nama yang unik.

Jika Anda tidak ingin menggunakan token meshes yang disertakan, apa pun Model atau BasePart akan bekerja, asalkan itu memenuhi kriteria berikut:

  • Objek memiliki tag CollectionService dari ScavengerHuntPart . Jika diinginkan, nama tag CollectionService yang digunakan modul dapat diubah dengan menetapkan nilai yang berbeda untuk 1> tokenTag1> dalam panggilan 4> konfigurasikanServer4>.

  • Objek berisi anak StringValue instance set ke "flavor text" untuk ditampilkan saat token dikumpulkan.

    Model
    MeshPart

Menggunakan Wilayah

Wilayah berbeda sedikit dari token, karena area besar yang ditandai sebagai "dikumpulkan" setelah pemain memasukinya. Selain itu, ketika pemain meninggalkan wilayah, text flavor otomatis menolak dan wilayah itu sendiri dihapus dari ruang kerja.

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

  2. Berikan nama yang unik . Nama ini adalah cara modul melacak daftar mana setiap pemain telah masuk.

  3. Menggunakan bagian Tags dari ke속性 bagian, atau Studio's Tag Editor, menerapkan label ScavengerHuntPart ke bagian sehingga 1> Class.CollectionService1> mendeteksi hal itu. Jika diinginkan, nama tag yang digunakan oleh

  4. Terdiri dari satu atau lebih anak StringValue instance set ke "flavor text" untuk ditampilkan saat wilayah diaktifkan.

Konfigurasi

Modulnya dapat dikonfigurasi sebelumnya untuk bekerja untuk kebanyakan kasus penggunaan, tetapi dapat dengan mudah disesuaikan. Misalnya, untuk mengubah kecepatan rotasi token dan menyesuaikan pesan informasi modalkan:

  1. Di StarterPlayerScripts , buat LocalScript baru dan ganti nama menjadi ConfigureScavengerHunt .

  2. Tempaste kode berikut ke dalam naskah baru.

    Skrip Lokal - Konfigurasi Pemburu Gatal

    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 seorang pemain mengumpulkan token atau memasuki wilayah, acara yang dikumpulkan diaktifkan. Anda dapat mendengarkan acara ini dari sisi server Script dan merespon sesuai. Fungsi terhubung menerima Player yang bertabrakan dengan token atau memasuki wilayah dan nama token atau wilayah terse

Demikian pula, ketika seorang pemain mengumpulkan semua token atau memasuki semua wilayah yang ditandai , acara semua yang dikumpulkan diaktifkan dan fungsi terkait diterima menerima fungsi terkait diterima. Fungsi ini hanya diaktifkan once per

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.

Ketika useCustomModals ditetapkan ke true dalam fungsi konfigurasikanClient, acara 1> showInfoModal1> diaktifkan setiap kali pemain mengaktifkan pemindai token. Secara serupa, acara 4> showCompleteModal4>

Skrip Lokal

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- Tampilkan modul info khusus
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Tampilkan modalkuasi khusus selesai
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)

Kesadaran GUI

Secara default, pemburu gatal menyembunyikan semua ScreenGuis dan CoreGuis (kecuali daftar pemain) ketika info modal atau modele penyelesaian muncul. Jika Anda ingin mengatasi perilaku otomatis ini dan secara

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 tersembunyi
local specialGuiInstance = Instance.new("ScreenGui")
-- Gambil GUI layar di atas GUI berburu harta karun
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()
-- Tunjukkan semua GUI layar yang didefinisikan oleh pengembang yang tersembunyi
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Tampilkan GUI inti khusus yang tersembunyi
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

Referensi API

Fungsi

KonfigurasikanClient

konfigurasikanClient(config: table )

Menggeser opsi konfigurasi pihak klien default melalui tombol/值 berikut di tabel config . Fungsi ini hanya dapat dipanggil dari LocalScript .

KunciDeskripsiStandar
autoDismissTimeWaktu dalam detik sebelum moda otomatis menolak diri atau beralih ke halaman berikutnya jika ada. Tetapkan 0 untuk menonaktifkan.20
closeModalGamepadTombol gamepad digunakan untuk menutup modalk ( Enum.KeyCode ).ButtonA
closeModalKeyboardTombol keyboard digunakan untuk menutup modalk ( Enum.KeyCode ).E
completeModalTextTeks untuk ditampilkan di modalkah yang muncul setelah mengklik pemburu token ketika pemburuhan sampah selesai.“Terima kasih telah berpartisipasi!”
infoModalTextTeks untuk menunjukkan pada modalkah yang muncul setelah mengklik pemantau token.“Temukan semua token untuk menyelesaikan pemburuan”
tokenRotationSpeedKecepatan di mana token berputar, dalam derajat per detik. Tetapkan 0 untuk mencegah rotasi.20
nextArrowImageGambar yang digunakan untuk menunjukkan ada lebih banyak halaman modalku yang dapat ditampilkan setelah halaman modalku saat ini.“rbxassetid://8167172095”
openTokenTrackerGamepadTombol gamepad digunakan untuk menunjukkan modalk yang muncul setelah mengaktifkan token tracker ( Enum.KeyCode ).ButtonY
openTokenTrackerKeyboardTombol keyboard yang digunakan untuk menunjukkan modalk yang muncul setelah mengaktifkan token tracker ( Enum.KeyCode ).Y
openTokenTrackerGamepadButtonImageGambar untuk tombol gamepad yang digunakan untuk mengaktifkan token tracker.“rbxassetid://8025860488”
regionIconIkon untuk ditampilkan di samping token tracker saat memasuki wilayah.“rbxassetid://8073794624”
tokenIconIkon untuk ditampilkan di samping token tracker saat mengumpulkan token.“rbxassetid://8073794477”
tokenTrackerPositionSmallDevicePosisi UI token tracker pada perangkat kecil seperti telepon (UDim2).(1, 0, 0, 84)
tokenTrackerPositionLargeDevicePosisi UI pemantau token pada perangkat besar seperti tablet dan PC (UDim2).(1, 0, 1, -16)
useRegionsAlih-alih token, gunakan wilayah .benar
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
},
})

Konfigurasikan Server

konfigurasikanServer(config: table )

Menggeser opsi konfigurasi server-side default melalui kunci/值 berikut di tabel config . Fungsi ini hanya dapat dipanggil dari Script .

KunciDeskripsiStandar
tokenTagLabel digunakan oleh CollectionService untuk menemukan semua token atau wilayah yang digunakan dalam berburu scavenger.“ScavengerHuntPart”
datastoreNameNama DataStore yang digunakan oleh berburu harta karun untuk menyimpan kemajuan koleksi setiap pemain.“ScavengerHuntTokens”
resetOnPlayerRemovingJika benar, atur ulang kemajuan pengguna saat mereka meninggalkan pengalaman; mudah untuk tidak menyimpan kemajuan saat menguji berburu harta karun.benar
Skrip

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

nonaktifkan

nonaktifkan()

Sembunyikan semua UI untuk berburu harta karun, menghubungkan semua pendengar acara masuk, 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()

Menunjukkan semua UI untuk berburu harta karun, menghubungkan semua pendengar acara masukan, 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()

Acara

dikumpulkan

Mengaktifkan ketika pemain bertabrakan dengan token atau memasuki wilayah. Fungsi yang terhubung akan menerima Player yang bertabrakan dengan token atau memasuki wilayah dan nama token yang dikalahkan. Acara ini hanya dapat dihubungkan dalam Script .

Parameter
pemain: PlayerPengguna yang bertabrakan dengan token atau memasuki wilayah.
itemName: stringNama token yang bertabrakan atau wilayah yang di masukkan.
Total yang Dikumpulkan: numberJumlah total token yang dikumpulkan oleh pengguna 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)

seluruh yangDikumpulkan

Diaktifkan ketika seorang pemain mengumpulkan semua token atau memasuki semua wilayah dalam berburu harta karun. Fungsi terhubung akan menerima Player yang mengumpulkan semua token, dan itu hanya pernah diaktifkan sekali per pemain. Acara ini hanya dapat dihubungkan dalam 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

Diaktifkan ketika pemain mengklik pada token tracker ketika useCustomModalsopsi konfigurasi ditetapkan ke true. Acara ini hanya dapat dihubungkan dalam 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

Diaktifkan ketika pemain mengklik pemantar token saat konfigurasi useCustomModalskonfigurasi pilihan ditetapkan ke true dan pemain telah mengumpulkan semua token dalam scavenger hunt. Acara ini hanya dapat dihubungkan dalam 1> Class.LocalScript1> .

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

sembunyikanGuis lainnya

sembunyikan OtherGuis (CALLBACK: function )

Panggilan ini berjalan segera sebelum modal ditampilkan, memungkinkan Anda menonaktifkan seluruh ScreenGuis atau elemen di dalamnya sebelum modal ditampilkan. Lihat Kesadaran GUI untuk detail dan kode sampel.

tampilkan OtherGuis

tampilkan OtherGuis (CALLBACK: function )

Panggilan ini berjalan segera setelah modalkan telah dibatalkan, memungkinkan Anda untuk mengaktifkan seluruh ScreenGuis atau elemen di dalamnya. Lihat Kesadaran GUI untuk rincian dan kode sampel.