Gói thẻ mùa

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

Gói tính năng Thẻ Mùa cung cấp chức năng sẵn có để tạo ra các hệ thống tiến trình dựa trên nhiệm vụ có thời gian giới hạn, trong đó 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 tùy 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ả của bạn, thúc đẩy sự giữ chân người chơi và tạo ra doanh thu.

Nhận gói

Cửa hàng Tạo là một tab của Toolbox 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, mesh, âm thanh, plugin, video và tài sản phông chữ. Bạn có thể sử dụng Cửa hàng Tạo để thêm một hoặc nhiều tài sản trực tiếp vào một trò chơi đang mở, bao gồm cả cá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 Core để hoạt động đúng cách, và gói Thẻ 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ột mùa. Khi tất cả ba tài sản gói nằm trong kho 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.

Để đưa các gói từ kho của bạn vào trò chơi:

  1. Từ menu Cửa sổ của Studio hoặc thanh công cụ tab Trang chủ, mở Toolbox.

  2. Trong cửa sổ Toolbox, nhấp vào tab Kho. Phân loại Mô Hình Của Tôi hiển thị.

    Cửa sổ Toolbox của Studio với tab Kho được làm nổi bật.
  3. Nhấp vào ô Gói Tính Năng Core, ô Gói Tính Năng 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.

  4. Kéo các thư mục gói vào ReplicatedStorage.

  5. Cho phép các cuộc gọi lưu trữ dữ liệu theo dõi các giao dịch mua của người chơi với các gói.

    1. Mở cửa sổ TệpCài Đặt Trải Nghiệm của Studio.
    2. Điều hướng đến tab Bảo Mật, sau đó bật Cho phép Truy cập Studio vào Dịch vụ API.

Cấu hình 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 Thẻ 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ó. Để đơ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 của người chơi theo cách bạn muốn. Dù bạn có 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ò chơi của bạn để mã Thẻ Mùa hoạt động.

Các nhiệm vụ mỗi cái có một tập hợp các nhiệm vụ phải hoàn thành để hoàn thành nhiệm vụ, các tùy chọn cấu hình và siêu dữ liệu hiển thị tùy chọn. Để có hướng dẫn chi tiết về cách cấu hình các nhiệm vụ và nhiệm vụ của chúng, hãy xem Xác định nhiệm vụ.

Thêm XP từ nhiệm vụ vào mùa

