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

รับแพ็คเกจ
Creator Store เป็นแท็บของ Toolbox ที่คุณสามารถใช้ค้นหาทรัพย์สินทั้งหมดที่สร้างขึ้นโดย Roblox และชุมชน Roblox สำหรับใช้ภายในโปรเจกต์ของคุณ รวมถึงโมเดล, รูปภาพ, เมช, เสียง, ส่วนเสริม, วิดีโอ, และฟอนต์ คุณสามารถใช้ Creator Store เพื่อเพิ่มหนึ่งหรือมากกว่าทรัพย์สินโดยตรงไปยังประสบการณ์ที่เปิดอยู่ รวมถึงฟีเจอร์แพ็คเกจด้วย!
แพ็คเกจฟีเจอร์แต่ละแพ็คเกจต้องการแพ็คเกจฟีเจอร์ Core เพื่อทำงานได้อย่างถูกต้อง และแพ็คเกจ บัตรประจำฤดูกาล ต้องการแพ็คเกจฟีเจอร์ ภารกิจ เพื่อกำหนดภารกิจในฤดูกาล เมื่อทรัพย์สินของแพ็คเกจทั้งสามอยู่ในคลังของคุณแล้ว คุณสามารถนำกลับมาใช้ซ้ำในโปรเจกต์ใดก็ได้ในแพลตฟอร์ม
ในการนำแพ็คเกจจากคลังของคุณเข้าสู่ประสบการณ์ของคุณ:
เพิ่มแพ็คเกจ Core, ภารกิจ, และ บัตรประจำฤดูกาล ไปยังคลังของคุณภายใน Studio โดยคลิกที่ลิงก์ Add to Inventory ในชุดส่วนประกอบถัดไปนี้
จากเมนู Window หรือแถบเครื่องมือ Home ของ Studio เปิด Toolbox.
ในหน้าต่าง Toolbox คลิกที่แท็บ Inventory การจัดเรียง My Models จะปรากฏขึ้น

