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

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

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

รับแพคเกจ

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

  2. ในสตูดิโอ เลือกแท็บ ดู

  3. คลิก กล่องเครื่องมือ .

    Studio's View tab with the Toolbox tool highlighted.
  4. ในหน้าต่าง กล่องเครื่องมือ คลิกที่แท็บ สินค้าคงคลัง

    Studio's Toolbox window with the Inventory tab highlighted.
  5. คลิกที่แท็บ แพคเกจคุณสมบัติหลัก จากนั้นแท็บ แพคเกจรางวัลการมีส่วนร่วม ทั้งสองโฟลเดอร์แพคเกจจะแสดงในหน้าต่าง สํารวจ

  6. ลากไฟล์เข้าไปใน 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หากคุณเพิ่มหรือเปลี่ยนชื่อวัตถุระดับสูง (เมื่อเทียบกับการเพิ่มลูกหรือปรับแต่งคุณสมบัติเท่านั้น) คุณอาจต้องอัปเดตรหัสในโฟลเดอร์นี้เพื่อจัดการกับพวกเขา