Ví dụ này sử dụng gói tính năng Nhiệm Vụ để xác định các nhiệm vụ mà người chơi có thể hoàn thành để kiếm kinh nghiệm (XP) và tiến bộ qua mùa. Để thưởng cho người chơi XP khi họ hoàn thành một nhiệm vụ đã xác định, bạn phải thêm logic vào tập lệnh 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} đã hoàn thành nhiệm vụ {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 cho người chơi XP khi họ hoàn thành nhiệm vụ, gói tính năng Thẻ 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 một phần thưởng cấp mà người chơi có thể kiếm được nếu họ đủ XP, hãy thêm một ID tài sản vào cấu hình Nhiệm Vụ cho mỗi phần thưởng cấp mùa.

Tier3Mission = {
categoryId = "General",
metadata = {
displayName = "Nhiệm Vụ Cấp 3",
description = "Nhảy 10 lần",
visibleAfterComplete = true,
visibleBeforeUnlocked = true,
rewards = {
{
icon = 16826775737,
displayName = "Món đồ",
},
{
icon = 106912146245070,
displayName = "XP Mùa",
},
},
},
}

Cấu hình mùa

Sau khi bạn đã thiết lập mọi nhiệm vụ mà bạn muốn bao gồm trong một mùa, đã đến lúc cấu hình thẻ mùa chính nó. Trong ReplicatedStorage.SeasonPasses.Configs.Season, có một ví dụ về cấu hình mùa để bạn tham khảo, và các mẫu mã sau đây là từ tệp đó.

Xác định thẻ

Thẻ cho phép bạn tính phí người chơi một khoản phí Robux một lần để truy cập vào các nhiệm vụ và phần thưởng tiềm năng của thẻ mùa. Sau khi bạn tạo một thẻ với một ID tài sản độc nhất, bạn có thể thiết lập 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 một ID tài sản ví dụ là 928192647 để đại diện cho một thẻ mùa, sau đó nó đặt tên cho thẻ mùa là "Premium Track".

premiumTrack = {
pricing = {
gamePassId = 928192647,
},
trackMetadata = {
trackName = "Premium Track",
},
},

Cấu hình cấp và phần thưởng

Các cấp mùa đại diện cho các cột mốc mà người chơi phải đạt được để 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 lên cấp tiếp theo và nhận phần thưởng cho cấp mà họ vừa hoàn thành. Các cấp có thuộc tính upperBoundXP thiết lập ngưỡng XP cần thiết để yêu cầu 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í - Một phần thưởng mà người chơi có thể kiếm được mà không cần mua thẻ mùa.
  • Cao cấp - Một phần thưởng mà người chơi chỉ có thể kiếm được bằng cách mua thẻ mùa.

Để minh họa, hãy xem mẫu mã sau đây cho một mùa với một cấp yêu cầu 100 XP để kiếm phần thưởng giáo mác băng miễn phí và phần thưởng lá chắn nổ cao cấp. icon là ID tài sản của hình ảnh UI để hiển thị cho một phần thưởng, và 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 thì ẩn khỏi người chơi và chủ yếu được sử dụng cho các mục đích lưu trữ dữ liệu.

tiers = {
[1] = {
upperBoundXP = 100,
freeReward = {
icon = 128181721602852,
displayName = "Giáo Mác Băng",
rewardId = "iceLance",
},
premiumReward = {
icon = 95882371958115,
displayName = "Lá Chắn Nổ",
rewardId = "blastShield",
},
},
}

Trong khi tập lệnh này chỉ nhằm mục đích minh họa cách cấu hình một cấp tại một thời điểm, 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 đảm bảo mỗi rewardId là số và theo thứ tự tăng dần để các cấp của bạn hiển thị theo thứ tự mà 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 xác định chi tiết của mùa của bạn:

  • title - Tên của mùa của bạn.
  • description - Mô tả của mùa của bạn.
  • startUtc - Thời điểm bắt đầu của mùa theo thời gian phối hợp quốc tế.
  • endUtc - Thời điểm kết thúc của mùa theo thời gian phối hợp quốc tế.
  • seasonId - Cho phép bạn theo dõi XP mà người chơi kiếm được trong suốt mùa đã cho.

Gói sử dụng startUtcendUtc để hiển thị đế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 = "Mùa 1",
description = "Vào Thành Phố Không Gian",
seasonId = "season1",

Tích hợp logic máy chủ

Hãy xem 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 Tính Năng Thẻ Mùa. Đoạn mã dưới đây là từ tập lệnh đó.

Bạn chủ yếu cần tạo một hàm xử lý để thưởng cho các phần thưởng đã được yêu cầu cho người chơi của bạn. Ví dụ, mẫu mã sau đây tạo một hàm rewardClaimedHandlerFunction() theo dõi khi người chơi tiến bộ lên cấp tiếp theo, sau đó thưởng cho họ 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 thẻ mùa.

Đối với mục đích của bạn, hãy thay thế cuộc gọi task.wait() bằng logic cho phép người chơi nhận các phần thưởng mà họ đã yêu cầu trong mùa. Hàm này phải trả về một boolean: true nếu máy chủ đã cấp phần thưởng, false nếu 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

Cấu hình hằng số

Các hằng số cho gói tính năng Core sống ở hai vị trí:

  • Các hằng số chia sẻ sống trong ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.
  • Các hằng số 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 mà bạn có thể muốn điều chỉnh để đáp ứng các yêu cầu thiết kế của trò chơi của bạn:
  • ID tài sản âm thanh
  • Thời gian hiệu ứng mua và màu sắc hạt Ngoài ra, bạn có thể tìm thấy các chuỗi để dịch được phân tách 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 cách trình bày hình ảnh của các thông báo thẻ 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ấu trúc phân cấp, mã sẽ không thể tìm thấy chúng, và bạn sẽ cần thực hiện các điều chỉnh cho mã của bạn.

Một mùa được tạo thành từ 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 Gói Tính Năng Nhiệm Vụ:

  • SeasonBottomFrame – Khung bao gồm thông tin về mỗi đường đua, một khung cuộn của 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ị tên mùa, mô tả và đếm ngược.
  • TierRewardFrame - Khung hiển thị một 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 đã đạt được đối với cấp hiện tại mà họ đang làm việc.
  • PurchaseFrame - Khung yêu cầu người chơi mua một thẻ cao cấp.
  • SeasonProgressFrame - Khung hiển thị thanh tiến trình của người chơi trong suốt mùa.
  • RewardsButtonFrame - Khung thêm một nút cho phép thông tin của mùa được hiển thị qua SeasonBottomFrame.
©2026 Roblox Corporation. Roblox, logo Roblox và Powering Imagination là các nhãn hiệu đã đăng ký và chưa đăng ký của chúng tôi tại Hoa Kỳ và các quốc gia khác.