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

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

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

รับแพ็คเกจ

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

  2. จากเมนู Window ของ Studio หรือแถบเครื่องมือ Home เปิด 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(`รางวัล {rewardId} ถูกเรียกร้องโดย {player} ด้วยจำนวน {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

VariableTypeDescriptionDefaultRequired
iconNumberID ของสินทรัพย์ Roblox สำหรับไอคอน UI.N/Aใช่
displayNameStringชื่อสำหรับรางวัลเพื่อใช้ใน UI.RewardIdไม่
quantityNumberจำนวนไอเท็มที่จะมอบรางวัล.1ไม่
effectRewardEffectเอฟเฟกต์ภาพที่จะใช้ใน UI. ดู ปรับแต่ง UI.Types.RewardEffect.Defaultไม่

รางวัลเวลา

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

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

VariableTypeDescriptionDefaultRequired
requiredSecondsInGameNumberจำนวนวินาที (จำนวนเต็มบวก) ที่ผู้เล่นต้องใช้ในเกมเพื่อรับรางวัล.N/Aใช่

รางวัลรายวัน

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

VariableTypeDescriptionDefaultRequired
requiredDaysVisitedStreakNumberจำนวนวันที่ผู้เล่นต้องเชื่อมต่อกับเกมติดต่อกันเพื่อรับรางวัล.N/Aใช่

ตัวเลือกการกำหนดค่ารางวัลรายวันเพิ่มเติมอีกสองตัวเลือกมีอยู่ใน DailyRewardTabConfig.

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

ปรับแต่ง 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 เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