Truy Tìm Kẻ Lấy

*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.

ScavengerHunt 模块 game hóa cho người chơi một cách tự nhiên để khám phá trải nghiệm của bạn, tích hợp họ vào địa điểmnày. Tiến độ của người chơi được duy trì, vì vậy các cuộc săn scavenger có thể tiếp tục ở các phiên.

Sử dụng mô-đun

Cài đặt

Để sử dụng module ScavengerHunt trong một trải nghiệm:

  1. Từ trang Xem, mở trang Hộp công cụ và chọn trang Cửa hàng Creator .

    Toolbox toggle button in Studio
  2. Đảm bạn chắn chọn Mô Hình sắp xếp, then click the Xem tất cả button for Các danh mục .

  3. Tìm và nhấp vào Dev Modules mảnh.

  4. Tìm mô-đun Tìm kiếm vũ khí và nhấp vào nó, hoặc kéo nó vào 3D view.

  5. Trong cửa sổ Explorer, di chuyển toàn bộ mô hình ScavengerHunt đến ServerScriptService . Khi chạy trải nghiệm, mô-đun sẽ được phân phối đến các dịch vụ khác nhau và bắt đầu chạy.

Sử dụng Xu

Modul "quẻ ném" sử dụng token như các mục mà người chơi tìm kiếm và thu thập. Modul này đi kèm với một mô hình token mà bạn có thể đặt trong thế giới 3D.

  1. Tìm Token1 meshes trong thư mục Workspace của một thư mục chính của module.

  2. Di chuyển Token1 vào lớp Workspace cấp cao nhất và đặt nó ở vị trí mà bạn muốn.

  3. Đặt tên độc nhất cho token; tên này là cách mà module theo dõi các thẻ mà mỗi người chơi thu thập.

  4. Để thêm thêm tokens, sao chép một token hiện tại và đặt tên nó một cách độc đáo.

Nếu bạn không muốn sử dụng các mô hình lưới được cung cấp, bất kỳ Model hoặc BasePart nào cũng sẽ hoạt động, miễn là nó đáp ứng các tiêu chuẩn sau đây:

  • Objekt có một thẻ CollectionService của ScavengerHuntPart . Nếu muốn, tên thẻ CollectionService mà module sử dụng có thể được thay đổi bằng cách cài đặt một giá trị khác cho 1> tokenTag1> trong một cuộc gọ

  • Ống chứa một con cháu StringValue instance set to the "flavor text" to display when the token is collected.

    Mô Hình
    Phần MeshPart

Sử dụng các khu vực

Các khu vực khác nhau nhỏ hơn so với các token, như các khu vực được ghi nhớ là "đã thu thập" một khi người chơi bước vào chúng. Đồng thời, khi một người bỏ rơi khu vực, hộp thoại văn bản hương vị tự động bỏ rơi và khu vực này được xóa khỏiWorkspace.

  1. Tạo một phần liên kết xung quanh khu vực, chẳng hạn như một khối hoặc một cầu tròn. Modul sẽ tự động tắt đặc tính CanCollide trên thời gian thực hiện để người chơi không va chạm vật lý với khu vực.

  2. Đặt tên nó độc đáo . Tên này là cách mà module theo dõi các khu vực mà mỗi người chơi đã nhập.

  3. Bằng cách sử dụng phần Nhãn của các thuộc tính của một phần, hoặc Studio's Editor Nhãn, áp dụng nhãn ScavengerHuntPart vào phần để để

  4. Bao gồm một đối tượng con StringValue được thiết lập cho "flavor text" để hiển thị khi vùng được nhập.

Tùy chỉnh

Modul đã được cấu hình để hoạt động cho hầu hết các trường hợp dùng, nhưng nó có thể được tùy chỉnh dễ dàng. Ví dụ, để thay đổi tốc độ quay của token và tùy chỉnh thông điệp thông báo tin nhắn:

  1. Trong StarterPlayerScripts , tạo một LocalScript mới và đổi tên nó thành Tùy chỉnh Cuộc đi săn .

  2. Sao chép mã sau đây vào một tập tin mới.

    LocalScript - Tùy chỉnh Cuộc đi săn

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

Sự kiện Bộ sưu tập

Mỗi lần một người chơi thu thập một token hoặc nhập vào một khu vực, sự kiện thu thập được bắt đầu. Bạn có thể lắng nghe sự kiện này từ một bên Class.Script của máy chủ và phản hồi theo cách thích hợp. Các chức nă

