รางวัลการมีส่วนร่วม

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ชุดฟีเจอร์ รางวัลการมีส่วนร่วม เป็นกรอบการทำงานที่ปรับแต่งได้สำหรับการเสนอรางวัลในเกมสำหรับกิจกรรมของผู้เล่นบางอย่าง รวมถึงการล็อกอินต่อเนื่องเป็นประจำและเวลาที่ใช้เล่นในเซสชัน นอกจากตรรกะของไคลเอนต์และเซิร์ฟเวอร์แล้ว ชุดนี้ยังมี UI เริ่มต้นสำหรับดูความก้าวหน้าของรางวัล สถานะรางวัล และการเรียกร้องรางวัล

รับชุดฟีเจอร์

  1. เพิ่มชุดฟีเจอร์ Core และ รางวัลการมีส่วนร่วม ลงในคลังของคุณภายใน Studio โดยคลิกที่ลิงก์ Add to Inventory ที่นี่:

  2. จากเมนู Window หรือแถบเครื่องมือ Home ของ Studio ให้เปิด Toolbox.

  3. ในหน้าต่าง Toolbox ให้คลิกที่แท็บ Inventory ช่องปรับชนิด My Models จะแสดง

    หน้าต่าง Toolbox ของ Studio ที่มีแท็บ Inventory เน้น.
  4. คลิกที่ไทล์ Feature Package Core แล้วคลิกที่ไทล์ Engagement Rewards Feature Package ทั้งสองโฟลเดอร์แพ็กเกจจะแสดงในหน้าต่าง Explorer

  5. ลากโฟลเดอร์ไปที่ ReplicatedStorage

เริ่มต้นชุดฟีเจอร์

การย้ายแพ็กเกจไปที่ ReplicatedStorage และการทดสอบประสบการณ์ของคุณจะทำให้รันสคริปต์ EngagementRewardsExample ใน ReplicatedStorage.EngagementRewards.Server.Examples.

สคริปต์นี้แสดงวิธีการเริ่มต้นชุดฟีเจอร์เพื่อใช้งานในประสบการณ์ของคุณ ซึ่งเกี่ยวข้องกับการเรียกใช้งานหลายมอดูลสคริปต์และการกำหนดฟังก์ชัน rewardClaimedHandlerFunction() ที่ในที่สุดจะมอบรางวัลให้กับผู้เล่น

ฟังก์ชันนี้ต้องส่งคืนค่า boolean ในสคริปต์ตัวอย่าง คุณจะเห็นว่ามันไม่มอบรางวัลให้กับผู้เล่น มันเพียงแต่พิมพ์ผู้เล่น รางวัล และจำนวนที่ถูกเรียก

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)
-- เปลี่ยนฟังก์ชันจัดการนี้ด้วยฟังก์ชันจัดการการเรียกรางวัลของคุณเอง
-- ฟังก์ชันนี้ควรจัดการเหตุการณ์การเรียกรางวัลสำหรับ rewardId ที่ส่งมา
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- เพิ่มเติม

คุณสามารถปรับเปลี่ยนสคริปต์นี้โดยตรงหรือย้ายไปที่ ServerScriptService หากนั้นเป็นสถานที่ที่คุณต้องการสำหรับรหัสเซิร์ฟเวอร์ ขณะนี้ สคริปต์นี้มีประโยชน์เพียงสำหรับการทดสอบ

การมอบรางวัลให้กับผู้เล่นจะแตกต่างกันไปในแต่ละประสบการณ์ ในบางประสบการณ์ คุณอาจมอบการเพิ่มประสบการณ์หรือเพียงแค่เพิ่มจำนวนทองของผู้เล่น ในประสบการณ์อื่น ๆ คุณอาจมีระบบคลังที่กำหนดเอง ในขณะที่อื่น ๆ อาจใส่ไอเท็มลงในกระเป๋าของผู้เล่น อย่างไรก็ตามในทุกกรณี คุณต้องแทนที่ rewardClaimedHandlerFunction() ด้วยฟังก์ชันของคุณเอง

เพิ่มรางวัลและเกณฑ์

การปรับแต่งรางวัลส่วนใหญ่จะเกิดขึ้นภายใน ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig โมดูลสคริปต์นี้กำหนดรางวัลและข้อกำหนดสำหรับการปลดล็อกรางวัล

