Phần thưởng tương tác

*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 Phần thưởng Tương tác là một khung tùy chỉnh để cung cấp phần thưởng trong trò chơi cho một số hoạt động của người chơi, bao gồm chuỗi đăng nhập hàng ngày và thời gian chơi. Ngoài logic máy khách và máy chủ, gói này bao gồm một giao diện người dùng mặc định để xem tiến trình phần thưởng, trạng thái phần thưởng và yêu cầu phần thưởng.

Nhận gói

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

  2. Trong cửa sổ Hộp công cụ, nhấp vào tab Kho. Phân loại Mô hình của tôi sẽ hiển thị.

    Cửa sổ Hộp công cụ 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, sau đó nhấp vào ô Gói Tính năng Phần thưởng Tương tác. Cả hai thư mục gói sẽ hiển thị trong cửa sổ Khám phá.

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

Khởi tạo gói

Di chuyển các gói vào ReplicatedStorage và kiểm tra trò chơi của bạn sẽ chạy script EngagementRewardsExample trong ReplicatedStorage.EngagementRewards.Server.Examples.

Script này cho thấy cách khởi tạo gói để sử dụng trong trò chơi của bạn, điều này liên quan đến việc yêu cầu một số script module và định nghĩa một hàm rewardClaimedHandlerFunction() mà cuối cùng sẽ trao phần thưởng cho người chơi.

Hàm này phải trả về một boolean. Trong script ví dụ, bạn có thể thấy rằng nó không trao bất kỳ phần thưởng nào cho người chơi; nó chỉ in ra người chơi, phần thưởng và số lượng đang được yêu cầu.

