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

รับแพคเกจ
เพิ่มแพคเกจ หลัก และ รางวัลการมีส่วนร่วม ในสินค้าคงคลังของคุณภายใน Studio โดยคลิกที่ลิงค์ เพิ่มในสินค้าคงคลัง ที่นี่:
ในสตูดิโอ เลือกแท็บ ดู
คลิก กล่องเครื่องมือ .
ในหน้าต่าง กล่องเครื่องมือ คลิกที่แท็บ สินค้าคงคลัง
คลิกที่แท็บ แพคเกจคุณสมบัติหลัก จากนั้นแท็บ แพคเกจรางวัลการมีส่วนร่วม ทั้งสองโฟลเดอร์แพคเกจจะแสดงในหน้าต่าง สํารวจ
ลากไฟล์เข้าไปใน ReplicatedStorage
เริ่มต้นแพคเกจ
ย้ายแพคเกจไปที่ ReplicatedStorage และทดสอบประสบการณ์ของคุณใช้สคริปต์ EngagementRewardsExample ใน ReplicatedStorage.EngagementRewards.Server.Examples
สคริปต์นี้แสดงวิธีการเริ่มต้นแพคเกจสำหรับใช้ในประสบการณ์ของคุณซึ่งรวมถึงการต้องใช้สคริปต์โมดูลหลายตัวและการกำหนดฟังก์ชัน rewardClaimedHandlerFunction() ที่ในที่สุดจะให้รางวัลแก่ผู้เล่น
ฟังก์ชันนี้ต้องส่งคืนบูลีนในสคริปต์ตัวอย่างคุณสามารถเห็นได้ว่ามันไม่ให้รางวัลแก่ผู้เล่น; มันเพียงพิมพ์ผู้เล่นรางวัลและปริมาณที่รับได้
ตัวอย่างรางวัลมีส่วนร่วม
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)
-- เปลี่ยนฟังก์ชันตัวจัดการนี้ด้วยฟังก์ชันตัวจัดการรางวัลที่คุณรับเอง
-- ฟังก์ชันนี้ควรจัดการการเรียกร้องรางวัลที่อ้างสิทธิ์สำหรับรางวัล ID ที่ส่งใน
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more
คุณสามารถแก้ไขสคริปต์นี้โดยตรงหรือย้ายไปที่ ServerScriptService หากเป็นตำแหน่งที่คุณต้องการสำหรับรหัสเซิร์ฟเวอร์ตามที่เป็น, สคริปต์มีประโยชน์เฉพาะสำหรับการทดสอบเท่านั้น
การให้รางวัลแก่ผู้เล่นแตกต่างกันไปตามประสบการณ์ในบางประสบการณ์คุณอาจให้บูสต์ประสบการณ์หรือเพิ่มจํานวนทองคําของผู้เล่นเท่านั้นในประสบการณ์อื่น ๆ คุณอาจมีระบบสินค้าคงคลังที่กำหนดเอง ในขณะที่คนอื่นอาจวางรายการลงในกระเป๋าเป้สะพายหลังของผู้เล่นอย่างไรก็ตามในทุกกรณีคุณต้องแทนที่ rewardClaimedHandlerFunction() ด้วยฟังก์ชันของคุณเอง
เพิ่มรางวัลและเกณฑ์
การปรับแต่งรางวัลส่วนใหญ่เกิดขึ้นภายใน ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig . สคริปต์โมดูลนี้กำหนดรางวัลและข้อกำหนดในการปลดล็อก
คุณสามารถดูคำประกาศประเภทเต็ม (หรือเพิ่มคำประกาศใหม่) ใน ReplicatedStorage.EngagementRewards.Configs.Types แต่คุณอาจต้องทำงานกับ EngagementRewardsConfig เท่านั้นแพคเกจคุณสมบัติรวมถึงสองประเภทรางวัล: Time และ 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,},-- มากกว่า[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
ทั้งสองประเภทรางวัลต้องใช้ไอคอนซึ่งเป็นรหัสทรัพย์สิน Roblox สำหรับภาพ ( ไม่ เป็นสติกเกอร์)คุณอาจต้องการชื่อแสดงผลสำหรับใช้ใน UI เช่นกันระบุ quantity สำหรับค่าที่ไม่ใช่ 1คุณยังสามารถกำหนดรางวัลให้มีคุณค่า ( effect = Types.RewardEffect.Valuable ) เพื่อให้มันมีกรอบพื้นหลังที่แตกต่างใน UI
ตัวแปร | ประเภท | คำอธิบาย | ค่าเริ่มต้น | จำเป็น :--- | :--- | :--- | :--- | :--- ไอคอน | จํานวน | รหัสสินทรัพย์ Roblox สําหรับไอคอน UI| N/A | ใช้ชื่อที่แสดง | สตริง | ชื่อสำหรับรางวัลที่ใช้ใน UI| RewardId | ไม่มีปริมาณ | จํานวน | จํานวนของรายการที่จะได้รับรางวัล| 1 | ไม่มีผล | RewardEffect | เอฟเฟกต์ภาพที่จะใช้ใน UIดู ปรับแต่ง UI| Types.RewardEffect.Default | No
รางวัลเวลา
Time รางวัลจะปลดล็อคหลังจากผ่านไปบางจำนวนวินาทีในเกมปรับเหล่านี้ตามความต้องการของคุณคุณอาจใช้ตัวเลขเล็กๆ สำหรับการทดสอบที่ง่าย และในประสบการณ์ที่เผยแพร่ มอบรางวัลหลังจาก 10 นาที อีกครั้งหลังจาก 30 นาที อีกครั้งหลังจากหนึ่งชั่วโมง และอื่นๆ
การคูณทำให้ตัวเลขในวินาทีง่ายขึ้นสำหรับมนุษย์ที่จะทำงานด้วย ดังนั้นสำหรับสองชั่วโมงคุณอาจต้องการระบุ 2 * 60 * 60 แทน 7200
ตัวแปร | ประเภท | คําอธิบาย | ค่าเริ่มต้น | จําเป็น: --- | :--- | :--- | :--- | :--- ต้องใช้เวลาในเกมเพื่อรับรางวัล --- จํานวนวินาที (เลขเชิงบวก) ที่ผู้เล่นต้องใช้ในเกมเพื่อรับรางวัล| N/A | ใช่
รางวัลรายวัน
Daily รางวัลจะปลดล็อคหลังจากการล็อกอินติดต่อกันหลายวันหลังจากจำนวนที่กำหนดตัวอย่างเช่น วันแรกที่ผู้เล่นล็อกอิน คุณอาจให้ยาสามอย่างหรือแผ่นกล้วยหอมในวันต่อไป คุณอาจให้รางวัลใช้ได้มีค่ามากขึ้น ตามด้วยไอเทมที่ทนทาน เช่น เบ็ดตกปลาใหม่ หลังจากเจ็ดวันติดต่อกัน
ตัวแปร | ประเภท | คำอธิบาย | ค่าเริ่มต้น | จำเป็น :--- | :--- | :--- | :--- | :--- requiredDaysVisitedStreak | จํานวน | จํานวนวันติดต่อกันที่ผู้เล่นต้องเชื่อมต่อกับประสบการณ์เพื่อรับรางวัล| N/A | ใช่
ตัวเลือกการกำหนดค่ารางวัลรายวันเพิ่มเติมสองรายการมีอยู่ใน 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
ตัวแปร | ประเภท | คําอธิบาย | ค่าเริ่มต้น | จําเป็น: --- | :--- | :--- | :--- | :--- ซ่อนเมื่อเข้าร่วม | Boolean | เมื่อถูกต้องจะไม่มีรางวัลป๊อปอัพโดยอัตโนมัติเมื่อเข้าร่วมประสบการณ์เมื่อปิดใช้งาน รางวัลจะปรากฏขึ้นโดยอัตโนมัติเมื่อเข้าร่วมเกมหากผู้เล่นมีรางวัลประจําวันใหม่ที่จะรับ| ไม่ถูกต้อง | ไม่มี isAlignedToStreakResetTime | Boolean | เมื่อถูกต้องแล้ว รางวัลสำหรับวันที่ 2 สามารถเรียกร้องได้ 24 ชั่วโมงหลังจากเวลาเรียกร้องครั้งแรกของวันที่ 1เมื่อเท็จ, รางวัลวันที่ 2 สามารถเรียกร้องได้ในเวลาเที่ยงคืนครั้งแรกหลังจากเวลาที่สามารถเรียกร้องได้วันที่ 1ตัวอย่างเช่น หากผู้เล่นล็อกอินเวลา 23:00 น. (11:00 น.) และรับรางวัลวันที่ 1 พวกเขาจะไม่สามารถรับรางวัลวันที่ 2 ได้จนกว่า 23:00 น. ของวันถัดไปความผิดพลาดหมายความว่าพวกเขาสามารถรับรางวัลวันที่ 2 ได้ที่ 12:00 AM (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หากคุณเพิ่มหรือเปลี่ยนชื่อวัตถุระดับสูง (เมื่อเทียบกับการเพิ่มลูกหรือปรับแต่งคุณสมบัติเท่านั้น) คุณอาจต้องอัปเดตรหัสในโฟลเดอร์นี้เพื่อจัดการกับพวกเขา