Pakiet funkcji sezonowych Sezonowych przepustek oferuje funkcjonalność out-of-the-box do tworzenia systemów postępu ograniczonych czasowo i opartych na zadaniach, w których gracze mogą ukończyć cele zadaniowe, aby zdobyć nagrody, które są dostępne tylko w określonym przedziale czasu.Używając opcji personalizacji pakietu, możesz dostosować wszystkie sezonowe przepustki, aby dostarczyć nowe treści swojej publiczności, promować utrzymanie gracza i generować dochody.

Zdobądź pakiet
Sklep Twórców jest zakładką Toolbox, którą możesz użyć, aby znaleźć wszystkie zasoby, które są tworzone przez Roblox i społeczność Roblox do użytku w twoich projektach, w tym modele, obrazy, siatki, dźwięki, wtyczki, wideo i czcionki.Możesz użyć sklepu dla twórców, aby dodać jeden lub więcej zasobów bezpośrednio do otwartego doświadczenia, w tym pakietów funkcji!
Każdy pakiet funkcji wymaga, aby pakiet funkcji Rdzeń działał prawidłowo, a pakiet Sezonowe przepustki wymaga pakietu funkcji Misje , aby określić misje sezonowe.Gdy wszystkie trzy zasoby pakietowe znajdą się w Twoim wyposażenie, możesz ponownie ich użyć w dowolnym projekcie na platforma.
Aby otrzymać pakiety z twojego zapasu do twojego doświadczenia:
Dodaj pakiety Rdzeń , Misje i Sezonowe przepustki do swojego zapasu w Studio, klikając link Dodaj do zapasu w następującym zestawie komponentów.
W pasku narzędzi wybierz zakładkę Widok.
Kliknij Pudełko narzędzi . Okno Pudełko narzędzi wyświetla się.
W oknie Pudełko z narzędziami , kliknij zakładkę Ekwipunek . Wyświetlają się sortowania Moje modele .
Kliknij pasek Pakiet rdzenia funkcji , Pakiet funkcji misji , a następnie pasek Pakiet funkcji sezonowych .Wszystkie trzy foldery pakietowe wyświetlają się w oknie Eksploratora .
Przeciągnij foldery pakietowe do ReplicatedStorage .
Pozwól na wezwania przechowywania danych śledzić zakupy gracza za pomocą pakietów.
- Na zakładce Dom w pasku narzędzi wybierz Ustawienia gry .
- Przejdź do zakładki Bezpieczeństwo , a następnie włącz Włącz dostęp Studio do usług API .
Konfiguruj zależności misji
Aby sezony prawidłowo funkcjonowały, musisz dodać logikę, aby pakiet funkcji Sezonowe przepustki mógł śledzić postępy gracza i aktualizować jego komponenty interfejsu.Dla uproszczenia poniższy przykład używa pakietu funkcji Misje i dzwoni SeasonPasses.addProgressToSeason(), ale możesz śledzić postępy gracza tak, jak chcesz.Niezależnie od tego, czy definiujesz misje, czy nie, nadal musisz dodać pakiet funkcji Misje do swojego doświadczenia, aby kod Sezonowych przepustek działał.
Każda misja ma zestaw zadań, które muszą zostać ukończone, aby ukończyć misję, opcje konfiguracji i opcjonalne metadane wyświetlania.Aby uzyskać szczegółowy przewodnik na temat konfiguracji misji i ich zadań, zobacz Określ misje.
Dodaj XP z misji do sezonów
Ten przykład wykorzystuje pakiet funkcji Misje , aby zdefiniować misje, które gracze mogą ukończyć, aby zdobyć doświadczenie (XP) i postęp w sezonie.Aby przyznać graczom XP, gdy ukończą zdefiniowaną misję, musisz dodać logikę do skryptu serwera ReplicatedStorage.Missions.Server.Examples.MissionsExample, aby mógł on importować dane o przepustce sezonowej i nagradzać graczy zgodnie z ich postępem.
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
Dodaj ikony nagród poziomu sezonowego
Oprócz przyznawania graczom XP, gdy kończą misje, pakiet funkcji Sezonowych przepustek używa pakietu funkcji Misje do określenia unikalnych poziomów nagród w sezonie.Jeśli chcesz dodać ikonę na ekranie dla nagrody poziomu, którą gracze mogą zdobyć, jeśli mają wystarczającą ilość XP, dodaj ID zasobu w konfiguracji Missions nagrody poziomu sezonowego.
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",},},},}
Konfiguruj sezony
Po skonfigurowaniu każdej misji, którą chcesz uwzględnić w sezonie, nadszedł czas, aby skonfigurować sam sezonowy przepustka.W ReplicatedStorage.SeasonPasses.Configs.Season , istnieje przykład konfiguracji sezonu dla twojego odniesienia, a następujące przykłady kodu pochodzą z tego pliku.
Określ przepustki
Przepustki pozwalają na naładowanie graczy jednorazową opłatą Robux w celu uzyskania dostępu do misji i potencjalnych nagród sezonowych.Po utworzeniu przepustki z unikalnym ID zasobu możesz ustawić szczegóły przepustki w polu premiumTrack sezonu.Na przykład następujący przykład kodu określa przepustkę z przykładową ID zasobu 928192647 , aby reprezentować przepustkę sezonową, a następnie nadaje przepustce nazwę ścieżki "Premium Track".
premiumTrack = {pricing = {gamePassId = 928192647,},trackMetadata = {trackName = "Premium Track",},},
Konfiguruj poziomy i nagrody
Poziomy sezonowe reprezentują cele, które gracze muszą osiągnąć, aby zdobywać nagrody przez cały sezon.Aby wspiąć się na poziomy, gracze kończą misje, aby zdobyć XP, a gdy zdobędą wystarczającą ilość XP, awansują do następnego poziomu i otrzymują nagrody za poziom, który właśnie ukończyli.Poziomy mają właściwość upperBoundXP, która ustawia próg XP niezbędny do otrzymania nagród za poziom.Każdy poziom może zaoferować dwa rodzaje nagród:
- Darmowe - Nagroda, którą gracze mogą zdobyć bez zakupu przepustki sezonowej.
- Premium - Nagroda, którą gracze mogą zdobyć tylko kupując przepustkę sezonową.
Aby to pokazać, przejrzyj następujący przykład kodu dla sezonu z jednym poziomem, który wymaga 100 XP, aby zdobyć darmową nagrodę za lancę lodową i nagrodę za tarczę przeciwwybuchową premium.The icon jest tożsamością ID obrazu UI do wyświetlenia za nagrodę, a displayName wyświetla nazwę nagrody.Zauważ, że displayName wyświetla się w interfejsie użytkownika, ale rewardId jest ukryty przed graczem i jest głównie używany do celów przechowywania danych.
tiers = {[1] = {upperBoundXP = 100,freeReward = {icon = 128181721602852,displayName = "Ice Lance",rewardId = "iceLance",},premiumReward = {icon = 95882371958115,displayName = "Blast Shield",rewardId = "blastShield",},},}
Chociaż ten skrypt ma na celu ilustrację sposobu konfiguracji jednego poziomu na raz, większość sezonów obejmuje więcej niż jeden poziom.Kiedy określasz wiele poziomów i nagród na sezon, upewnij się, że każdy rewardId jest liczbowy i w kolejności rosnącej, aby twoje poziomy wyświetlały się w kolejności, w jakiej je określasz na liście poziomów.
Określ szczegóły sezonu
Teraz, gdy masz sezonową przepustkę z poziomami i nagrodami, nadszedł czas, aby określić szczegóły sezonu:
- title - Nazwa twojego sezonu.
- description - Opis twojego sezonu.
- startUtc - Początek sezonu w skoordynowanym czasie uniwersalnym.
- endUtc - Koniec sezonu w skoordynowanym czasie uniwersalnym.
- seasonId - Pozwala ci śledzić XP, które gracz zdobywa w ciągu danego sezonu.
Pakiet używa startUtc i endUtc aby wyświetlić odliczanie sezonu.
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",
Zintegruj logikę serwera
Spójrz na ReplicatedStorage.SeasonPasses.Server.Examples.SeasonPassesExample, który pokazuje, jak twój serwer będzie interakcjonował z Pakietem funkcji sezonowych .Kod poniżej pochodzi z tego skryptu.
Głównie musisz stworzyć funkcję obsługującą do przyznawania otrzymanych nagród twoim graczom.Na przykład następujący przykład kodu tworzy funkcję rewardClaimedHandlerFunction(), która śledzi, kiedy gracze przechodzą do następnego poziomu, a następnie nagradza ich albo darmową nagrodą, albo obiema darmowymi i premium nagrodami, jeśli kupili przepustkasezonową.
Dla twoich celów, zastąp wezwanie task.wait() logiką, która pozwala graczom otrzymać nagrody, które otrzymali w sezonie.Funkcja ta musi zwrócić boolean: prawdę, jeśli serwer przyznał nagrodę, fałsz, jeśli nie.
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
Konfiguruj stałe
Stałe dla pakietu funkcji Rdzenia żyją w dwóch miejscach:
- Wspólne konstytucje żyją w ReplicatedStorage.FeaturePackagesCore.Configs.SharedConstants .
- Konstytucje pakietowe, w tym przypadku pakiet funkcji Sezonowe przepustki , żyją w ReplicatedStorage.SeasonPasses.Configs.Constants .Główne rzeczy, które możesz dostosować, aby spełnić wymagania dotyczące projektu swojego doświadczenia:
- ID dźwięku
- Czas trwania efektu zakupu i kolory cząstek Dodatkowo możesz znaleźć ciągi do tłumaczenia rozdzielone w jednym miejscu: ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings .
Dostosuj komponenty interfejsu
Poprzez modyfikowanie obiektów pakietu, takich jak kolory, czcionka i przejrzystość, możesz dostosować wizualną prezentację powiadomień o przepustkach sezonowych.Należy jednak pamiętać, że jeśli przeniesiesz którykolwiek z obiektów wokół hierarchicznie, kod nie będzie w stanie ich znaleźć, a będziesz musiał dokonać zmian w swoim kodzie.
Sezon składa się z następujących wysokopoziomowych komponentów, które są dodawane programowo do komponentów interfejsu Pakietu funkcji misji :
- SeasonBottomFrame – Ramka, która zawiera informacje o każdej ścieżce, ramka przewijania nagród za poziomy oraz dane poziomów.
- SeasonDescriptionFrame - Ramka w nagłówku, która wyświetla tytuł sezonu, opis i odliczanie czasu.
- TierRewardFrame - Ramka, która wyświetla określoną nagrodę dla poziomu.
- TierProgressFrame - Ramka, która wyświetla postęp, jaki gracz osiągnął w kierunku obecnego poziomu, nad którym pracuje.
- PurchaseFrame - Ramka, która prosi gracza o zakup przepustki premium.
- SeasonProgressFrame - Ramka, która wyświetla pasek postępu gracza przez cały sezon.
- RewardsButtonFrame - Ramka, która dodaje przycisk, który pozwala wyświetlać informacje o sezonie za pomocą SeasonBottomFrame.