EngagementRewardsExample
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local EngagementRewardsConfig = require(ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig)
local EngagementRewards = require(ReplicatedStorage.EngagementRewards.Server.EngagementRewards)
local EngagementRewardsUtils = require(ReplicatedStorage.EngagementRewards.Utils.EngagementRewardsUtils)
local Types = require(ReplicatedStorage.EngagementRewards.Configs.Types)
-- Thay thế hàm xử lý này bằng hàm xử lý phần thưởng của riêng bạn
-- Hàm này nên xử lý sự kiện phần thưởng được yêu cầu cho rewardId đã được truyền vào
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Phần thưởng {rewardId} đã được yêu cầu bởi {player} với số lượng {quantity}`)
return true
end
-- nhiều hơn

Bạn có thể sửa đổi script này trực tiếp hoặc di chuyển nó đến ServerScriptService nếu đó là vị trí ưa thích của bạn cho mã máy chủ. Như hiện tại, script chỉ hữu ích cho mục đích thử nghiệm.

Việc trao phần thưởng cho người chơi khác nhau tùy theo trò chơi. Trong một số trò chơi, bạn có thể trao một sự tăng cường trong trò chơi hoặc chỉ tăng số lượng vàng của người chơi. Trong các trò chơi khác, bạn có thể có một hệ thống kho tùy chỉnh, trong khi những trò chơi khác có thể đặt một vật phẩm vào ba lô của người chơi. Trong tất cả các trường hợp, bạn phải thay thế rewardClaimedHandlerFunction() bằng hàm của riêng bạn.

Thêm phần thưởng và tiêu chí

Hầu hết việc tùy chỉnh phần thưởng diễn ra trong ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig. Script module này định nghĩa phần thưởng và các yêu cầu để mở khóa nó.

Bạn có thể xem các khai báo loại đầy đủ (hoặc thêm mới) trong ReplicatedStorage.EngagementRewards.Configs.Types, nhưng có lẽ bạn chỉ cần làm việc với EngagementRewardsConfig. Gói tính năng bao gồm hai loại phần thưởng: Thời gianHàng ngày.

local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "Thời gian",
tabOrder = 1,
description = "Tiếp tục chơi để mở khóa phần thưởng!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "Ngọn giáo băng",
requiredSecondsInGame = 1 * 5,
},
-- nhiều hơn
[Types.RewardType.Daily] = {
tabDisplayName = "Hàng ngày",
tabOrder = 2,
description = "Chơi hàng ngày để mở khóa phần thưởng!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Ngọn giáo băng",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- nhiều hơn

Cả hai loại phần thưởng đều yêu cầu một biểu tượng, đó là một ID tài sản Roblox cho một hình ảnh (không phải là một decal). Bạn cũng có thể muốn có một tên hiển thị để sử dụng trong giao diện người dùng. Chỉ định quantity cho các giá trị khác ngoài 1. Bạn cũng có thể tùy chọn chỉ định một phần thưởng là có giá trị (effect = Types.RewardEffect.Valuable) để cho nó một khung nền khác trong giao diện người dùng.

BiếnLoạiMô tảMặc địnhBắt buộc
iconSốMột ID tài sản Roblox cho biểu tượng giao diện người dùng.N/A
displayNameChuỗiMột tên cho các phần thưởng để sử dụng trong giao diện người dùng.ID RewardIdKhông
quantitySốSố lượng vật phẩm để thưởng.1Không
effectRewardEffectHiệu ứng hình ảnh để sử dụng trong giao diện người dùng. Xem Tùy chỉnh giao diện người dùng.Types.RewardEffect.DefaultKhông

Phần thưởng thời gian

Phần thưởng Thời gian mở khóa sau một số giây nhất định trong trò chơi. Tùy chỉnh các số này để đáp ứng nhu cầu của bạn. Bạn có thể sử dụng các số nhỏ để thử nghiệm dễ dàng, và trong trò chơi đã xuất bản, trao phần thưởng sau 10 phút, phần thưởng khác sau 30 phút, phần thưởng khác sau một giờ, và cứ như vậy.

Phép nhân làm cho các số trong giây dễ dàng hơn cho con người làm việc, vì vậy đối với hai giờ, bạn có thể thích chỉ định 2 * 60 * 60 thay vì 7200.

BiếnLoạiMô tảMặc địnhBắt buộc
requiredSecondsInGameSốSố giây (một số nguyên dương) mà người chơi phải dành trong trò chơi để kiếm phần thưởng.N/A

Phần thưởng hàng ngày

Phần thưởng Hàng ngày mở khóa sau một số ngày đăng nhập liên tiếp nhất định. Ví dụ, vào ngày đầu tiên mà một người chơi đăng nhập, bạn có thể cho họ ba bình thuốc hoặc một chiếc bánh quế. Vào những ngày tiếp theo, bạn có thể thưởng cho họ các vật phẩm tiêu dùng có giá trị hơn, tiếp theo là một vật phẩm bền, như một cần câu mới, sau bảy ngày liên tiếp.

BiếnLoạiMô tảMặc địnhBắt buộc
requiredDaysVisitedStreakSốSố ngày liên tiếp mà người chơi phải kết nối với trò chơi để kiếm phần thưởng.N/A

Hai tùy chọn cấu hình phần thưởng hàng ngày bổ sung có sẵn trong DailyRewardTabConfig.

[Types.RewardType.Daily] = {
tabDisplayName = "Hàng ngày",
tabOrder = 2,
description = "Chơi hàng ngày để mở khóa phần thưởng!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Ngọn giáo băng",
requiredDaysVisitedStreak = 1,
},
-- nhiều hơn
BiếnLoạiMô tảMặc địnhBắt buộc
isHiddenOnJoinBooleanKhi đúng, phần thưởng không tự động xuất hiện khi tham gia trò chơi. Khi sai, phần thưởng tự động xuất hiện khi tham gia trò chơi nếu người chơi có một phần thưởng hàng ngày mới để yêu cầu.SaiKhông
isAlignedToStreakResetTimeBooleanKhi đúng, phần thưởng cho ngày thứ 2 có thể được yêu cầu 24 giờ sau thời gian có thể yêu cầu ngày đầu tiên. Khi sai, phần thưởng ngày thứ 2 có thể được yêu cầu vào nửa đêm đầu tiên sau thời gian có thể yêu cầu ngày đầu tiên. Ví dụ, nếu một người chơi đăng nhập lúc 11:00 PM (23:00) và yêu cầu phần thưởng ngày đầu tiên của họ, đúng có nghĩa là họ không thể yêu cầu phần thưởng ngày thứ 2 cho đến 11:00 PM ngày hôm sau. Sai có nghĩa là họ có thể yêu cầu phần thưởng ngày thứ 2 vào 12:00 AM (00:00), một giờ sau. Phần thưởng cho ngày thứ 3 và các ngày tiếp theo luôn có sẵn 24 giờ sau thời gian có thể yêu cầu của ngày trước.SaiKhông

Tùy chỉnh giao diện người dùng

Trong phần trước, bạn có thể đã nhận thấy các trường tabDisplayName, tabOrder, và description, cho phép tùy chỉnh cơ bản giao diện người dùng. Bạn cũng có thể tìm thấy một số chuỗi giao diện người dùng trong ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.

  • Để chỉ định một nền phần thưởng mới bằng cách sử dụng biến effect, hãy thêm một khung vào ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames. Sau đó thêm tên của khung vào bảng Types.RewardEffect trong ReplicatedStorage.EngagementRewards.Configs.Types.

  • Để tùy chỉnh toàn diện hơn, hãy sửa đổi các đối tượng trong ReplicatedStorage.EngagementRewards.Objects. Ví dụ, bạn có thể sửa đổi BackgroundColor3 của khung RewardsHudButton.Background hoặc Color của FooterContentFrame.ClaimableUIGradient.

  • Điểm vào cho giao diện người dùng là script ReplicatedStorage.EngagementRewards.Client.UIController, script này lấy các đối tượng cần thiết và khởi tạo giao diện người dùng. Nếu bạn thêm hoặc đổi tên các đối tượng cấp cao (không chỉ thêm con hoặc sửa đổi thuộc tính), bạn có thể cần cập nhật mã trong thư mục này để xử lý chúng.

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