Mô-đun Truy Tìm Kẻ Cướp cung cấp cho người chơi một cách khám phá trò chơi vốn có, giới thiệu họ vào toàn bộ địa điểmmột cách hữu cơ.Tiến trình của người chơi là vĩnh viễn, vì vậy cuộc săn lùng kẻ cướp có thể tiếp tục xuyên suốt các phiên.
Sử dụng module
Cài đặt
Để sử dụng mô-đun Truy Tìm Kẻ Săn trong một trải nghiệm:
Hãy chắc chắn rằng kiểu sắp xếp Mô hình được chọn, sau đó nhấp vào nút Xem tất cả đối với Danh mục .
Tìm và nhấp vào ô Dev Modules .
Tìm mô-đun Truy Tìm Kẻ Cướp và nhấp vào nó, hoặc kéo và thả nó vào cửa sổ 3D.
Trong cửa sổ Explorer, di chuyển toàn bộ mô hình ScavengerHunt vào ServerScriptService .Sau khi chạy trải nghiệm, mô-đun sẽ phân phối bản thân cho các dịch vụ khác nhau và bắt đầu chạy.
Sử dụng token
Mô-đun săn lùng kẻ săn mồi sử dụng token là các mục mà người chơi tìm kiếm và thu thập.Mô-đun đi kèm với một mô hình token mà bạn có thể đặt trong thế giới 3D.
Tìm mesh Token1 bên trong thư mục Không gian làm việc của thư mục chính của module.
Di chuyển Token1 vào cấp cao nhất của Workspace và đặt nó ở vị trí mong muốn.
Cung cấp cho token một tên duy nhất ; tên này là cách mà mô-đun theo dõi các token mà mỗi người chơi đã thu thập.
Để thêm nhiều token, sao chép một token hiện có và cho nó một tên duy nhất.
Nếu bạn không muốn sử dụng các token lưới gói, 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 chí sau:
Vật có một thẻ CollectionService của ScavengerHuntPart .Nếu cần, tên thẻ CollectionService mà mô-đun sử dụng có thể được thay đổi bằng cách thiết lập một giá trị khác cho tokenTag trong một cuộc gọi configureServer.
Vật chứa một đối tượng con StringValue được thiết lập cho "flavor text" để hiển thị khi token được thu thập.
Mô hình Phần lưới
Sử dụng khu vực
Các khu vực khác nhau một chút so với các token, như các khu vực lớn được đánh dấu là "thu thập" một khi người chơi vào chúng.Ngoài ra, khi một người chơi rời khỏi khu vực, văn bản modal hương vị tự động bị loại bỏ và khu vực này được xóa khỏi không gian làm việc.
Tạo một phần neo xung quanh khu vực, chẳng hạn như một khối hoặc cầu.Mô-đun sẽ tự động vô hiệu hóa thuộc tính CanCollide trong thời gian chạy nên người chơi không va chạm vật lý với khu vực.
Hãy cho nó một tên duy nhất . Tên này là cách mà mô-đun theo dõi các khu vực mà mỗi người chơi đã nhập.
Sử dụng phần Thẻ của các thuộc tính của phần, hoặc Studio's Trình Chỉnh Thẻ , áp dụng thẻ cho phần để được phát hiện.Nếu cần, tên thẻ mà mô-đun sử dụng có thể được thay đổi bằng cách thiết lập một giá trị khác cho tokenTag trong một cuộc gọi configureServer.
Bao gồm một ví dụ con StringValue được thiết lập cho "flavor text" để hiển thị khi khu vực được nhập.
Cài đặt
Mô-đun được cài đặt sẵn để hoạt động cho hầu hết các trường hợp sử dụng, nhưng nó có thể dễ dàng điều chỉnh.Ví dụ, để thay đổi tốc độ xoay token và tùy chỉnh tin nhắn thông tin modal:
Trong StarterPlayerScripts , tạo một mới LocalScript và đổi tên thành Tùy chỉnh cuộc săn lùng .
Sao chép mã sau vào kịch bản mới.
LocalScript - Tùy chỉnh ScavengerHuntlocal 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 thu thập
Mỗi khi một người chơi thu thập một token hoặc vào một khu vực, sự kiện thu thập được kích hoạt.Bạn có thể lắng nghe sự kiện này từ phía máy chủ Script và trả lời tương ứng.Chức năng được kết nối nhận được Player đã va chạm với token hoặc vào khu vực và tên token hoặc khu vực đó.
Tương tự, khi một người chơi thu thập tất cả token hoặc nhập tất cả khu vực có nhãn, sự kiện allCollected bắt lửa và chức năng kết nối nhận được Player có liên quan.Chức năng này chỉ được kích hoạt một lần cho mỗi người chơi và nó có thể được sử dụng để thưởng cho người chơi đó với một huy hiệu , truy cập vào một khu vực mới, tiền trong kinh nghiệm , v.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
Mô-đun này hiển thị một số lựa chọn để tùy chỉnh GUI mặc định, nhưng bạn có thể chọn hiển thị các thành phần GUI tùy chỉnh thay thế.
Khi useCustomModals được đặt thành true trong chức năng configureClient, sự kiện showInfoModal xảy ra mỗi khi người chơi kích hoạt trình theo dõi token.Tương tự, sự kiện showCompleteModal xảy ra khi người chơi đã thu thập mọi thứ trong cuộc săn kẹt.Cả hai sự kiện này có thể được lắng nghe trong LocalScript .
Tập lệnh đị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 modal 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 modal hoàn chỉnh tùy chỉnh
local completeModal = Players.LocalPlayer.PlayerGui.ScavengerCompleteModal
completeModal.Enabled = true
end)
Tầm nhìn GUI
Mặc định, cuộc săn lùng kẻ cướp ẩn tất cả ScreenGuis và CoreGuis (ngoại trừ danh sách người chơi) khi màn hình thông tin hoặc màn hình hoàn thành xuất hiện.Nếu bạn muốn bỏ qua hành vi ẩn tự động này và quyết định chương trình hóa các GUI nào nên vẫn hiển thị, hãy bao gồm các hideOtherGuis và showOtherGuis cuộc gọi trả lời và trả lời với logic tùy chỉnh của riêng bạn.
Tập lệnh đị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 sẽ không bị ẩn
local specialGuiInstance = Instance.new("ScreenGui")
-- Vẽ giao diện GUI trên màn hình phía trên giao diện GUI săn lùng
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 được định nghĩa bởi 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 GUI cốt lõi cụ thể
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 bởi nhà phát triển đã được ẩn
for _, instance in hiddenInstances do
instance.Enabled = true
end
hiddenInstances = {}
-- Hiển thị các GUI cốt lõi cụ thể đã được ẩn
StarterGui:SetCoreGuiEnabled(Enum.CoreGuiType.PlayerList, true)
end)
Tham chiếu API
Chức năng
thiết lậpClient
thiết lậpClient(config: table )
Thay thế các tùy chọn cấu hình mặc định bên khách thông qua các chìa khóa/giá trị sau trong bảng config .Chức năng này chỉ có thể được gọi từ một LocalScript .
Nhân vật chính | Mô tả | Mặc định |
---|---|---|
autoDismissTime | Thời gian bằng giây trước khi modal tự động bỏ mình hoặc chuyển hướng đến trang tiếp theo nếu có. Đặt thành 0 để vô hiệu hóa. | 20 |
closeModalGamepad | Nút gamepad được sử dụng để đóng các modal (Enum.KeyCode). | ButtonA |
closeModalKeyboard | Phím bàn phím được sử dụng để đóng các mô-đun (Enum.KeyCode). | E |
completeModalText | Văn bản để hiển thị trên modal xuất hiện sau khi nhấp vào trình theo dõi token khi cuộc săn người hoàn thành. | “Cảm ơn vì đã tham gia!” |
infoModalText | Văn bản để hiển thị trên modal xuất hiện 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 lùng” |
tokenRotationSpeed | Tốc độ mà các token quay, theo độ mỗi giây. Đặt thành 0 để ngăn chặn việc quay. | 20 |
nextArrowImage | Hình ảnh được sử dụng để chỉ ra có nhiều trang modal hơn để hiển thị sau trang modal hiện tại. | “rbxassetid://8167172095” |
openTokenTrackerGamepad | Nút gamepad được sử dụng để hiển thị các modal xuất hiện sau khi kích hoạt trình theo dõi token ( Enum.KeyCode ). | ButtonY |
openTokenTrackerKeyboard | Phím bàn phím được sử dụng để hiển thị các modals xuất hiện sau khi kích hoạt trình theo dõi token ( Enum.KeyCode ). | Y |
openTokenTrackerGamepadButtonImage | Hình ảnh cho nút gamepad được sử dụng để kích hoạt trình theo dõi token. | “rbxassetid://8025860488” |
regionIcon | Biểu tượng để hiển thị bên cạnh trình theo dõi token khi nhập vào khu vực. | “rbxassetid://8073794624” |
tokenIcon | Biểu tượng để hiển thị bên cạnh trình theo dõi token khi thu thập token. | “rbxassetid://8073794477” |
tokenTrackerPositionSmallDevice | Vị trí của UI theo dõi token trên các thiết bị nhỏ như điện thoại ( UDim2 ). | (1, 0, 0, 84) |
tokenTrackerPositionLargeDevice | Vị trí của UI theo dõi token trên các thiết bị lớn hơn như máy tính bảng và PC ( UDim2 ). | (1, 0, 1, -16) |
useRegions | Thay vì token, sử dụng khu vực. | giả mạo |
Tập lệnh đị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},})
thiết lập máy chủ
thiết lập máy chủ(config: table )
Thay thế các tùy chọn cấu hình mặc định bên máy chủ thông qua các chìa khóa/giá trị sau trong bảng config.Chức năng này chỉ có thể được gọi từ một Script .
Nhân vật chính | Mô tả | Mặc định |
---|---|---|
tokenTag | Thẻ đượ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 săn lùng kho báu. | “Phần Thu Thập Kẻ Săn” |
datastoreName | Tên của DataStore được sử dụng bởi cuộc săn lùng kẻ cướp để lưu tiến trình thu thập của mỗi người chơi. | “Token Thợ Săn Rác” |
resetOnPlayerRemoving | Nếu đúng, nó sẽ xóa tiến trình của người dùng khi họ rời khỏi trải nghiệm; thuận tiện để không lưu tiến trình trong khi kiểm tra cuộc săn lùng kẻ cướp. | giả mạo |
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 giao diện người dùng cho cuộc săn lùng kẻ cướp, ngắt kết nối tất cả các người lắng nghe sự kiện nhập, và ngăn người chơi thu thập 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ả UI cho cuộc săn lùng kẻ cướp, kết nối tất cả các người lắng nghe sự kiện nhập, và cho phép người chơi thu thập token 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
Bắt lửa khi một người chơi va chạm với một token hoặc bước vào một khu vực.Chức năng được kết nối sẽ nhận được Player đã va chạm với token hoặc vào khu vực và tên token đã va chạm vào hoặc khu vực đã được nhập.Sự kiện này chỉ có thể được kết nối trong một Script .
Tham số | |
---|---|
người chơi: Player | Người dùng va chạm với một token hoặc nhập vào một khu vực. |
tên mục: string | Tên của token đã va chạm vào hoặc khu vực đã được nhập. |
tổng thu thập: number | Tổng số token được thu thập bởi người dùng được đạ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
Bắt lửa khi một người chơi thu thập tất cả các token hoặc vào tất cả các khu vực trong cuộc săn lùng kẻ ăn xác.Chức năng được kết nối sẽ nhận được Player mà thu thập tất cả các token, và nó chỉ bao giờ bắn một lần cho mỗi người chơi.Sự kiện này chỉ có thể được kết nối trong một Script .
Tham số | |
---|---|
người chơi: Player | Người chơi thu thập tất cả các token hoặc nhập 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
Bắt lửa khi người chơi nhấp vào trình theo dõi token khi tùy chọn 配置 được đặt thành true.Sự kiện này chỉ có thể kết nối trong một LocalScript .
Tập lệnh đị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ển thịModal hoàn chỉnh
Bắt lửa khi người chơi nhấp vào trình theo dõi token 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 săn lùng kho báu.Sự kiện này chỉ có thể kết nối trong một LocalScript .
Tập lệnh đị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 cuộc gọi trở lại
ẩn OtherGuis
ẩnOtherGuis(callback: function )
Cuộc gọi trả lại này chạy ngay lập tức trước khi một modal được hiển thị, cho phép bạn vô hiệu hóa toàn bộ ScreenGuis hoặc các thành phần bên trong nó trước khi modal được hiển thị.Xem Hiển thị GUI để có chi tiết và mã mẫu.
hiển thịOtherGuis
hiển thịOtherGuis(callback: function )
Cuộc gọi trả lại này chạy ngay lập tức sau khi modal đã bị loại bỏ, cho phép bạn bật toàn bộ ScreenGuis hoặc các thành phần bên trong chúng.Xem Hiển thị GUI để có chi tiết và mã mẫu.