แพคเกจผ่านฤดูกาล

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

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

รับแพคเกจ

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

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

เพื่อรับแพคเกจจากคลังสินค้าของคุณเข้าสู่ประสบการณ์ของคุณ:

  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

  7. อนุญาตให้เรียกการเก็บข้อมูลเพื่อติดตามการซื้อผู้เล่นด้วยแพคเกจ

    1. ในแท็บ บ้าน ของแถบเครื่องมือ เลือก การตั้งค่าเกม 2. ไปที่แท็บ ความปลอดภัย จากนั้นเปิดใช้งาน เปิดใช้งานการเข้าถึงสตูดิโอไปยังบริการ API

กำหนดความขึ้นอยู่ของภารกิจ

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

ภารกิจแต่ละภารกิจมีชุดของภารกิจที่ต้องเสร็จสิ้นเพื่อสําเร็จภารกิจตัวเลือกการกำหนดค่า และข้อมูลดิสเพลย์ที่ไม่จําเป็นสำหรับคู่มืออย่างละเอียดเกี่ยวกับวิธีการกำหนดภารกิจและงานของพวกเขาดูที่ กำหนดภารกิจ

เพิ่ม 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} completed mission {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 เพียงพอให้เพิ่ม assetID ใน config Missions สำหรับรางวัลระดับแต่ละซีซั่น


Tier3Mission = {
categoryId = "General",
metadata = {
displayName = "Tier 3 Mission",
description = "Jump 10 times",
visibleAfterComplete = true,
visibleBeforeUnlocked = true,
rewards = {
{
icon = 16826775737,
displayName = "Item",
},
{
icon = 106912146245070,
displayName = "Season XP",
},
},
},
}

กำหนดฤดูกาล

หลังจากที่คุณได้ตั้งค่าทุกภารกิจที่คุณต้องการรวมอยู่ในซีซั่นแล้ว ถึงเวลาที่ต้องกำหนดซีซั่นพาสเองใน ReplicatedStorage.SeasonPasses.Configs.Season มีตัวอย่างการกำหนดค่าฤดูกาลสำหรับการอ้างอิงและตัวอย่างโค้ดต่อไปนี้มาจากไฟล์นั้น

กำหนดผ่าน

ผ่าน ช่วยให้คุณสามารถเรียกเก็บค่าธรรมเนียม Robux ครั้งเดียวเพื่อเข้าถึงภารกิจและรางวัลที่อาจเกิดขึ้นของบัตรผ่านฤดูกาลหลังจากที่คุณสร้างบัตรผ่านด้วย ID ทรัพย์สินที่ไม่ซ้ำกันคุณสามารถตั้งรายละเอียดของบัตรผ่านในฟิลด์ premiumTrack ของซีซั่นของคุณได้ตัวอย่างโค้ดต่อไปนี้จะกำหนดรหัสผ่านด้วยตัวอย่าง assetID ของ 928192647 เพื่อแทนที่บัตรผ่านฤดูกาลจากนั้นจะให้บัตรผ่านฤดูกาลมีชื่อสนามแข่งว่า "Premium Track"


premiumTrack = {
pricing = {
gamePassId = 928192647,
},
trackMetadata = {
trackName = "Premium Track",
},
},

กำหนดระดับและรางวัล

ระดับซีซั่นเป็นเหตุการณ์สำคัญที่ผู้เล่นต้องปฏิบัติตามเพื่อรับรางวัลตลอดซีซั่นเพื่อปีนระดับ ผู้เล่นทำภารกิจให้สำเร็จเพื่อรับ XP และเมื่อพวกเขาได้รับ XP เพียงพอแล้ว พวกเขาจะเรียนระดับถัดไปและได้รับรางวัลสำหรับระดับที่พวกเขาเพิ่งสำเร็จระดับมีคุณสมบัติ upperBoundXP ที่กำหนดเกณฑ์ของ XP ที่จำเป็นในการรับรางวัลสําหรับระดับแต่ละระดับสามารถเสนอรางวัลสองประเภท:

  • ฟรี - รางวัลที่ผู้เล่นสามารถได้รับโดยไม่ต้องซื้อบัตรผ่านฤดูกาล
  • พรีเมียม - รางวัลที่ผู้เล่นสามารถรับได้โดยการซื้อบัตรผ่านฤดูกาล

เพื่อสาธิต ตรวจสอบตัวอย่างโค้ดต่อไปนี้สําหรับซีซั่นที่มีระดับเดียวที่ต้องใช้ 100 XP เพื่อรับรางวัลไอซ์แลนซ์ฟรีและรางวัลโล่การโจมตีพรีเมียมThe icon คือ assetID ของภาพ UI ที่จะแสดงเพื่อรับรางวัล, และ displayName แสดงชื่อสำหรับรางวัลโปรดทราบว่า แสดงใน UI แต่ ถูกซ่อนจากผู้เล่นและใช้สําหรับวัตถุประสงค์ในการจัดเก็บข้อมูล ส่วนใหญ่


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 = "Season 1",
description = "Into Space City",
seasonId = "season1",

บูรณาการโลจิสติกของเซิร์ฟเวอร์

ดูที่ ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample ซึ่งแสดงวิธีที่เซิร์ฟเวอร์ของคุณจะโต้ตอบกับ แพคเกจคุณสมบัติบัตรผ่านซีซั่น ส่วนตัดที่อยู่ด้านล่างเป็นจากสคริปต์นั้น

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

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


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

กำหนดคงที่

คงที่สำหรับแพคเกจคุณสมบัติ แกนกลาง อยู่ในสองจุด:

  • คงที่ร่วมอยู่ใน ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants
  • คงที่เฉพาะแพคเกจในกรณีนี้คือแพคเกจคุณสมบัติ บัตรผ่านฤดูกาล อาศัยอยู่ใน ReplicatedStorage.SeasonPasses.Configs.Constantsสิ่งสำคัญที่คุณอาจต้องปรับเพื่อให้เป็นไปตามข้อกำหนดด้านการออกแบบของประสบการณ์ของคุณ:
  • ID สื่อเสียง
  • ระยะเวลาเอฟเฟกต์การซื้อและสีของอนุภาค นอกจากนี้คุณยังสามารถค้นหาสตริงสำหรับการแปลที่แยกออกเป็นสถานที่เดียว: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings

ปรับแต่งส่วนประกอบ UI

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

ซีซั่นประกอบด้วยส่วนประกอบระดับสูงต่อไปนี้ที่เพิ่มเข้าไปในส่วนประกอบ UI ของ แพคเกจคุณสมบัติภารกิจ โดยเป็นส่วนหนึ่งของโปรแกรม:

  • SeasonBottomFrame – กรอบที่มีข้อมูลเกี่ยวกับแต่ละสนาม, กรอบการเลื่อนของรางวัลสําหรับระดับ และข้อมูลระดับ
  • SeasonDescriptionFrame - กรอบในหัวข้อที่แสดงชื่อฤดูกาล คำอธิบาย และการนับถอยหลัง
  • TierRewardFrame - กรอบที่แสดงรางวัลเฉพาะสำหรับระดับ
  • TierProgressFrame - กรอบที่แสดงความคืบหน้าที่ผู้เล่นได้ทำไปสู่ระดับปัจจุบันที่พวกเขากำลังทำงานอยู่
  • PurchaseFrame - กรอบที่เรียกให้ผู้เล่นซื้อบัตรผ่านพรีเมียม
  • SeasonProgressFrame - กรอบที่แสดงเส้นความคืบหน้าของผู้เล่นตลอดทั้งซีซั่น
  • RewardsButtonFrame - กรอบที่เพิ่มปุ่มที่ช่วยให้สามารถแสดงข้อมูลของซีซั่นผ่าน SeasonBottomFrame ได้