คลิกที่ไทล์ Feature Package Core, ไทล์ Missions Feature Package, แล้วไทล์ Season Passes Feature Package ไฟล์แพ็คเกจทั้งสามจะแสดงในหน้าต่าง Explorer.
ลากโฟลเดอร์แพ็คเกจไปยัง ReplicatedStorage.
อนุญาตให้การเรียกข้อมูลประมวลผลข้อมูลติดตามการซื้อของผู้เล่นด้วยแพ็คเกจเหล่านี้
- เปิดหน้าต่าง File ⟩ Experience Settings ของ Studio.
- ไปที่แท็บ Security จากนั้นเปิด Enable Studio Access to API Services.
กำหนดการพึ่งพาภารกิจ
เพื่อให้ฤดูกาลทำงานได้อย่างถูกต้อง คุณต้องเพิ่มตรรกะเพื่อให้แพ็คเกจฟีเจอร์ บัตรประจำฤดูกาล สามารถติดตามความก้าวหน้าของผู้เล่นและอัปเดตส่วนประกอบ UI ได้อย่างเหมาะสม สำหรับความสะดวก ตัวอย่างด้านล่างใช้แพ็คเกจฟีเจอร์ ภารกิจ และเรียกใช้ SeasonPasses.addProgressToSeason() หลังจากที่ผู้เล่นทำภารกิจเสร็จสิ้น แต่คุณสามารถติดตามความก้าวหน้าของผู้เล่นได้ตามต้องการ อย่างไรก็ดี ไม่ว่าคุณจะกำหนดภารกิจหรือไม่ก็ตาม คุณยังต้องเพิ่มแพ็คเกจฟีเจอร์ ภารกิจ ไปยังประสบการณ์ของคุณเพื่อให้โค้ด บัตรประจำฤดูกาล ทำงานได้
ภารกิจแต่ละภารกิจมีชุดของงานที่ต้องเสร็จสิ้นเพื่อให้ภารกิจสมบูรณ์ ตัวเลือกการกำหนดค่า และข้อมูลเมตาที่แสดงได้จากภายนอก สำหรับคำแนะนำเชิงลึกเกี่ยวกับวิธีการกำหนดค่าภารกิจและงานของพวกเขา ดูที่ Define missions.
เพิ่ม XP จากภารกิจไปยังฤดูกาล
ตัวอย่างนี้ใช้แพ็คเกจฟีเจอร์ ภารกิจ เพื่อกำหนดภารกิจที่ผู้เล่นสามารถทำได้เพื่อรับประสบการณ์ (XP) และก้าวหน้าในฤดูกาล เพื่อมอบ XP ให้กับผู้เล่นเมื่อพวกเขาเสร็จสิ้นภารกิจที่กำหนดไว้ คุณต้องเพิ่มตรรกะในสคริปต์เซิร์ฟเวอร์ ReplicatedStorage.Missions.Server.Examples.MissionsExample เพื่อให้มันสามารถนำเข้าข้อมูลบัตรประจำฤดูกาลและรางวัลผู้เล่นตามความก้าวหน้าของพวกเขา
local SeasonPasses = require(ReplicatedStorage.SeasonPasses.Server.SeasonPasses)
local function completeHandler(player: Player, missionId: Types.MissionId)
print(`{player} เสร็จสิ้นภารกิจ {missionId}`)
if missionId == "Walking" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking2" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Walking3" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Availability" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Manual" then
SeasonPasses.addProgressToSeason(player, 100)
end
if missionId == "Minutely" then
SeasonPasses.addProgressToSeason(player, 100)
end
end
เพิ่มไอคอนรางวัลระดับฤดูกาล
นอกจากนี้ยังมีการมอบ XP ให้กับผู้เล่นเมื่อพวกเขาผ่านภารกิจอีกด้วย แพ็คเกจฟีเจอร์ บัตรประจำฤดูกาล ใช้แพ็คเกจฟีเจอร์ ภารกิจ เพื่อกำหนดระดับรางวัลที่ไม่ซ้ำกันภายในฤดูกาล หากคุณต้องการเพิ่มไอคอนบนหน้าจอสำหรับรางวัลระดับซึ่งผู้เล่นสามารถได้รับหากพวกเขามี XP เพียงพอ ให้เพิ่มหมายเลข ID ทรัพย์สินในการกำหนดค่าของ Missions สำหรับรางวัลระดับแต่ละรางวัล
Tier3Mission = {categoryId = "ทั่วไป",metadata = {displayName = "ภารกิจระดับ 3",description = "กระโดด 10 ครั้ง",visibleAfterComplete = true,visibleBeforeUnlocked = true,rewards = {{icon = 16826775737,displayName = "รายการ",},{icon = 106912146245070,displayName = "Season XP",},},},}
กำหนดค่าฤดูกาล
หลังจากที่คุณได้ตั้งค่าทุกภารกิจที่ต้องการรวมไว้ในฤดูกาลแล้ว ก็ถึงเวลาในการกำหนดค่าบัตรประจำฤดูกาลเอง ใน ReplicatedStorage.SeasonPasses.Configs.Season จะมีตัวอย่างการกำหนดค่าฤดูกาลสำหรับการอ้างอิงของคุณ และตัวอย่างโค้ดต่อไปนี้มาจากไฟล์นั้น
กำหนดบัตรผ่าน
บัตรผ่าน ช่วยให้คุณเรียกเก็บค่าธรรมเนียม Robux แบบครั้งเดียวจากผู้เล่นเพื่อเข้าถึงภารกิจและรางวัลที่เป็นไปได้ของบัตรประจำฤดูกาล หลังจากที่คุณสร้างบัตรผ่านที่มีหมายเลข ID ทรัพย์สินเฉพาะ คุณสามารถตั้งค่ารายละเอียดของบัตรผ่านในฟิลด์ premiumTrack ของฤดูกาลของคุณ ตัวอย่างเช่น ตัวอย่างโค้ดต่อไปนี้กำหนดบัตรผ่านที่มีหมายเลข ID ทรัพย์สินตัวอย่างเป็น 928192647 เพื่อแทนบัตรประจำฤดูกาล จากนั้นให้ชื่อระดับบัตรประจำฤดูกาลเป็น "Premium Track"
premiumTrack = {pricing = {gamePassId = 928192647,},trackMetadata = {trackName = "Premium Track",},},
กำหนดระดับและรางวัล
ระดับฤดูกาลแสดงถึงเหตุการณ์สำคัญที่ผู้เล่นต้องบรรลุเพื่อรับรางวัลตลอดฤดูกาล เพื่อไต่ระดับ ผู้เล่นจะต้องทำภารกิจเพื่อรับ XP และเมื่อพวกเขาได้ XP เพียงพอ พวกเขาจะได้เลื่อนขึ้นไปยังระดับถัดไปและได้รับรางวัลสำหรับระดับที่พวกเขาเพิ่งทำเสร็จ ระดับมีคุณสมบัติ upperBoundXP ที่ตั้งค่าขีดจำกัด XP ที่จำเป็นในการขอรับรางวัลสำหรับระดับนั้น ๆ แต่ละระดับสามารถเสนอรางวัลได้สองประเภท:
- ฟรี - รางวัลที่ผู้เล่นสามารถได้รับโดยไม่ต้องซื้อบัตรประจำฤดูกาล
- พรีเมียม - รางวัลที่ผู้เล่นสามารถได้รับได้เฉพาะโดยการซื้อบัตรประจำฤดูกาลเท่านั้น
เพื่อแสดงให้เห็น ต่อไปนี้คือรหัสตัวอย่างสำหรับฤดูกาลที่มีระดับหนึ่งซึ่งต้องการ 100 XP เพื่อรับรางวัล lance ไอซ์ฟรีและรางวัล shield ระเบิดพรีเมียม icon คือหมายเลข ID ทรัพย์สินของภาพ UI ที่จะแสดงสำหรับรางวัล และ displayName แสดงชื่อสำหรับรางวัล หมายเหตุว่าชื่อที่แสดงจะปรากฏใน UI แต่ rewardId จะซ่อนจากผู้เล่นและใช้เพื่อวัตถุประสงค์ทาง ข้อมูลจัดเก็บ เป็นหลัก
tiers = {[1] = {upperBoundXP = 100,freeReward = {icon = 128181721602852,displayName = "Ice Lance",rewardId = "iceLance",},premiumReward = {icon = 95882371958115,displayName = "Blast Shield",rewardId = "blastShield",},},}
ในขณะที่สคริปต์นี้มุ่งเน้นไปที่วิธีการกำหนดค่าหนึ่งระดับในแต่ละครั้ง ฤดูกาลส่วนใหญ่มีมากกว่าหนึ่งระดับ ในขณะที่คุณกำหนดค่าหลายระดับและรางวัลสำหรับฤดูกาล ให้แน่ใจว่าทุก rewardId เป็นตัวเลขและเรียงลำดับเพิ่มขึ้นเพื่อให้ระดับของคุณแสดงตามลำดับที่คุณกำหนดในรายการระดับ
กำหนดรายละเอียดฤดูกาล
ตอนนี้คุณมีบัตรประจำฤดูกาลที่มาพร้อมกับระดับและรางวัลแล้ว ก็ถึงเวลาที่จะกำหนดรายละเอียดของฤดูกาลของคุณ:
- title - ชื่อของฤดูกาลของคุณ
- description - คำอธิบายของฤดูกาลของคุณ
- startUtc - จุดเริ่มต้นของฤดูกาลในเวลาสากลที่ประสานกัน
- endUtc - จุดสิ้นสุดของฤดูกาลในเวลาสากลที่ประสานกัน
- seasonId - ช่วยให้คุณติดตาม XP ที่ผู้เล่นได้รับตลอดฤดูกาลที่กำหนดไว้
แพ็คเกจจะใช้ startUtc และ endUtc เพื่อแสดงนับถอยหลังของฤดูกาล
startUtc = DateTime.fromUniversalTime(2024, 10, 01, 17, 0, 0),endUtc = DateTime.fromUniversalTime(2025, 2, 28, 17, 0, 0),title = "ฤดูกาล 1",description = "เข้าสู่เมืองอวกาศ",seasonId = "season1",
รวมตรรกะของเซิร์ฟเวอร์
ดูที่ ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample ซึ่งแสดงให้เห็นว่าเซิร์ฟเวอร์ของคุณจะทำงานร่วมกับ แพ็คเกจฟีเจอร์บัตรประจำฤดูกาล อย่างไร ส่วนน้อยด้านล่างมาจากสคริปต์นั้น
คุณต้องสร้างฟังก์ชันตัวจัดการเพื่อมอบรางวัลที่อ้างสิทธิ์ให้กับผู้เล่นของคุณ ตัวอย่างเช่น ตัวอย่างโค้ดต่อไปนี้สร้างฟังก์ชัน rewardClaimedHandlerFunction() ซึ่งติดตามเมื่อผู้เล่นก้าวหน้าไปยังระดับถัดไป จากนั้นมอบรางวัลให้พวกเขาเพียงแค่รางวัลฟรี หรือทั้งรางวัลฟรีและพรีเมียมหากพวกเขาซื้อบัตรประจำฤดูกาล
เพื่อวัตถุประสงค์ของคุณ ให้แทนที่การเรียก task.wait() ด้วยตรรกะที่อนุญาตให้ผู้เล่นได้รับรางวัลที่พวกเขาได้อ้างสิทธิ์ในฤดูกาล ฟังก์ชันนี้ ต้อง คืนค่าบูลีน: true หากเซิร์ฟเวอร์มอบรางวัล หากไม่แล้วเป็น false
local function rewardClaimedHandlerFunction(_player: Player, _rewardId: Types.RewardId): boolean
task.wait(2)
return true
end
local function initializeRewardClaimedHandlers()
for tierId, tier in pairs(Season.tiers) do
if tier then
if tier.freeReward then
SeasonPasses.setRewardClaimedHandler(tier.freeReward.rewardId, rewardClaimedHandlerFunction)
end
if tier.premiumReward then
SeasonPasses.setRewardClaimedHandler(tier.premiumReward.rewardId, rewardClaimedHandlerFunction)
end
end
end
end
กำหนดค่าค่าคงที่
ค่าคงที่สำหรับแพ็คเกจฟีเจอร์ Core จะอยู่ในสองแห่ง:
- ค่าคงที่ที่แชร์กันจะอยู่ใน ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants.
- ค่าคงที่เฉพาะแพ็คเกจ ในกรณีนี้ ค่าคงที่ของแพ็คเกจ บัตรประจำฤดูกาล จะอยู่ใน ReplicatedStorage.SeasonPasses.Configs.Constants. สิ่งหลักที่คุณอาจต้องการปรับเพื่อให้ตรงกับความต้องการด้านการออกแบบของประสบการณ์ของคุณ:
- หมายเลข ID ทรัพย์สินเสียง
- ระยะเวลาของผลกระทบการซื้อและสีของอนุภาค นอกจากนี้ คุณสามารถค้นหาสตริงสำหรับการแปลซึ่งแยกออกเป็นที่เดียว: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings.
ปรับแต่งส่วนประกอบ UI
โดยการปรับแต่งวัตถุในแพ็คเกจ เช่น สี ฟอนต์ และความโปร่งใส คุณสามารถปรับการนำเสนอวิชวลของการแจ้งเตือนบัตรประจำฤดูกาลของคุณ อย่างไรก็ตาม โปรดทราบว่าหากคุณย้ายวัตถุใด ๆ รอบภายในลำดับชั้น โค้ดจะไม่สามารถหาพบและคุณจะต้องปรับแต่งโค้ดของคุณ
ฤดูกาลประกอบด้วยส่วนประกอบระดับสูงดังต่อไปนี้ซึ่งถูกเพิ่มเข้ามาใน UI ของแพ็คเกจฟีเจอร์ ภารกิจ โดยโปรแกรม:
- SeasonBottomFrame – เฟรมที่ประกอบด้วยข้อมูลเกี่ยวกับแต่ละระดับ แฟรมเลื่อนของรางวัลสำหรับระดับ และข้อมูลระดับ
- SeasonDescriptionFrame - เฟรมในหัวข้อที่แสดงชื่อฤดูกาล คำอธิบาย และการนับถอยหลัง
- TierRewardFrame - เฟรมที่แสดงรางวัลเฉพาะสำหรับระดับ
- TierProgressFrame - เฟรมที่แสดงความก้าวหน้าที่ผู้เล่นได้ทำไปซึ่งระดับปัจจุบันที่พวกเขากำลังทำงานอยู่
- PurchaseFrame - เฟรมที่กระตุ้นให้ผู้เล่นซื้อบัตรผ่านพรีเมียม
- SeasonProgressFrame - เฟรมที่แสดงแถบความก้าวหน้าของผู้เล่นตลอดฤดูกาลทั้งหมด
- RewardsButtonFrame - เฟรมที่เพิ่มปุ่มที่อนุญาตให้ข้อมูลของฤดูกาลสามารถแสดงผ่าน SeasonBottomFrame.