Tương tự như vậy, khi một người chơi thu thập tất cả các token hoặc nhập vào tất cả các khu vực có nhãn, sự kiện tất cả đã được thu thập sẽ kích hoạt và

Tập lệnh

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 Tùy Chỉnh

Module này hiển thị một số lựa chọn để tùy chỉnh GUI mặc định của nó, nhưng bạn có thể chọn hiển thị các thành phần GUI tùy chỉnh thay vào đó.

Khi useCustomModals được cài đặt thành true trong chức năng 1>ConfigClient1> , sự kiện 4> showInfoModal4> được kích hoạt mỗi lần người chơi

Script địa phương

local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.showInfoModal:Connect(function()
-- Hiển thị một mô tả thông tin tùy chỉnh
local infoModal = Players.LocalPlayer.PlayerGui.ScavengerInfoModal
infoModal.Enabled = true
end)
ScavengerHunt.showCompleteModal:Connect(function()
-- Hiển thị một mô hình hoàn tất tùy chỉnh
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)

Hiển thị GUI

Mặc định, cuộc trùm mòn ScreenGuisCoreGuis (bao gồm danh sách người chơi) khi thông báo thông tin hoặc hoàn thành thông báo khiến cho tất c

Script địa phương

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 = {}
-- Tạo một GUI màn hình không bị ẩn
local specialGuiInstance = Instance.new("ScreenGui")
-- Vẽ GUI màn hình trên GUI tìm kho báu
specialGuiInstance.DisplayOrder = 1
specialGuiInstance.Parent = playerGui
-- Thêm nhãn văn bản vào 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()
-- Ẩn tất cả các GUI màn hình định nghĩa của nhà phát triển
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
-- Ẩn các GUIs trung tâm especific
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, false)
end)
ScavengerHunt.showOtherGuis(function()
-- Hiển thị tất cả các GUI màn hình đã được định nghĩa của nhà phát triển
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Hiển thị các GUIs trung tâm chính xác đã được ẩn
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)

Tham khảo API

Hàm

tùy chỉnhClient

配置Client(config: table )

Làm mất các tùy chọn cài đặt mặt client qua các chìa khóa / giá trị dưới đây trong bảng config . Chức năng này chỉ có thể được gọi từ một LocalScript .

Chìa khóaMô tảMặc định
autoDismissTimeThời gian trong giây lát trước khi hộp thoại tự động bỏ chạy hoặc chuyển đến trang tiếp theo nếu có. Đặt 0 để vô hiệu hóa.20
closeModalGamepadNút gamepad được sử dụng để đóng modals ( Enum.KeyCode ).ButtonA
closeModalKeyboardNút bàn phím được sử dụng để đóng các mô-đun ( Enum.KeyCode ).E
completeModalTextVăn bản để hiển thị trên màn hình chính mà xuất hiện sau khi hoàn thành cuộc tìm kho báu khi tìm thấy.“Cảm ơn vì đã tham gia!”
infoModalTextVăn bản để hiển thị trên màn hình thông báo sau khi nhấp vào trình theo dõi token.“Tìm tất cả các token để hoàn thành cuộc săn”
tokenRotationSpeedTốc độ mà các xu xoay, ở độ vào giây. Đặt 0 để ngăn chặn sự xoay.20
nextArrowImageHình ảnh được sử dụng để cho thấy có nhiều trang mô-đun hơn để hiển thị sau trang mô-đun hiện tại.“rbxassetid://8167172095”
openTokenTrackerGamepadNút gamepad được sử dụng để hiển thị các mô-đun xuất hiện sau khi kích hoạt tracker token ( Enum.KeyCode ).ButtonY
openTokenTrackerKeyboardNút bàn phím được sử dụng để hiển thị các mô hình xuất hiện sau khi kích hoạt tracker token ( Enum.KeyCode ).Y
openTokenTrackerGamepadButtonImageHình ảnh cho nút gamepad được sử dụng để kích hoạt token tracker.“rbxassetid://8025860488”
regionIconBiểu tượng để hiển thị bên cạnh trình theo dõi tiền xu khi nhập vùng.“rbxassetid://8073794624”
tokenIconBiểu tượng để hiển thị bên cạnh trình theo dõi tiền xu khi thu thập tiền xu.“rbxassetid://8073794477”
tokenTrackerPositionSmallDeviceVị trí của UI trình theo dõi token trên các thiết bị nhỏ, chẳng hạn như điện thoại ( UDim2 ).(1, 0, 0, 84)
tokenTrackerPositionLargeDeviceVị trí của UI tracker token lớn hơn trên các thiết bị lớn như máy tính bảng và PC ( UDim2 ).(1, 0, 1, -16)
useRegionsThay vì xuất hiện tokens, hãy sử dụng regions .đúng
Script địa phương

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

