Das Engagement-Belohnungs-Feature-Paket ist ein anpassbares Framework für den Angebot von In-Game-Belohnungen für bestimmte Spieleraktivitäten, einschließlich täglicher Login-Streaks und Spielzeit.Zusätzlich zur Client- und Serverechnung enthält das Paket eine Standard-Benutzeroberfläche zum Anzeigen des Belohnungsfortschritts, des Statusund des Beanspruchens von Belohnungen.

Hole das Paket
Fügen Sie die Kern - und Engagement-Belohnungen -Pakete Ihrem Inventar innerhalb von Studio hinzu, indem Sie auf die Zum Inventar hinzufügen -Links hier klicken:
Wählen Sie im Studio die Ansicht -Registerkarte.
Klicken Sie auf Werkzeugkiste .
In dem Werkzeugkasten Fenster klicken Sie auf die Inventar Registerkarte.
Klicken Sie auf die Feature-Paket-Kern -Kachel, dann auf die Engagement-Belohnungs-Feature-Paket -Kachel.Beide Paketordner werden im Explorer -Fenster angezeigt.
Ziehe die Ordner in ReplicatedStorage .
Paket initialisieren
Der Versuch, die Pakete auf ReplicatedStorage zu verschieben und dein Erlebnis zu testen, führt das EngagementRewardsExample -Skript in ReplicatedStorage.EngagementRewards.Server.Examples aus.
Dieses Skript zeigt, wie das Paket für den Einsatz in deiner Erlebnisinitialisiert wird, was mehrere Modulskripte erfordert und die Definition einer rewardClaimedHandlerFunction()-Funktion, die letztendlich die Belohnung(en) an den Spieler:ingibt.
Diese Funktion muss einen booleschen Rückgabe.Im Skript, das. PL: die Skriptskannst du sehen, dass es dem Spieler:inkeine Belohnungen gibt; es druckt nur den Spieler:in, die Belohnung und die Menge aus, die beansprucht wird.
EngagementRewardsBeispiel
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)
-- Ersetze diese Handlerfunktion durch deine eigene beanspruchte Belohnungs-Handlerfunktion
-- Diese Funktion sollte das beanspruchte Belohnungsereignis für die in rewardId übermittelte Belohnung behandeln
local function rewardClaimedHandlerFunction(player: Player, rewardId: RewardId, quantity: number): (boolean, string?)
print(`Reward {rewardId} claimed by {player} with quantity {quantity}`)
return true
end
-- more
Du kannst dieses Skript entweder direkt modifizieren oder es auf ServerScriptService verschieben, wenn es dein bevorzugter Ort für Codesist.As-is, das Skript ist nur für Testzwecke nützlich.
Die Belohnung dem Spieler zu geben, variiert je nach Erfahrung.In einigen Erlebnissen kannst du einen Erlebnisschub verleihen oder einfach die Goldmenge des Spieler:inerhöhen.In anderen Erlebnissen könnte es ein benutzerdefiniertes Inventarsystem geben, während andere ein Element in Spielerrucksäcke legen könnten.In allen Fällen musst du jedoch rewardClaimedHandlerFunction() durch deine eigene Funktion ersetzen.
Belohnungen und Kriterien hinzufügen
Die meisten Belohnungsanpassungen finden innerhalb von ReplicatedStorage.EngagementRewards.Configs.EngagementRewardsConfig statt. Dieses Modulskript definiert die Belohnung und die Anforderungen für ihre Freischaltung.
Du kannst die vollständigen Typdeklarationen (oder neue hinzufügen) in ReplicatedStorage.EngagementRewards.Configs.Types sehen, aber du musst wahrscheinlich nur mit EngagementRewardsConfig arbeiten.Das Funktionspaket enthält zwei Belohnungstypen: Time und 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,},-- mehr[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
Beide Belohnungstypen erfordern ein Symbol, das eine Roblox-Asset-ID für ein Bild ist ( nicht ein Decal).Du möchtest wahrscheinlich auch einen Anzeigennamen für die Verwendung in der UI.Geben Sie quantity für Werte andere als 1 an.Du kannst auch optionell eine Belohnung als wertvoll designieren ( effect = Types.RewardEffect.Valuable ), um ihr einen anderen Hintergrundrahmen in der UI zu geben.
Variable | Typ | Beschreibung | Standard | Erforderlich :--- | :--- | :--- | :--- | :--- Symbol | Zahl | Eine Roblox-Symbol-ID für die UI-Symbol-ID.| N/A | Ja displayName | String | Ein Name für die Belohnungen für die Verwendung in der UI.| Das RewardId | Keine Menge | Zahl | Die Anzahl der Artikel, die belohnt werden.| 1 | Kein Effekt | RewardEffect | Der visuelle Effekt, der in der UI verwendet wird.Siehe Anpassung der UI.| Types.RewardEffect.Default | No
Zeitbelohnungen
Time Belohnungen werden nach einer bestimmten Anzahl von Sekunden im Spiel freigeschaltet.Passen Sie diese Zahlen an, um Ihren Bedürfnissen gerecht zu werden.Du kannst kleine Zahlen für einfache Tests verwenden, und im veröffentlichten Erlebnis eine Belohnung nach 10 Minuten, eine andere nach 30 Minuten, eine andere nach einer Stunde vergeben und so weiter.
Multiplikation macht Zahlen in Sekunden für Menschen einfacher zu bearbeiten, also für zwei Stunden könnten Sie es vorziehen, 2 * 60 * 60 anstatt 7200 anzugeben.
Variable | Typ | Beschreibung | Standard | Erforderlich: --- | :--- | :--- | :--- | :--- erforderlicheSekundenImSpiel | Zahl | Die Anzahl der Sekunden (eine positive ganzzahlig) die der Spieler im Spiel verbringen muss, um die Belohnung zu verdienen.| N/A | Ja
Tägliche Belohnungen
Daily Belohnungen werden nach einer bestimmten Anzahl von täglichen Logins in Folge freigeschaltet.Zum Beispiel könntest du dem ersten Tag, an dem ein Spieler einloggt, drei Tränke oder einen Zimtkuchen geben.Anschließende Tage könnten Sie wertvollere Verbrauchsgegenstände belohnen, gefolgt von einem dauerhaften Artikel, wie einer neuen Angelrute, nach sieben aufeinanderfolgenden Tagen.
Variable | Typ | Beschreibung | Standard | Erforderlich: :--- | :--- | :--- | :--- | :--- erforderlicheTageBesuchtStreak | Zahl | Die Anzahl der aufeinanderfolgenden Tage, an denen der Spieler sich mit dem Erlebnis verbinden muss, um die Belohnung zu verdienen.| N/A | Ja
Zwei zusätzliche tägliche Belohnungskonfigurationsoptionen sind im DailyRewardTabConfig verfügbar.
[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
Variable | Typ | Beschreibung | Standard | Erforderlich: --- | :--- | :--- | :--- | :--- istHiddenOnJoin | Boolean | Wenn wahr, erscheinen Belohnungen beim Beitritt zur Erlebnisnicht automatisch.Wenn falsch, erscheinen Belohnungen automatisch, wenn du dem Spiel beitrittst, wenn der Spieler eine neue tägliche Belohnung einfordern kann.| False | No isAlignedToStreakResetTime | Boolean | Wenn wahr, können Belohnungen für Tag 2 24 Stunden nach der ursprünglichen Tag 1 beanspruchbaren Zeit beansprucht werden.Wenn falsch, können Belohnungen des Tages 2 am ersten Mitternacht nach der Tageszeit von Tag 1 beansprucht werden.Wenn ein Spieler um 23:00 Uhr (11:00 PM) eincheckt und seine Tagesbelohnung beansprucht, bedeutet das, dass er die Tagesbelohnung des nächsten Tages erst um 23:00 Uhr des nächsten Tages beanspruchen kann.Falsch bedeutet, dass sie die Belohnung des Tages 2 um 12:00 Uhr (00:00) ein Stunde später beanspruchen können.Belohnungen für Tag 3 und darüber hinaus sind immer 24 Stunden nach der am Vortag beanspruchten Zeit verfügbar.| False | Nein
Passen Sie die UI an
Im vorherigen Abschnitt könnten Sie die tabDisplayName, tabOrder und description Felder bemerkt haben, die eine grundlegende Anpassung der Benutzeroberfläche ermöglichen.Du kannst auch einige UI-Schnüre in ReplicatedStorage.FeaturePackagesCore.Configs.TranslationStrings finden.

Um einen neuen Belohnungs-Hintergrund mit der Variable effect zu spezifizieren, füge einen Rahmen zu ReplicatedStorage.EngagementRewards.Objects.RewardItemFrames hinzu.Dann füge den Namen des Rahmens in die Types.RewardEffect Tabelle in ReplicatedStorage.EngagementRewards.Configs.Types hinzu.
Für eine umfassendere Anpassung modifizieren Sie die Objekte in ReplicatedStorage.EngagementRewards.Objects.Zum Beispiel könnten Sie das BackgroundColor3 des RewardsHudButton.Background Rahmens oder das Color des FooterContentFrame.ClaimableUIGradient Rahmens modifizieren.
Der Einstiegsplatz für die Benutzeroberfläche ist das Skript, das. PL: die Skripts, das die notwendigen Objekte erhält und die UI initialisiert.Wenn du oberste Objekte hinzufügst oder umbenenn (im Gegensatz zu nur Kindern hinzufügen oder Eigenschaften modifizieren), musst du wahrscheinlich den Code in diesem Ordner aktualisieren, um sie zu handhaben.