Gói tính năng Vé mùa cung cấp chức năng bên ngoài hộp để tạo các hệ thống tiến trình giới hạn thời gian dựa trên nhiệm vụ mà người chơi có thể hoàn thành các mục tiêu nhiệm vụ để kiếm phần thưởng chỉ có sẵn trong một khoảng thời gian được xác định trước.Sử dụng các lựa chọn tùy chỉnh của gói, bạn có thể cá nhân hóa tất cả các thẻ mùa để cung cấp nội dung mới cho khán giả, khuyến khích giữ lại người chơi và tạo doanh thu.

Nhận gói
Cửa hàng Nhà sáng tạo là một tab của Hộp công cụ mà bạn có thể sử dụng để tìm tất cả các tài sản được tạo bởi Roblox và cộng đồng Roblox để sử dụng trong các dự án của bạn, bao gồm mô hình, hình ảnh, khối, âm thanh, plugin, video và tài sản phông chữ.Bạn có thể sử dụng Cửa hàng Nhà sáng tạo để thêm một hoặc nhiều tài sản trực tiếp vào trải nghiệm mở, bao gồm cả gói tính năng!
Mỗi gói tính năng yêu cầu gói tính năng Trung tâm hoạt động đúng cách, và gói Vé mùa yêu cầu gói tính năng Nhiệm vụ để xác định các nhiệm vụ của mùa.Khi tất cả ba tài sản gói đã nằm trong kho hàng của bạn, bạn có thể tái sử dụng chúng trong bất kỳ dự án nào trên nền tảng.
Để lấy các gói từ kho lưu trữ của bạn vào trải nghiệm của bạn:
Thêm Core , Nhiệm vụ và Season Passes gói gói vào kho đồ trong Studio bằng cách nhấp vào liên kết Thêm vào kho đồ trong bộ thành phần sau.
Trong thanh công cụ, hãy chọn tab Xem.
Nhấp vào Hộp công cụ . Cửa sổ Hộp công cụ hiển thị.
Trong cửa sổ Hộp công cụ , nhấp vào tab Tồn kho . Các mô hình của tôi xếp hiển thị.
Nhấp vào ô Tính năng Gói Trọng tâm , Tính năng Gói Nhiệm vụ , sau đó là ô Gói Tính năng Thẻ Mùa .Tất cả ba thư mục gói hiển thị trong cửa sổ Explorer .
Kéo các thư mục gói vào ReplicatedStorage .
Cho phép các cuộc gọi lưu trữ dữ liệu theo dõi việc mua hàng của người chơi với các gói.
- Trong tab Trang chủ của thanh công cụ, hãy chọn Cài đặt trò chơi .
- Di chuyển đến tab Bảo mật , sau đó bật Bật truy cập Studio vào Dịch vụ API .
Tùy chỉnh sự phụ thuộc nhiệm vụ
Để các mùa hoạt động đúng cách, bạn phải thêm logic để gói tính năng Vé Mùa có thể theo dõi tiến trình của người chơi và cập nhật các thành phần UI của nó.Vì đơn giản, ví dụ dưới đây sử dụng gói tính năng Nhiệm vụ và gọi SeasonPasses.addProgressToSeason() sau khi người chơi hoàn thành nhiệm vụ, nhưng bạn có thể theo dõi tiến trình người chơi theo cách bạn muốn.Dù bạn xác định nhiệm vụ hay không, bạn vẫn phải thêm gói tính năng Nhiệm vụ vào trải nghiệm của bạn để mã Season Passes hoạt động.
Mỗi nhiệm vụ có một bộ nhiệm vụ phải hoàn thành để hoàn thành nhiệm vụ, tùy chọn cấu hình và dữ liệu hiển thị bắt buộc.Đối với hướng dẫn chi tiết về cách cấu hình nhiệm vụ và nhiệm vụ của chúng, xem Xác định nhiệm vụ.
Thêm XP từ nhiệm vụ sang mùa
Ví dụ này sử dụng gói tính năng Nhiệm vụ để xác định nhiệm vụ mà người chơi có thể hoàn thành để nhận được kinh nghiệm (XP) và tiến bộ qua mùa.Để trao XP cho người chơi khi họ hoàn thành nhiệm vụ được xác định, bạn phải thêm logic vào kịch bản máy chủ ReplicatedStorage.Missions.Server.Examples.MissionsExample để nó có thể nhập dữ liệu thẻ mùa và thưởng cho người chơi theo tiến trình của họ.
local SeasonPasses = require(ReplicatedStorage.SeasonPasses.Server.SeasonPasses)
local function completeHandler(player: Player, missionId: Types.MissionId)
print(`{player} completed mission {missionId}`)
if missionId == "Walking" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking2" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking3" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Availability" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Manual" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Minutely" then
SeasonPasses.addProgressToSeason(player, 100)
end
end
Thêm biểu tượng phần thưởng cấp mùa
Ngoài việc cấp XP cho người chơi khi họ hoàn thành nhiệm vụ, gói tính năng Vé mùa sử dụng gói tính năng Nhiệm vụ để xác định các cấp phần thưởng độc đáo trong một mùa.Nếu bạn muốn thêm một biểu tượng trên màn hình cho phần thưởng cấp cho một cấp mà người chơi có thể kiếm được nếu họ có đủ XP, hãy thêm một ID tài sản trong Missions cấu hình cho mỗi phần thưởng cấp mùa.
Tier3Mission = {categoryId = "General",metadata = {displayName = "Tier 3 Mission",description = "Jump 10 times",visibleAfterComplete = true,visibleBeforeUnlocked = true,rewards = {{icon = 16826775737,displayName = "Item",},{icon = 106912146245070,displayName = "Season XP",},},},}
Tùy chỉnh mùa
Sau khi bạn đã thiết lập tất cả các nhiệm vụ bạn muốn bao gồm trong một mùa, đã đến lúc cấu hình chính thẻ mùa.Trong ReplicatedStorage.SeasonPasses.Configs.Season , có một ví dụ về cấu hình mùa cho tham khảo của bạn, và các mẫu mã sau đây là từ file đó.
Xác định lượt truy cập
Thẻ truy cập cho phép bạn tính phí Robux một lần đối với người chơi để truy cập các nhiệm vụ và phần thưởng tiềm năng của một vé mùa.Sau khi tạo một thẻ với một ID tài sản duy nhất, bạn có thể đặt chi tiết của thẻ trong trường premiumTrack của mùa của bạn.Ví dụ, mẫu mã sau đây xác định một thẻ với ví dụ assetID là 928192647 để đại diện cho một thẻ mùa, sau đó nó cung cấp cho thẻ mùa một tên theo dõi là "Premium Track".
premiumTrack = {pricing = {gamePassId = 928192647,},trackMetadata = {trackName = "Premium Track",},},
Tùy chỉnh cấp và phần thưởng
Cấp độ mùa đại diện cho các cột mốc mà người chơi phải đáp ứng để kiếm phần thưởng trong suốt một mùa.Để leo lên các cấp, người chơi hoàn thành nhiệm vụ để kiếm XP, và khi họ kiếm đủ XP, họ tốt nghiệp sang cấp tiếp theo và nhận phần thưởng cho cấp họ vừa hoàn thành.Các cấp có một thuộc tính upperBoundXP đặt ngưỡng XP cần thiết để nhận phần thưởng cho một cấp.Mỗi cấp có thể cung cấp hai loại phần thưởng:
- Miễn phí - Phần thưởng mà người chơi có thể kiếm được mà không cần mua vémùa.
- Cao cấp - Phần thưởng mà người chơi chỉ có thể kiếm được bằng cách mua vémùa.
Để minh họa, xem mẫu mã sau cho một mùa với một cấp có yêu cầu 100 XP để kiếm phần thưởng lance băng miễn phí và phần thưởng khiên chống nổ cao cấp.The icon là assetID của hình ảnh UI để hiển thị cho phần thưởng, và the displayName hiển thị một tên cho phần thưởng.Lưu ý rằng displayName hiển thị trong UI, nhưng rewardId được ẩn khỏi người chơi và chủ yếu được sử dụng cho mục đích lưu trữ dữ liệu .
tiers = {[1] = {upperBoundXP = 100,freeReward = {icon = 128181721602852,displayName = "Ice Lance",rewardId = "iceLance",},premiumReward = {icon = 95882371958115,displayName = "Blast Shield",rewardId = "blastShield",},},}
Trong khi kịch bản này dành cho mục đích minh họa về cách cấu hình một cấp cùng một lúc, hầu hết các mùa bao gồm nhiều hơn một cấp.Khi bạn xác định nhiều cấp và phần thưởng cho một mùa, hãy chắc chắn rằng mỗi rewardId là số và theo thứ tự tăng dần để các cấp hiển thị theo thứ tự bạn xác định chúng trong danh sách các cấp.
Xác định chi tiết mùa
Bây giờ bạn đã có một thẻ mùa với các cấp và phần thưởng, đã đến lúc định nghĩa chi tiết mùa của bạn:
- title - Tên của mùa của bạn.
- description - Sự mô tả của mùa của bạn.
- startUtc - Bắt đầu của mùa trong thời gian toàn cầu được phối hợp.
- endUtc - Kết thúc của mùa trong thời gian toàn cầu được phối hợp.
- seasonId - Cho phép bạn theo dõi XP mà một người chơi kiếm được trong suốt mùa này.
Gói sử dụng startUtc và endUtc để hiển thị thời gian đếm ngược của mùa.
startUtc = DateTime.fromUniversalTime(2024, 10, 01, 17, 0, 0),endUtc = DateTime.fromUniversalTime(2025, 2, 28, 17, 0, 0),title = "Season 1",description = "Into Space City",seasonId = "season1",
Tích hợp logic máy chủ
Hãy xem xét ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample, cho thấy cách máy chủ của bạn sẽ tương tác với Gói chức năng Thẻ mùa .Phần mã dưới đây là từ kịch bản đó.
Chủ yếu bạn cần tạo chức năng xử lý để trao phần thưởng đã nhận cho người chơi của bạn.Ví dụ, mã trình bày sau đây tạo ra chức năng rewardClaimedHandlerFunction() theo dõi khi người chơi tiến bộ lên cấp tiếp theo, sau đó thưởng cho họ hoặc chỉ phần thưởng miễn phí, hoặc cả phần thưởng miễn phí và cao cấp nếu họ mua vémùa.
Vì mục đích của bạn, thay thế cuộc gọi task.wait() bằng logic cho phép người chơi nhận được phần thưởng mà họ đã nhận trong mùa.Chức năng này phải trả về một boolean: true nếu máy chủ đã cấp phần thưởng, false nếu nó không.
local function rewardClaimedHandlerFunction(_player: Player, _rewardId: Types.RewardId): boolean
task.wait(2)
return true
end
local function initializeRewardClaimedHandlers()
for tierId, tier in pairs(Season.tiers) do
if tier then
if tier.freeReward then
SeasonPasses.setRewardClaimedHandler(tier.freeReward.rewardId, rewardClaimedHandlerFunction)
end
if tier.premiumReward then
SeasonPasses.setRewardClaimedHandler(tier.premiumReward.rewardId, rewardClaimedHandlerFunction)
end
end
end
end
Tùy chỉnh các biến số
Các tham số cho gói tính năng Trung tâm sống ở hai điểm:
- Các biến chung sống trong ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants .
- Các biến cố định cụ thể cho gói, trong trường hợp này là gói tính năng Thẻ Mùa , sống trong ReplicatedStorage.SeasonPasses.Configs.Constants .Những điều chính bạn có thể muốn điều chỉnh để đáp ứng các yêu cầu thiết kế của trải nghiệm của bạn:
- ID âm thanh
- Thời lượng hiệu ứng mua và màu của hạt cộng thêm, bạn cũng có thể tìm thấy các chuỗi cho bản dịch bị chia ra thành một vị trí: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .
Tùy chỉnh các thành phần UI
Bằng cách sửa đổi các đối tượng gói, chẳng hạn như màu sắc, phông chữ và độ trong suốt, bạn có thể điều chỉnh trình bày hình ảnh của thẻ truy cập mùa của bạn.Tuy nhiên, hãy nhớ rằng nếu bạn di chuyển bất kỳ đối tượng nào xung quanh theo cấp bậc, mã sẽ không thể tìm thấy chúng, và bạn sẽ cần phải thực hiện các điều chỉnh cho mã của bạn.
Một mùa được tạo bởi các thành phần cấp cao sau đây được thêm vào các thành phần UI của Tính năng Gói Nhiệm vụ một cách chương trình:
- SeasonBottomFrame – Khung bao gồm thông tin về mỗi bản nhạc, một khung cuộn các phần thưởng cho các cấp và dữ liệu cấp.
- SeasonDescriptionFrame - Khung trong tiêu đề hiển thị tiêu đề mùa, mô tả và thời gian đếm ngược.
- TierRewardFrame - Khung hiển thị phần thưởng cụ thể cho một cấp.
- TierProgressFrame - Khung hiển thị tiến trình mà người chơi đã thực hiện đối với cấp hiện tại họ đang làm việc.
- PurchaseFrame - Khung yêu cầu người chơi mua một vé cao cấp.
- SeasonProgressFrame - Khung hiển thị tiến trình của người chơi trong suốt cả mùa.
- RewardsButtonFrame - Khung có chứa nút cho phép hiển thị thông tin của mùa thông qua SeasonBottomFrame .