Tùy chỉnh máy chủ

配置Server(config: table )

Làm mất các tùy chọn cài đặt máy chủ mặc định qua các đầu mối/giá trị sau đây trong bảng config của Script . Đây chỉ có thể được gọi từ một Class.Script .

Chìa khóaMô tảMặc định
tokenTagNhãn được sử dụng bởi CollectionService để tìm tất cả các token hoặc khu vực đã được sử dụng trong cuộc tìm kiếm scavenger.“ScavengerHuntPart”
datastoreNameTên của Class.DataStore được sử dụng bởi cuộc săn dưới đất để lưu tiến độ thu thập của mỗi người chơi.“ScavengerHuntTokens”
resetOnPlayerRemovingNếu đúng, thiết lập lại tiến trình của người dùng khi họ rời khỏi trải nghiệm; thuận tiện cho việc không lưu tiến trình trong khi thử nghiệm cuộc đi săn.đúng
Tập lệnh

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

vô hiệu hóa

vô hiệu hóa()

Ẩn tất cả các UI cho cuộc săn vịt, kết nối tất cả các người lắng nghe nhập, và ngăn chặn người chơi thu thập các token hoặc tương tác với các khu vực. Chức năng này chỉ có thể được gọi từ một Script .

Tập lệnh

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

bật

bật()

Hiển thị tất cả các UI cho cuộc săn vịt, kết nối tất cả các người lắng nghe nhập, và cho phép người chơi thu thập xu và tương tác với các khu vực. Chức năng này chỉ có thể được gọi từ một Script .

Tập lệnh

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

Sự kiện

đã thu thập

Khi một người chơi va chạm với một token hoặc tham gia vào một khu vực. Chức năng kết nối sẽ nhận Player mà va chạm với token hoặc tham gia vào khu vực và tên của token đã va chạm vào hoặc khu vực đã được nhập. Sự kiện này chỉ

Các biến
người chơi: PlayerNgười dùng va chạm với một token hoặc nhập vào khu vực.
itemName: stringTên của token đã va chạm hoặc vùng đã được nhập.
tổngSưu tầm: numberTổng số các xu thu thập bởi người đại diện bởi player .
Tập lệnh

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

tất cảĐã thu thập

Kích hoạt khi một người chơi thu thập tất cả các token hoặc tham gia tất cả các khu vực trong cuộc tìm kho báu. Chức năng kết nối sẽ nhận Player mà thu thập tất cả các token, và nó chỉ được kích hoạt một lần mỗi người chơi. Sự kiện n

Các biến
người chơi: PlayerNgười chơi thu thập tất cả các token hoặc vào tất cả các khu vực.
Tập lệnh

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ScavengerHunt = require(ReplicatedStorage:WaitForChild("ScavengerHunt"))
ScavengerHunt.allCollected:Connect(function(player)
print(player.DisplayName .. " completed the hunt!")
end)

hiển thịInfoModal

Lửa khi người chơi nhấp vào tracker token khi tùy chọn useCustomModalsnumber1 được cài đặt thành true. Sự kiện này chỉ có thể kết nối trong một LocalScript .

Script địa phương

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)

hiệnThànhPhầnKếtThúc

Lửa khi người chơi nhấp vào token tracker khi tùy chọn useCustomModalscấu hình được đặt thành true và người chơi đã thu thập tất cả các token trong cuộc tìm kiếm scavenger. Sự kiện này chỉ có thể kết nối trong mộ

Script địa phương

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)

Các hàm gọi

ẩnCácGuis khác

ẩnCácGuisKhác( callback: function )

Điều này được thực hiện ngay cả trước khi một hộp thoại được hiển thị, cho phép bạn tắt toàn bộ ScreenGuis hoặc các thành phần trong họ trước khi hộp thoại được hiển thị. Xem Visibility GUI để chi tiết và mẫu mã mã.

hiển thị OtherGuis

hiển thịOtherGuis( callback: function )

Độ trễ này được thực hiện ngay sau khi một modul đã bị từ bỏ, cho phép bạn bật toàn bộ ScreenGuis hoặc các thành phần trong nó. Xem Giả nhìn GUI để tham khảo chi tiết và mã mẫu.