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

รับแพคเกจ
ร้านค้าผู้สร้าง คือแท็บของกล่องเครื่องมือที่คุณสามารถใช้เพื่อค้นหาทรัพยากรทั้งหมดที่สร้างโดย Roblox และชุมชน Roblox เพื่อใช้ภายในโครงการของคุณ รวมถึงโมเดล ภาพ เมช เสียง ปลั๊กอิน วิดีโอ และแบบอักษร คุณสามารถใช้ร้านค้าผู้สร้างเพื่อเพิ่มสินทรัพย์หนึ่งหรือมากกว่าโดยตรงในประสบการณ์ที่เปิดกว้างรวมถึงแพคเกจคุณสมบัติ!
แต่ละแพคเกจคุณสมบัติต้องใช้แพคเกจคุณสมบัติ หลัก เพื่อให้ทำงานได้อย่างถูกต้อง และแพคเกจคุณสมบัติ ซีซั่นพาส ต้องใช้แพคเกจคุณสมบัติ ภารกิจ เพื่อกำหนดภารกิจในซีซั่นเมื่อทรัพยากรแพคเกจทั้งสามอยู่ในสินค้าคงคลังของคุณแล้ว คลังไอเท็มบนแพลตฟอร์มได้
เพื่อรับแพคเกจจากคลังสินค้าของคุณเข้าสู่ประสบการณ์ของคุณ:
เพิ่ม แกนหลัก , ภารกิจ และ บัตรผ่านฤดูกาล แพคเกจให้อยู่ในคลังสินค้าภายใน Studio โดยคลิกที่ลิงก์ เพิ่มในคลังสินค้า ในชุดส่วนประกอบต่อไปนี้
ในแถบเครื่องมือ เลือกแท็บ ดู
คลิก กล่องเครื่องมือ . หน้าต่าง กล่องเครื่องมือ จะปรากฏ
ในหน้าต่าง กล่องเครื่องมือ คลิกที่แท็บ สินค้าคงคลัง แสดงรายการ โมเดลของฉัน
คลิกที่แท็บ แพคเกจคุณสมบัติหลัก แท็บ แพคเกจคุณสมบัติภารกิจ และแท็บ แพคเกจคุณสมบัติซีซั่นผ่าน ทั้งสามโฟลเดอร์แพคเกจจะแสดงในหน้าต่าง สํารวจ
ลากไฟล์โฟลเดอร์แพคเกจเข้าไปใน ReplicatedStorage
อนุญาตให้เรียกการเก็บข้อมูลเพื่อติดตามการซื้อผู้เล่นด้วยแพคเกจ
- ในแท็บ บ้าน ของแถบเครื่องมือ เลือก การตั้งค่าเกม 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 ได้