Gói tính năng Phần thưởng Tham gia là một khung có thể tùy chỉnh để cung cấp phần thưởng trong trò chơi cho các hoạt động của người chơi nhất định, bao gồm chuỗi đăng nhập hàng ngày và thời gian phiên chơi.Ngoài logic khách và máy chủ, gói bao gồm một giao diện người dùng mặc định để xem tiến trình phần thưởng, tình trạng tháiphần thưởng và nhận phần thưởng.

Nhận gói
Thêm gói Lõi và Phần thưởng tham gia vào kho đồ trong Studio bằng cách nhấp vào liên kết Thêm vào kho đồ ở đây:
Trong Studio, hãy chọn tab Xem .
Nhấp vào Hộp công cụ .
Trong cửa sổ Hộp công cụ , nhấp vào tab Tồn kho .
Nhấp vào ô Tính năng Gói Trọng tâm , sau đó ô Tính năng Phần thưởng Tham gia .Cả hai thư mục gói hiển thị trong cửa sổ Explorer .
Kéo các thư mục vào ReplicatedStorage .
Khởi tạo gói
Di chuyển các gói đến ReplicatedStorage và kiểm tra trải nghiệm của bạn chạy EngagementRewardsExample script trong ReplicatedStorage.EngagementRewards.Server.Examples .
Các kịch bản này cho thấy cách khởi tạo gói để sử dụng trong trải nghiệm của bạn, liên quan đến việc yêu cầu một số kịch bản mô-đun và xác định một chức năng rewardClaimedHandlerFunction() để cuối cùng trao phần thưởng cho người chơi.
Chức năng này phải trả về một boolean.Trong kịch bản ví dụ, bạn có thể thấy rằng nó không tặng 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 được nhận.
Ví dụ phần thưởng tham gia
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ế chức năng xử lý này bằng chức năng xử lý phần thưởng tự nhận của riêng bạn
-- Chức năng này nên xử lý sự kiện phần thưởng đã nhận được cho phần thưởngId được truyền qua
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more
Bạn có thể chỉnh sửa trực tiếp kịch bản này hoặc di chuyển nó sang ServerScriptService nếu đó là vị trí yêu thích của bạn cho mã máy chủ.Như là, kịch bản chỉ hữu ích cho mục đích kiểm tra.
Tiền thưởng cho người chơi thay đổi theo trải nghiệm.Trong một số trải nghiệm, bạn có thể thực hiện tăng trưởng kinh nghiệm hoặc chỉ tăng số vàng của người chơi.Trong những trải nghiệm khác, bạn có thể có một hệ thống kho hàng tùy chỉnh, trong khi những người khác có thể đặt một mặt hàng vào túi của người chơi.Tuy nhiên, trong tất cả các trường hợp, bạn phải thay thế rewardClaimedHandlerFunction() bằng chức năng riêng của mình.
Thêm phần thưởng và tiêu chí
Hầu hết tùy chỉnh phần thưởng xảy ra trong ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig . Tập lệnh này xác định phần thưởng và các yêu cầu để mở khóa nó.
Bạn có thể xem các tuyên bố loại đầy đủ (hoặc thêm các tuyên bố mới) trong ReplicatedStorage.EngagementRewards.Configs.Types , nhưng bạn có lẽ 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: Time và Daily .
local engagementRewardsConfig: Types.EngagementRewardsConfig = {[Types.RewardType.Time] = {tabDisplayName = "Time",tabOrder = 1,description = "Keep playing to unlock rewards!",rewards = {MinutesPlayed1 = {icon = 116913478160966,displayName = "Ice Lance",requiredSecondsInGame = 1 * 5,},-- xem thêm[Types.RewardType.Daily] = {tabDisplayName = "Daily",tabOrder = 2,description = "Play daily to unlock rewards!",rewards = {DailyStreak1 = {icon = 116913478160966,displayName = "Ice Lance",requiredDaysVisitedStreak = 1,effect = Types.RewardEffect.Valuable,},-- more
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 một đề can).Bạn có thể cũng muốn một tên hiển thị để sử dụng trong UI.Xác định quantity cho các giá trị khác hơn 1.Bạn cũng có thể chọn lựa thiết kế phần thưởng có giá trị ( effect = Types.RewardEffect.Valuable ) để cho nó một khung nền khác trong UI.
Biến | Loại | Mô tả | Mặc định | Yêu cầu :--- | :--- | :--- | :--- | :--- biểu tượng | Số | ID tài sản Roblox cho biểu tượng UI.| N/A | Có hiển thị tên | Chuỗi | Một tên cho phần thưởng để sử dụng trong UI.| The RewardId | Không có số lượng | Số | Số lượng vật phẩm để thưởng.| 1 | Không có hiệu ứng | RewardEffect | Hiệu ứng hình ảnh để sử dụng trong UI.Xem Tùy chỉnh UI .| Types.RewardEffect.Default | No
Phần thưởng thời gian
Time phần thưởng được 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ỏ để kiểm tra dễ dàng, và trong trải nghiệm được công bố, trao phần thưởng sau 10 phút, tiếp theo sau 30 phút, tiếp theo sau một giờ, và như vậy.
Nhân số làm cho các con số trong vài giây dễ dàng hơn cho con người làm việc, vì vậy trong hai giờ, bạn có thể chọn định nghĩa 2 * 60 * 60 thay vì 7200 .
Biến | Loại | Mô tả | Mặc định | Yêu cầu :--- | :--- | :--- | :--- | :--- yêu cầuSecondsInGame | Số | Số giây (một số tích cực) mà người chơi phải dành trong trò chơi để kiếm phần thưởng.| N/A | Có
Phần thưởng hàng ngày
Daily phần thưởng được mở khóa sau một số lần đăng nhập hàng ngày liên tục.Ví dụ, ngày đầu tiên mà một người chơi đăng nhập, bạn có thể cho họ ba loại thuốc hoặc một chiếc bánh gừng.Những ngày tiếp theo, bạn có thể thưởng cho các tiêu dùng có giá trị hơn, sau đó là một vật phẩm bền, như một chiếc cần câu mới, sau bảy ngày liên tục.
Biến | Loại | Mô tả | Mặc định | Yêu cầu :--- | :--- | :--- | :--- | :--- requiredDaysVisitedStreak | Số | Số ngày liên tiếp mà người chơi phải kết nối với trải nghiệm để kiếm phần thưởng.| N/A | Có
Hai lựa chọn cấu hình phần thưởng hàng ngày bổ sung khác có sẵn trong DailyRewardTabConfig .
[Types.RewardType.Daily] = {tabDisplayName = "Daily",tabOrder = 2,description = "Play daily to unlock rewards!",isHiddenOnJoin = true,isAlignedToStreakResetTime = true,rewards = {DailyStreak1 = {icon = 116913478160966,displayName = "Ice Lance",requiredDaysVisitedStreak = 1,},-- more
Biến | Loại | Mô tả | Mặc định | Yêu cầu :--- | :--- | :--- | :--- | :--- isHiddenOnJoin | Boolean | Khi đúng, phần thưởng sẽ không hiển thị tự động khi tham gia trải nghiệm.Khi sai, phần thưởng sẽ tự động xuất hiện khi tham gia trò chơi nếu người chơi có phần thưởng hàng ngày mới để nhận.| False | No isAlignedToStreakResetTime | Boolean | Khi đúng, phần thưởng cho ngày thứ 2 có thể được nhận 24 giờ sau thời gian nhận được ban đầu của ngày thứ 1.Khi giả mạo, phần thưởng ngày 2 có thể được nhận tại nửa đêm đầu tiên sau khi ngày 1 có thể nhận được.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 1, có nghĩa là họ không thể yêu cầu phần thưởng ngày 2 cho đến 11:00 PM ngày tiếp theo.Sai lầm có nghĩa là họ có thể yêu cầu phần thưởng ngày 2 vào lúc 12:00 AM (00:00), một giờ sau.Phần thưởng cho ngày 3 và sau đó luôn có sẵn 24 giờ sau thời gian nhận được của ngày trước.| Không | Không
Tùy chỉnh UI
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 của giao diện người dùng.Bạn cũng có thể tìm thấy một số chuỗi UI trong ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .

Để xác định một nền phần thưởng mới bằng cách sử dụng biến effect, 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 .
Đối với tùy chỉnh toàn diện hơn, hãy thay đổ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 nhập cho giao diện người dùng là kịch bản ReplicatedStorage.EngagementRewards.Client.UIController, nhận được 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 (so với chỉ thêm con hoặc sửa đổi tính năng), bạn có thể cần phải cập nhật mã trong thư mục này để xử lý chúng.