คุณสามารถดูการประกาศประเภททั้งหมด (หรือเพิ่มใหม่) ใน ReplicatedStorage.EngagementRewards.Configs.Types แต่คุณอาจต้องทำงานเฉพาะกับ EngagementRewardsConfig ชุดฟีเจอร์นี้มีสองประเภทของรางวัลคือ Time และ Daily


local engagementRewardsConfig: Types.EngagementRewardsConfig = {
[Types.RewardType.Time] = {
tabDisplayName = "เวลา",
tabOrder = 1,
description = "เล่นต่อไปเพื่อปลดล็อกรางวัล!",
rewards = {
MinutesPlayed1 = {
icon = 116913478160966,
displayName = "Ice Lance",
requiredSecondsInGame = 1 * 5,
},
-- เพิ่มเติม
[Types.RewardType.Daily] = {
tabDisplayName = "ประจำวัน",
tabOrder = 2,
description = "เล่นทุกวันเพื่อปลดล็อกรางวัล!",
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Ice Lance",
requiredDaysVisitedStreak = 1,
effect = Types.RewardEffect.Valuable,
},
-- เพิ่มเติม

ทั้งสองประเภทของรางวัลต้องการไอคอนซึ่งเป็น ID สินทรัพย์ Roblox สำหรับภาพ (ไม่ใช่ decal) คุณอาจต้องการชื่อแสดงเพื่อใช้ใน UI กำหนด quantity สำหรับค่าที่แตกต่างจาก 1 คุณยังสามารถกำหนดรางวัลให้มีค่า ( effect = Types.RewardEffect.Valuable) เพื่อให้มีกรอบพื้นหลังที่แตกต่างใน UI ได้อีกด้วย

ตัวแปรประเภทคำอธิบายค่าเริ่มต้นจำเป็น
iconหมายเลขID สินทรัพย์ Roblox สำหรับไอคอน UIN/Aใช่
displayNameสตริงชื่อสำหรับรางวัลเพื่อใช้ใน UIRewardIdไม่
quantityหมายเลขจำนวนของไอเท็มที่จะมอบให้1ไม่
effectRewardEffectเอฟเฟ็กต์ภาพที่จะใช้ใน UI ดู ปรับแต่ง UITypes.RewardEffect.Defaultไม่

รางวัลเวลา

รางวัล Time จะปลดล็อคหลังจากจำนวนวินาทีที่กำหนดในเกม ปรับเปลี่ยนตัวเลขเหล่านี้ให้ตรงกับความต้องการของคุณ คุณอาจใช้ตัวเลขเล็ก ๆ เพื่อการทดสอบที่ง่ายและในประสบการณ์ที่เผยแพร่ จะมอบรางวัลหลังจาก 10 นาที อีกหนึ่งหลังจาก 30 นาที และอีกอันหลังจาก 1 ชั่วโมง และต่อไปเรื่อย ๆ

การคูณช่วยทำให้ตัวเลขในวินาทีทำงานได้ง่ายขึ้นสำหรับมนุษย์ ดังนั้นสำหรับสองชั่วโมง คุณอาจต้องการระบุ 2 * 60 * 60 แทนที่จะเป็น 7200

ตัวแปรประเภทคำอธิบายค่าเริ่มต้นจำเป็น
requiredSecondsInGameหมายเลขจำนวนวินาที (จำนวนเต็มบวก) ที่ผู้เล่นต้องใช้ในเกมเพื่อรับรางวัลN/Aใช่

รางวัลประจำวัน

รางวัล Daily จะปลดล็อคหลังจากจำนวนวันที่ล็อกอินต่อเนื่องกันที่กำหนด ตัวอย่างเช่น วันแรกที่ผู้เล่นล็อกอิน คุณอาจมอบยาฉีดสามขวดหรือขนมอบจากซินนามอน ตามวันถัดไป คุณอาจมอบของอุปโภคบริโภคที่มีค่ามากขึ้น ตามด้วยไอเท็มที่ทนทาน เช่น เพื่อนหาปลาใหม่ หลังจากเจ็ดวันติดต่อกัน

ตัวแปรประเภทคำอธิบายค่าเริ่มต้นจำเป็น
requiredDaysVisitedStreakหมายเลขจำนวนวันที่ผู้เล่นจะต้องเชื่อมต่อกับประสบการณ์ติดต่อกันเพื่อรับรางวัลN/Aใช่

ตัวเลือกการกำหนดค่ารางวัลประจำวันเพิ่มเติมอีกสองตัวเลือกสามารถใช้ได้ใน DailyRewardTabConfig


[Types.RewardType.Daily] = {
tabDisplayName = "ประจำวัน",
tabOrder = 2,
description = "เล่นทุกวันเพื่อปลดล็อกรางวัล!",
isHiddenOnJoin = true,
isAlignedToStreakResetTime = true,
rewards = {
DailyStreak1 = {
icon = 116913478160966,
displayName = "Ice Lance",
requiredDaysVisitedStreak = 1,
},
-- เพิ่มเติม
ตัวแปรประเภทคำอธิบายค่าเริ่มต้นจำเป็น
isHiddenOnJoinบูลีนเมื่อเป็นจริง รางวัลจะไม่ถูกแสดงโดยอัตโนมัติเมื่อเข้าร่วมประสบการณ์ เมื่อเป็นเท็จ รางวัลจะแสดงโดยอัตโนมัติเมื่อเข้าร่วมเกมหากผู้เล่นมีรางวัลประจำวันใหม่ที่ต้องเรียกร้องเท็จไม่
isAlignedToStreakResetTimeบูลีนเมื่อเป็นจริง รางวัลสำหรับวันที่ 2 จะสามารถเรียกร้องได้ 24 ชั่วโมงหลังจากเวลาที่สามารถเรียกร้องได้ในวันแรก เมื่อเป็นเท็จ รางวัลวันที่ 2 จะสามารถเรียกร้องได้ในเที่ยงคืนแรกหลังจากเวลาที่สามารถเรียกร้องได้ในวันแรก ตัวอย่างเช่น หากผู้เล่นล็อกอินตอน 23:00 น. (11:00 PM) และเรียกรางวัลวันแรก เวลาจริงหมายความว่าพวกเขาจะไม่สามารถเรียกรางวัลวันที่ 2 จนกว่าจะถึง 23:00 น. ของวันถัดไป ในขณะที่เป็นเท็จ หมายความว่าพวกเขาสามารถเรียกรางวัลวันที่ 2 ได้ที่ 00:00 น. (เที่ยงคืน) หนึ่งชั่วโมงหลังจากนั้น รางวัลสำหรับวันที่ 3 และวันถัดไปจะสามารถใช้ได้ 24 ชั่วโมงหลังจากเวลาที่สามารถเรียกร้องได้ในวันก่อนหน้าเท็จไม่

ปรับแต่ง UI

ในส่วนก่อนหน้านี้ อาจสังเกตเห็นฟิลด์ tabDisplayName tabOrder และ description ซึ่งอนุญาตให้มีการปรับแต่งเบื้องต้นของส่วนต่อประสานผู้ใช้ นอกจากนี้คุณยังสามารถหาสตริง UI บางส่วนใน ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings

  • เพื่อระบุพื้นหลังรางวัลใหม่โดยใช้ตัวแปร effect ให้เพิ่มกรอบหนึ่งไปที่ ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames จากนั้นเพิ่มชื่อกรอบลงในตาราง Types.RewardEffect ใน ReplicatedStorage.EngagementRewards.Configs.Types

  • สำหรับการปรับแต่งที่มีความรอบด้านมากขึ้น ให้ปรับเปลี่ยนวัตถุใน ReplicatedStorage.EngagementRewards.Objects ตัวอย่างเช่น คุณอาจปรับเปลี่ยน BackgroundColor3 ของกรอบ RewardsHudButton.Background หรือ Color ของ FooterContentFrame.ClaimableUIGradient

  • จุดเริ่มต้นสำหรับส่วนต่อประสานผู้ใช้คือสคริปต์ ReplicatedStorage.EngagementRewards.Client.UIController ซึ่งได้รับวัตถุที่จำเป็นและเริ่มต้น UI หากคุณเพิ่มหรือเปลี่ยนชื่อวัตถุระดับสูง (ไม่ใช่เพียงแค่เพิ่มลูกหรือปรับเปลี่ยนคุณสมบัติ) คุณอาจต้องอัปเดตรหัสในโฟลเดอร์นี้เพื่อจัดการกับพวกเขา

©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