logo
de
Deutsch

Mail-Framework-Mod

Ersteller: Digus
Aktualisiert:28/03/2025 14:16:59
49KB
mcafee
Authentifizierung
Vertraut von 200,000,000+ Nutzern

Vorausgesetzte Mods

wird automatisch installiert, wenn Sie Mail-Framework-Mod verwenden

Über diesen Mod

Framework zur Verwendung des In-Game-Mailboxes. Konsolenbefehle zur Anpassung der E-Mail. Code und Content Pack Schnittstellen.
Objektiv:
Vereinfachen Sie das Senden von E-Mails an den Spieler und geben Sie ihm mehr Kontrolle darüber, wann und was empfangen werden soll.
Außerdem stehen weitere Optionen zur Verfügung, die durch das bloße Bearbeiten der Datendateien nicht möglich sind, wie etwa das beliebige Ändern der Textfarbe und des Hintergrunds des Briefes.

Installation:

Änderungsprotokoll:

1.20.0
  • Fügt dem Spiel ein neues benutzerdefiniertes Asset hinzu. (DIGUS.MailFrameworkMod/MailData) Das bedeutet, dass MFM-Briefe jetzt mit Content Patcher geladen werden können und alle seine Funktionen wie Token nutzen. Es unterstützt dieselben Eigenschaften.
  • Content Pack-Briefe werden auch in das neue benutzerdefinierte Asset geladen und können daher mit Content Patcher bearbeitet werden.
  • Inhaltspakete werden nun beim Spielstart in einen Cache geladen, anstatt bei jedem Laden des Spielstands neu geladen zu werden. Sie können das Neuladen von Inhaltspaketen mit dem Konsolenbefehl erzwingen.
  • Text- und Titeleigenschaften unterstützen jetzt tokenisierbare Zeichenfolgen.
  • Textur-Assets können jetzt ein Spiel-Asset sein, nicht nur ein Asset im Mod-Ordner.
  • Neue GameStateQuery-Eigenschaft als Bedingung für die Zustellung eines Briefes.
1.19.0
  • Neue Eigenschaft, um eine E-Mail gültig zu halten, wenn alle Bedingungen für einen Tag erfüllt sind, die E-Mail an diesem Tag jedoch nicht gelesen wurde.
  • Neue Funktion zur Handhabung zufällig ausgewählter Anhänge
  • Neue Eigenschaft zum Festlegen, wie viele Elemente aus der Anhangsliste für die Zustellung ausgewählt werden sollen.
  • Neue Eigenschaft zum Festlegen einer „RandomGroup“ für einen Anhang, sodass aus dieser Gruppe und nicht aus der gesamten Liste ausgewählt wird.
  • Neue Eigenschaft zum Festlegen eines „Gewichts“ für einen bestimmten Anhang, wenn dieser zufällig ausgewählt wird.
  • Neue Eigenschaft zum Festlegen, wie viele Elemente aus einer bestimmten Gruppe ausgewählt werden sollen, anstatt den Standardwert zu verwenden.
  • Neue Eigenschaft, um anzugeben, ob ein Element aus einer bestimmten Gruppe mehr als einmal ausgewählt werden kann.
  • Neuer Satz von Eigenschaften zum Festlegen einer MailReceived-Anforderung für Anhänge und Antworten
  • Neue Eigenschaft zum Festlegen, dass eine empfangene E-Mail entfernt wird, wenn ein Brief gelesen oder eine Antwortoption aktiviert wird.
  • Neue Eigenschaft zum Festlegen der Kosten für eine bestimmte Antwortoption.
  • Neuer ItemType „Keine“. Dieser wird grundsätzlich verwendet, wenn Sie eine zufällige Chance haben möchten, dass ein Artikel nicht geliefert wird, ohne dass Fehler/Warnungen im Protokoll ausgelöst werden.
1.18.0
  • Neue ID-Eigenschaft ersetzt Index und Name für CollectionConditions. Sie kann die Anzahl mehrerer Elemente aggregieren und ihren Wert summieren, um ihn mit der Menge zu vergleichen.
  • Neue ReplyConfig-Eigenschaft zum Hinzufügen eines Antwortverhaltens. Sie können dem Spieler nach dem Lesen einer E-Mail eine Option anzeigen, die je nach gewählter Option einen oder mehrere MailReceived-Texte hinzufügt. Basierend auf dieser Auswahl kann zusätzliche Mod-Logik implementiert werden.
  • Korrektur für Buchstaben mit Rezept, die die Eigenschaft „CustomTextColorName“ nicht unterstützen.
  • Beheben Sie die Nullreferenzausnahme, wenn ein Element mit Nullnamen im Spiel geladen wurde.
1.17.1
  • Content-Pack-E-Mails mit der Eigenschaft „Rezept“ dürfen keine Anhänge enthalten, um erneut zugestellt zu werden, wenn das Rezept nicht gelernt wurde. (Die Eigenschaft „Rezept“ wird ignoriert, wenn Anhänge vorhanden sind.)
  • Korrigieren Sie Kochrezepte mit der gleichen Logik, die zuvor für Handwerksrezepte galt.
1.17.0
  • Neue Eigenschaft zum Festlegen der Qualität des Anhangs
  • Content-Pack-Mails mit Rezept sollten erneut zugestellt werden, wenn das Rezept nicht erlernt wird.
  • Beheben Sie Warnungen zu Slingshot, wenn die qualifizierte Artikel-ID verwendet wird.
  • Beheben Sie, dass Rezepte für Handwerksgegenstände geliefert wurden, auch wenn das Rezept bereits erlernt wurde.
  • Aus Legacy-Gründen wird, wenn die Rezept-ID nicht in den erlernten Rezepten gefunden wird, nach einem Rezept gesucht, das ein Element mit dem Namen der Rezept-ID erstellt.
1.16.1
  • Korrektur des übersetzten Rezeptnamens.
1.16.0
  • Mod aktualisieren, um mit Stardew Valley 1.6 kompatibel zu sein
  • Neuer Befehl zum Neuladen von Inhaltspaketen
  • MailDao-Name in MailRepository geändert. (Betrifft nur SMAPI-Mods, die es verwenden)
  • Neuer Artikeltyp „QualifiedItemId“ für Anhänge. Sollte für jeden Artikeltyp im Spiel funktionieren, wenn Sie die richtige Qualifikation verwenden.
  • Neue Immobilie für besondere Terminkonditionen. (Hochzeit und Geburt)
  • Neue Eigenschaft für CustomTextColor, alte veraltet.
  • Neue HasMods-Eigenschaft
  • Neue RequireAllMods-Eigenschaft
  • Ereignis-IDs sind jetzt Zeichenfolgen. (Zahlen sollten weiterhin funktionieren)
  • Veraltete Logik SV 1.6 aus MFM entfernt.
  • Problem aus Alpha behoben, bei dem sich Briefe auf der E-Mail-Sammlungsseite nicht öffnen ließen.
Spoiler:
Zeigen
1.15.0
  • Neue API-Schnittstelle für SMAPI-Mods.
  • API-Methode zum Laden des Inhaltspaketordners aus Ihrem SMAPI-Mod.
  • API-Methode zum Laden eines Briefes.
  • API-Methode zum Abrufen von Briefdaten.
  • API-Methode zum Abrufen der E-Mail-Datenzeichenfolge eines Briefes.
  • Beheben Sie, dass das Postfach nicht ordnungsgemäß funktioniert, wenn beim Schließen des Briefs ein Fehler aufgetreten ist.
  • Protokollieren Sie diese Fehler besser.
1.14.0
  • Weitere Änderungen zur Kompatibilität mit SMAPI 4
  • Neues Attribut in der Buchstabenklasse zum Festlegen des ITranslationHelper.
  • Am Inhaltspaket muss nichts geändert werden, aber diese Änderung sollte einige seltene i18n-Probleme vermeiden.
  • Mods, die MFM über Code verwenden, können ihre Implementierung aktualisieren.
1.13.0
  • Machen Sie den Mod mit SMAPI 4 kompatibel.
  • Neue Eigenschaft für die tiefste Minenebene.
  • Neue Immobilie für aktuelles Geld.
  • Neues Eigentum für den gesamten verdienten Betrag.
  • Neuer Konsolenbefehl zum Erzwingen einer Postfachaktualisierung, um Moddern beim Debuggen zu helfen.
  • Das Menü „Briefsammlung“ zeigt jetzt auch eine benutzerdefinierte Schaltfläche zum Schließen an.
1.12.2
  • Machen Sie den Mod mit 1.5.5 kompatibel, ohne SMAPI zur Konvertierung zu zwingen.
  • Sollte einige Probleme mit Anhängen beheben, die unter Unix OS nicht funktionieren.
  • Neue Eigenschaft für das Haus-Upgrade-Level.
1.12.1
  • Fehler behoben, wenn das Dienstprogramm „Expanded Preconditions“ nicht geladen wurde.
1.12.0
  • Neue Eigenschaften zur Unterstützung der Nutzung vonErweiterte Voraussetzungen
  • Neue Eigenschaft, die es ermöglicht, neben der Buchstaben-ID auch Text zur MailReceived-Liste des Spielers hinzuzufügen.
1.11.0
  • Unterstützung für DGA (Dynamic Game Assets) als Anhänge.
1.10.2
  • Korrektur der Namen von Kochrezepten in Englisch, die als Null angezeigt werden, wenn sie von JSON Assets hinzugefügt werden.
1.10.1
  • Behebung eines Problems beim automatischen Öffnen von Briefen ohne Text, das den Mod unterbricht, wenn i18n-Dateien vorhanden sind.
  • Korrektur des Problems, dass der Brief aus dem Inhaltspaket nach einer Warnung bezüglich der Sammelbedingung nicht geladen wird.
  • Fügt einen neuen Sammlungsanforderungstyp für das Herstellen von Rezepten hinzu.
1.10.0
  • Alle Vanilla-Tools werden jetzt unterstützt.
  • Unterstützung für Vanilla-Schleudern als Waffen. Wenn Sie den Index oder den Namen einer Schleuder verwenden, wird diese ordnungsgemäß als solche erstellt.
  • Neue Eigenschaft „Automatisch öffnen“, wenn Sie MFM-Bedingungen verwenden möchten, um eine Brief-ID als gelesen zu speichern, ohne einen tatsächlichen Brief zu schreiben.
1.9.2
  • Optimierung für das Laden von Assets aus Inhaltspaketen.
  • Korrektur des Rückrufs von Buchstaben, die nicht aufgerufen wurden, wenn ein Menü geöffnet wurde, um einen Artikel zum Inventar hinzuzufügen.
1.9.1
  • Beheben Sie einen Fehler, bei dem der MFM-Brief nicht geöffnet und aus dem Postfach für den aktuellen Tag entfernt wurde, wenn Sie beim Klicken auf das Postfach ein Objekt in der Hand hielten.
1.9.0
  • Neue Eigenschaft für mit SMAPI erstellte Briefe, um dem Brief dynamisch Elemente hinzuzufügen.
  • Neue Methode zum Entfernen von Briefen aus dem Briefkasten.
1.8.1
  • Fix zur Vermeidung von Konflikt-E-Mails im lokalen Coop.
  • Behebung seltener Situationen, in denen der Mod nicht mehr funktionierte, wenn ein Buchstabenmenü vom Spiel nicht ordnungsgemäß geschlossen wurde.
1.8.0
  • Unterstützung für Möbel, Waffen und Stiefel als Zubehör.
  • Neue Eigenschaft zum Festlegen der Upgrade-Stufe angeschlossener Tools.
1.7.0
  • Unterstützung für Ringe als Anhänge.
  • Neue Bedingungen für Rezepte.
  • Neue Eigenschaft zur Hintergrundanpassung mit Inhaltspaketen.
  • Unterstützung für die Anpassung der Schaltfläche „Schließen“ mit Inhaltspaket und Code.
1.6.0
  • Unterstützung für i18n in Inhaltspaketen.
  • Neue Bedingungen für die Eigenschaften von Gebäuden auf dem Bauernhof.
  • Neue Bedingungseigenschaften für empfangene E-Mails. (Dies wird für Quest-Flags verwendet.)
  • Neue Bedingungseigenschaften für Ereignisse.
  • Neue Bedingungsliste für Sammlungsmenüelemente.
  • Neue Bedingungsliste für Spielstatistiken.
  • Neue Eigenschaft für den Freundschaftsstatus für die Bedingungsliste für NPC-Freundschaft.
  • Neue Zufallsfunktionalität für den Fall, dass Gruppen-IDs kollidieren.
1.5.1
  • Korrektur für Buchstaben ohne Gruppen-IDs, die gruppiert werden.
1.5.0
  • Buchstaben werden jetzt im Sammlungsmenü angezeigt, wenn ein Titel definiert ist. Benutzerdefinierte Texturen und Farben werden ebenfalls im Sammlungsmenü angezeigt.
  • Briefe können jetzt eine Gruppen-ID haben. Briefe mit derselben Gruppen-ID werden nie am selben Tag zugestellt.
  • Neue Bedingung für Inhaltspakete: „RandomChance“.
  • BigObject heißt jetzt BigCraftable, wie im Spielcode.
  • Korrektur von Tippfehlern in der Vorlage.
1.4.1
  • Fügt Unterstützung für Stardew Valley 1.4.0 hinzu
  • Fügt die Titeleigenschaft für Briefe hinzu, die im Sammlungsmenü angezeigt werden sollen. Noch nicht vollständig implementiert, aber Modder können damit beginnen, sie festzulegen.
1.4.0
  • Fügt eine Inhaltspaketunterstützung für Modder hinzu, um benutzerdefinierte Briefe hinzuzufügen, mit Konfigurationen für alle Funktionen, die dieses Framework bietet, und mit den meist gebräuchlichen Lieferbedingungen.
  • Beheben Sie, dass Controller nicht funktionieren, um angehängte Elemente abzurufen.
  • Korrektur zur korrekten Anzeige von Anhängen, wenn an die E-Mail mehr als ein Element angehängt ist.
  • Fix, damit der Brief nicht geschlossen wird, wenn Ihr Inventar voll ist und ein Menü zur Verwaltung geöffnet wird.
  • Behebung, dass der E-Mail kein Stapel von Elementen hinzugefügt wird, selbst wenn dies konfiguriert ist.
  • Fügt Unterstützung für SMAPI 3 hinzu
1.3.4
  • Fügt Unterstützung für Stardew Valley 1.3.36 hinzu
1.3.3
  • Fügt Unterstützung für SMAPI 3 hinzu
1.3.2
  • Fügt Unterstützung für Stardew Valley 1.3.32 hinzu
1.3.1
  • Fügt Befehle zum Entfernen und Hinzufügen zur Liste der vom Spieler empfangenen E-Mails hinzu.
1.3.0-beta.6
  • Fügt Unterstützung für die Herstellung von Rezepten hinzu
  • Fügt Unterstützung für benutzerdefinierten Hintergrund hinzu
  • Fügt Unterstützung für benutzerdefinierte Textfarben hinzu
  • Neue Möglichkeit zum Öffnen von benutzerdefinierten Briefen, jetzt mit Harmony
  • Konfigurationsdatei zum Aktivieren der alten Methode zum Öffnen von benutzerdefinierten Briefen.
1.2.0
  • Unterstützung für i18n-Rezepte.
  • Behebung eines Problems, bei dem der Mod nach der Rückkehr zum Titelmenü nicht richtig funktionierte.
  • Problem behoben, bei dem keine E-Mails zugestellt wurden, wenn der Zustand eines Briefs eine Ausnahme auslöste.
1.1.0
  • Behebung des Problems, dass beim Schlafen eine E-Mail mit dem Hinweis „Steuern bestanden“ empfangen wird und das Spiel beendet wird, ohne eine benutzerdefinierte E-Mail gelesen zu haben.
  • Benutzerdefinierte E-Mails können Rezepte enthalten.
  • Diese Version ist nicht mit der älteren kompatibel. Mods müssen aktualisiert werden, um diese Version verwenden zu können.
1.0.0
  • Benutzerdefinierte E-Mails hinzufügen
  • Benutzerdefinierte E-Mails können Elemente enthalten.

Damit Modder das Inhaltspaket verwenden können:
  • Im Mod-Ordner befindet sich eine Vorlage mit kommentierten Anweisungen zur Funktion der einzelnen Eigenschaften.
  • Alle Buchstabenfunktionen außer den Bedingungen und dem Rückruf sind dieselben wie beim Codieren mit dem Framework.
  • Die Bedingungen beschränken sich auf die implementierten, und der Rückruf setzt die Brief-ID immer als empfangen. Wenn Sie erweiterte Bedingungen benötigen, sollten Sie diese dennoch codieren. Oder Sie können mir höflich vorschlagen, dem Inhaltspaket eine Bedingung hinzuzufügen. Wenn es sinnvoll ist, werde ich sie möglicherweise hinzufügen.
  • Hier ist die Vorlage, wie sie in der Mod-Datei hinzugefügt wurde:
Spoiler:
Zeigen
[
    {
"Id": "MyMod.MyMailId", // Brief-ID. Es ist wichtig, dass es sich um eine eindeutige Zeichenfolge handelt, um Konflikte zu vermeiden. Außerdem sollte sie keine Leerzeichen enthalten.
"GroupId": "MyMod.MyGroupId", // Briefgruppen-ID. Briefe mit derselben Gruppen-ID werden nie am selben Tag zugestellt. Zuerst registrierte Briefe haben Vorrang, es sei denn, die Gruppen-ID endet mit ".Random". In diesem Fall wird ein zufälliger Brief ausgewählt. Der Standardwert ist null.
"Titel": "Mein Brieftitel", // Brieftitel. Wird im Sammlungsmenü angezeigt. Setzen Sie den Wert auf null oder entfernen Sie die Zeile, wenn der Brief nicht in der Sammlung erscheinen soll. Falls eine Übersetzungsdatei bereitgestellt wird, geben Sie hier einen Übersetzungsschlüssel ein. Sie können den Wert aber auch bei null belassen, um keinen Titel zu erhalten.
"Text": "Lieber @^Dies ist meine benutzerdefinierte E-Mail.", // Text des Briefes. Sie können @ für den Namen des Spielers und ^ für Zeilenumbrüche verwenden. Sie können auch die Befehle des Basisspiels verwenden, um Geld, Gegenstände und andere Dinge hinzuzufügen. Falls eine Übersetzungsdatei bereitgestellt wird, sollten Sie hier einen Übersetzungsschlüssel eingeben.
"RandomlyChooseAttachment": 2, // Wenn eine Zahl festgelegt ist, wird diese Anzahl von Elementen pro Gruppe zufällig aus der Anhangsliste ausgewählt. Der Standardwert ist null.
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // Wenn hier eine Gruppe und ein Betrag festgelegt sind, wird dieser Betrag zum Auswählen von Elementen verwendet, anstatt der unter RandomlyChooseAttachment festgelegten Menge. Standardmäßig leer.
"AttachmentGroupWithReplacement": [ "CaveItems" ], // Anhänge werden standardmäßig zufällig aus einer Liste ohne Ersetzung ausgewählt. Wenn Sie möchten, dass die Auswahl die Anhänge ersetzt, fügen Sie die Gruppe zur Liste hinzu. Wenn Sie keine Gruppen hinzugefügt haben, verwenden Sie eine leere Zeichenfolge. Der Standardwert ist eine leere Liste.
"Anhänge": [ // Liste der Anhänge. Entfernen Sie die Eigenschaft, um keine Elemente an die E-Mail anzuhängen.
            {
"Typ": "Objekt", // [Objekt|Großes Handwerksobjekt|Werkzeug|Ring|Möbel|Waffe|Stiefel|DGA|QualifiedItemId|Keine] Erforderlich. Der Typ des anzuhängenden Gegenstands. Falls nicht angegeben, wird der Gegenstand ignoriert. „Keine“ wird immer ohne Fehler im Protokoll ignoriert und sollte verwendet werden, wenn die Wahrscheinlichkeit, dass kein Anhang hinzugefügt wird, erhöht werden soll.
"Name": "Cave Carrot", // Wird verwendet, um den Artikelindex zu finden. Dies ist erforderlich, wenn benutzerdefinierte Objekte wie JSON-Assets verwendet werden. Sollte die vollständige DGA-ID sein, wenn DGA verwendet wird. Falls nicht angegeben, wird der Index verwendet. Der Standardwert ist null.
"Index": "(0)78", // Der Index eines Elements. Sollte die qualifizierte Element-ID als Zeichenfolge sein, funktioniert aber aus Gründen der Retrokompatibilität auch als Ganzzahl. Wenn kein Name angegeben ist oder kein Element für den Namen gefunden wird, wird der Index verwendet. Andernfalls wird der Anhang ignoriert. Wird ignoriert, wenn der Typ DGA ist.
"Stack": 1, // Der Stapelwert des zu liefernden Artikels. Wird nur für Objekte und BigCraftable verwendet. Der Standardwert ist 1.
"Qualität": 2, // Der Qualitätswert des zu liefernden Artikels. Wird nur für Objekte verwendet. 0 = keine, 1 = Silber, 2 = Gold, 4 = Iridium. Standard ist 0;
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Erfordert den Empfang einer der E-Mails. Die Spieleliste enthält auch andere Dinge, die keine E-Mails sind, wie z. B. Community-Center-Flags. Der Standardwert ist null, d. h. es muss keine E-Mail empfangen werden.
"RequireAllMailReceived": false, // Wenn "true", müssen alle E-Mails in der Liste "RequireMailReceived" empfangen worden sein. Der Standardwert ist "false".
"ProbabilityWeight": 1, // Das Gewicht dieses Anhangs bei der Auswahl des zu liefernden Anhangs. Der Mod summiert alle Gewichte einer bestimmten Gruppe und gibt eine Wahrscheinlichkeit an, indem dieses Gewicht durch die Gesamtsumme geteilt wird. Standardwert ist 1.
"RandomGroup": "CaveItems" // Bei der zufälligen Auswahl der Elemente wird die Liste nach den gefundenen Gruppen gruppiert und die festgelegte Menge aus jeder Gruppe ausgewählt. Der Standardwert ist eine leere Zeichenfolge, die als Standardgruppe fungiert.
},
            {
"Typ": "Werkzeug", // Bei Verwendung von Werkzeugen können nur unterstützte Werkzeuge angehängt werden.
"Name": "Axt", // [Axt|Hacke|Gießkanne|Spitzhacke|Sense|Goldene Sense|Milcheimer|Schere|Angelrute|Pfanne|Rückgabezepter] Wird für Werkzeuge benötigt. Der Name des unterstützten Werkzeugs. Andernfalls wird der Anhang ignoriert.
"UpgradeLevel": 1 // Die Upgrade-Stufe des Werkzeugs. Normale Werkzeuge: 0 = Stein, 1 = Kupfer, 2 = Stahl, 3 = Gold, 4 = Iridium. Angelrute: 0 = Bambusstange, 1 = Trainingsrute, 2 = Fiberglasrute, 3 = Iridiumrute. Wird für die anderen Typen ignoriert. Standard ist 0.
},
            {
"Typ": "DGA", //DGA-Artikel
"Name": "spacechase0.DynamicGameAssets.Example/My Custom Item", // verwenden Sie die vollständige DGA-ID. Erforderlich.
"Stack": 10, // Der Stapelwert des zu liefernden Artikels. Wird nur für Objekte und BigCraftable verwendet. Der Standardwert ist 1.
"Qualität": 2 // Der Qualitätswert des zu liefernden Artikels. Wird nur für Objekte verwendet. 0 = keine, 1 = Silber, 2 = Gold, 4 = Iridium. Standard ist 0;
},
            {
"Typ": "QualifiedItemId", //Jeder unterstützte Artikel
"Index": "(0)78", // Die qualifizierte Artikel-ID eines Artikels.
"Stack": 10, // Der Stapelwert des zu liefernden Artikels. Wird nur für Objekte und BigCraftable verwendet. Standard ist 1;
"Qualität": 2 // Der Qualitätswert des zu liefernden Artikels. Wird nur für Objekte verwendet. 0 = keine, 1 = Silber, 2 = Gold, 4 = Iridium. Standard ist 0;
            }
],
"Rezept": "Rezeptname", // Entfernen Sie die Zeile, wenn Sie kein Rezept an die Mail anhängen möchten. Dies funktioniert nur, wenn Sie keine weiteren Anhänge an die Mail anhängen. Verwenden Sie für DGA-Rezepte nur den ID-Teil (lassen Sie die ModID weg).
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // Verwenden Sie dies, um der MailReceived-Liste zusätzlichen Text hinzuzufügen. Kann nützlich sein, um Vanilla-Flags oder andere MFM-Brief-IDs hinzuzufügen.
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], //Text, der aus der MailReceived-Liste entfernt werden soll. Dies kann verwendet werden, um neue E-Mails, Ereignisse, Vanilla-Flags auszulösen oder den Versand anderer MFM-Mails zu stoppen …
"LetterBG": "CustomLetterBG.png", // Name der Datei in Ihrem Inhaltspaket, die den zu verwendenden benutzerdefinierten Buchstabenhintergrund enthält. Sie sollte der Struktur der LetterBG-Datei des Spiels entsprechen. WhichBG ist für diesen Buchstaben relativ zu dieser Datei. Wenn null oder entfernt, verwendet das Mod die LetterBG-Datei des Spiels.
"WhichBG": 0, //Die ID des Buchstabenhintergrunds. 0 = klassisch, 1 = Notizblock, 2 = Pyramiden
"TextColor": -1, //Entfernen Sie diese Zeile, um die Standardfarbe zu verwenden. Wird ignoriert, wenn eine benutzerdefinierte Textfarbe festgelegt ist. -1 = Dunkelrot, 0 = Schwarz, 1 = Himmelblau, 2 = Rot, 3 = Blauviolett, 4 = Weiß, 5 = Orangerot, 6 = Limettengrün, 7 = Cyan, 8 = Dunkelgrau
"CustomTextColorName": "Weiß", //Die Farbe des Textes. [http://www.foszor.com/blog/xna-color-chart/] Standardmäßig wird die Eigenschaft TextColor verwendet.
"UpperRightCloseButton": "CustomCloseButton.png", // Name der Datei in Ihrem Inhaltspaket, die die zu verwendende benutzerdefinierte Schaltfläche zum Schließen enthält. Die Größe sollte 12 x 12 betragen. Wenn null oder entfernt, wird die Standardschaltfläche verwendet.
"ReplyConfig": { // Wenn der Spieler nach dem Lesen des Briefes eine Antwort senden soll. Es werden die Antwortoptionen angezeigt, die basierend auf der Spielerantwort eine oder mehrere "ReceivedMail"-Nachrichten hinzufügen. Jede zusätzliche Logik im Zusammenhang mit der Antwort muss basierend auf der hinzugefügten ReceivedMail implementiert werden.
"QuestionKey": "MyMod.MyMailId.Question", //Ein Schlüssel zur Identifizierung Ihrer Frage. Er wird nur intern verwendet, sollte aber in Ihrem Inhaltspaket eindeutig sein, um Konflikte zwischen Antworten zu vermeiden.
"QuestionDialog": "Senden Sie eine Antwort und wählen Sie Ihre Belohnung aus:", //Ihre Frage oder Ihr Text, der über den Antwortoptionen angezeigt wird. Wenn eine Übersetzungsdatei bereitgestellt wird, geben Sie hier einen Übersetzungsschlüssel ein.
"Antworten": [
                {
"ReplyKey": "MyMod.MyMailId.Reply1", //Muss zwischen den Fragenantworten eindeutig sein.
"ReplyOptionDialog": "Ich möchte Seeds.", //Der Optionstext, der in der Antwortliste angezeigt wird. Wenn eine Übersetzungsdatei bereitgestellt wird, sollten Sie hier einen Übersetzungsschlüssel eingeben.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Erfordert den Empfang einer der E-Mails. Die Spieleliste enthält auch andere Dinge, die keine E-Mails sind, wie z. B. Community-Center-Flags. Der Standardwert ist null, d. h. es muss keine E-Mail empfangen werden.
"RequireAllMailReceived": false, // Wenn "true", müssen alle E-Mails in der Liste "RequireMailReceived" empfangen worden sein. Der Standardwert ist "false".
"MailReceivedToAdd": [ "MyMod.MyMailId.PlayerSeedOption" ], // Text, der der MailReceived-Liste hinzugefügt werden soll. Dies kann verwendet werden, um neue E-Mails, Ereignisse, Vanilla-Flags auszulösen oder den Versand anderer MFM-Mails zu stoppen ...
"MailReceivedToRemove": [ "MyMod.MyMailId.PlayerSapplingOption" ], //Text, der aus der MailReceived-Liste entfernt werden soll. Dies kann verwendet werden, um neue E-Mails, Ereignisse, Vanilla-Flags auszulösen oder den Versand anderer MFM-Mails zu stoppen ...
"ReplyResponseDialog": "Ihr Brief mit der Bitte um Saatgut wurde verschickt.", //Text, der nach Auswahl dieser Antwortoption angezeigt wird. Falls eine Übersetzungsdatei bereitgestellt wird, geben Sie hier einen Übersetzungsschlüssel ein.
"Kosten": 50 //Der Geldbetrag, den der Spieler haben muss, um diese Option zu wählen. Wählt er sie, wird dieser Betrag sofort vom Spielerkonto abgezogen. Bieten Sie immer eine kostenlose Option an, sonst kann es passieren, dass der Spieler blockiert wird.
                }
            ]
},
"Repeatable": false, // Wenn true, überprüft der Mod nicht, ob die Brief-ID bereits zugestellt wurde. Standard ist false.
"AutoOpen": false, // Wenn true, öffnet der Mod den Brief zu Beginn des Tages, nachdem die Bedingungen erfüllt sind. Die Brief-ID wird als gelesen markiert und ein Rezept wird gelernt, falls vorhanden. Da der Brief nie angezeigt wird, werden visuelle Eigenschaften wie Titel, Text, Hintergrund usw. sowie Anhänge nie verwendet.
// LIEFERBEDINGUNGEN
//Nachfolgend finden Sie die Bedingungen für die Lieferung. Entfernen Sie die Zeilen, wenn Sie diese Bedingung nicht überprüfen möchten.
"Datum": "10 Frühling Y1", // Muss dieses Datum oder ein späteres Datum sein. Das Format ist "[1-28] [Frühling|Sommer|Herbst|Winter] Y[1-999]".
"Tage": [7,14,21,28], // Muss einer der Tage in der Liste sein.
"Jahreszeiten": ["Herbst"], // Muss eine der Jahreszeiten in der Liste sein. [Frühling|Sommer|Herbst|Winter]
"Wetter": "sonnig", // Muss das Spielwetter sein. Das Format ist "[sonnig|regnerisch]".
"HouseUpgradeLevel": 2, // Das Upgrade-Level des Hauses muss gleich oder höher als definiert sein. 0 – Starterhaus (es gibt keinen Grund, dies zu verwenden, entfernen Sie einfach die Zeile), 1 – Küche, 2 – zweiter Stock, 3 – Keller.
"DeepestMineLevel": 80, // Die tiefste Minenebene muss gleich oder höher sein als die definierte. 120 ist die letzte Ebene der Mine, 121 ist die erste Ebene der Schädelhöhle.
"CurrentMoney": 10000, // Der aktuelle Geldbetrag muss gleich oder höher als definiert sein.
"TotalMoneyEarned": 500000, // Der Gesamtbetrag, der verdient wird, muss gleich oder höher als der definierte Betrag sein.
"FriendshipConditions": // Jeder NPC der Liste muss alle Bedingungen überprüfen.
        [
            {
"NpcName": "Lewis", //Name des NPCs. Kann benutzerdefinierte NPCs verwenden.
"FriendshipLevel": 8, // NPC muss ein Freundschaftsherzlevel haben, das dem definierten Wert entspricht oder höher ist. Standard ist 0.
"FriendshipStatus": ["Dating","Engaged","Married"] // [Friendly|Dating|Engaged|Married|Divided] Der NPC-Freundschaftsstatus muss einer aus der Liste sein. Entfernen, um keinen Status zu benötigen.
            }
],
"SkillConditions": // Jede Fertigkeit in der Liste muss mindestens dem definierten Level entsprechen. Alle codierten Fertigkeiten des Originalspiels, einschließlich Glück, können verwendet werden. Benutzerdefinierte Fertigkeiten können nicht verwendet werden.
        [
{ "SkillName": "Farming", "SkillLevel": 1 }
],
"StatsConditions": // Jede Statistik in der Liste muss einen Wert haben, der gleich oder höher als der definierte Wert ist. Wählen Sie einen StatsName oder ein StatsLabel
        [
            {
"StatsName": "Käse hergestellt", //[Ausgesäte Samen | Versandte Gegenstände | Gekochte Gegenstände | Hergestellte Gegenstände | Gelegte Hühnereier | Gelegte Enteneier | Produzierte Kuhmilch | Produzierte Ziegenmilch | Produzierte Kaninchenwolle | Produzierte Schafwolle | Hergestellter Käse | Hergestellter Ziegenkäse | Gefundene Trüffel | Gesammelte Steine | Zerkleinerte Felsen | Gehackte Erde | Verschenkte Geschenke | Bewusstlosigkeitszeiten | Durchschnittliche Schlafenszeit | Angelzeiten | Gefangen Fische | Gebrochene Felsbrocken | Gehackte Baumstümpfe | Schritte | Getötete Monster | Gefundene Diamanten | PrismaticSh Gefundene Steine | Andere wertvolle Edelsteine gefunden | Höhlenkarotten gefunden | Gefundene Kupferstücke | Gefundene Eisenstücke | Gefundene Kohle | Gefundene Münzen | Gefundenes Gold | Gefundenes Iridium | Geschmolzene Riegel | Hergestellte Getränke | Hergestellte Konserven | Recycelte Müllstücke | Zerkleinerte mystische Steine | Gespielte Tage | Beseitigtes Unkraut | Gehackte Stöcke | Gefundene Notizen | Abgeschlossene Quests | Versandte Feldfrüchte auf Sternenstufe | Versandte Feldfrüchte | Gesammelte Gegenstände | Getötete Schleime | Geknackte Geoden | Gute Freunde | Individuell verdientes Geld] Der Standardwert ist null.
"StatsLabel": "Name", // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] Dies sind die aktuellen Spielstatistiken, die durch das Label identifiziert werden. Wenn weitere hinzugefügt werden, sollten diese ebenfalls unterstützt werden. Es werden auch benutzerdefinierte Statistik-Labels identifiziert, die von anderen Mods hinzugefügt wurden. Der Standardwert ist null.
"Betrag": 1 // Der Betrag, bei dem der Status gleich oder größer sein muss, damit die Bedingung gültig ist.
            }
],
"CollectionConditions": // Jede Sammelbedingung der Liste muss einen Wert haben, der gleich oder höher als der definierte Betrag ist.
        [
            {
"Sammlung": "Versendet", //[Versendet|Fisch|Artefakte|Mineralien|Kochen|Handwerk] Erforderlich.
"Name": "Öl", //Veraltet, verwendet stattdessen IDs. Der Name des Objekts oder Rezepts für die Crafting-Sammlung. Wenn es sich nicht um eine Crafting-Sammlung handelt, wird in der Objektliste nach diesem Namen gesucht, um den Index zu finden. Wird der Name nicht gefunden, wird der Buchstabe ignoriert. Wird mit den anderen Eigenschaften kombiniert. Standardwert ist null.
"Index": 211, //Veraltet, verwendet stattdessen IDs. Der Index des Objekts. Wird mit den anderen Eigenschaften kombiniert. Standard ist null.
"Ids": [ "282", "MossSoup" ], //Die Artikel-IDs oder die Namen der Herstellungsrezepte. Wird mit den anderen Eigenschaften kombiniert. Die Beträge werden summiert, um sie mit der Eigenschaft „Betrag“ zu vergleichen.
"Betrag": 10 // Die Gesamtmenge der Objekte in der Sammlung muss gleich oder größer sein, damit die Bedingung gültig ist.
            }
],
"SpecialDateCondition": // Muss dieses Datum oder ein späteres Datum sein.
        {
"SpecialDate": "ChildBirth", //[Hochzeit|ChildBirth] Erforderlich
"YearsSince": 1, //Die Anzahl der Jahre seit dem Datum. 0 entspricht dem aktuellen Datum, 1 dem laufenden Jahr. Standard ist 0.
"WhichChild": 1 //Wenn die SpecialDate-Eigenschaft ChildBirth ist, wird auf das Kind verwiesen. Standard ist 1;
},
"ExpandedPrecondition": "d Mon Fri/HasItem Pink Cake/!JojaMartComplete/!w rainy", //Benötigt das Mod „Expanded Preconditions Utility“. Siehe die Mod-Dokumentation, um zu sehen, wie das funktioniert. Wenn das Mod nicht geladen ist, wird der Brief nicht zugestellt.
"ExpandedPreconditions": [ "!z spring/t 600 1000", "f Linus 1000/w rainy/z spring", "f Linus 2500" ], //Benötigt das Mod „Expanded Preconditions Utility“. Siehe die Dokumentation des Mods, um zu erfahren, wie das funktioniert. Wenn das Mod nicht geladen ist, wird der Brief nicht zugestellt.
"RandomChance": 0,25, // Der Mod prüft, ob eine Zufallszahl zwischen 0 und 1 unter der angegebenen Zahl liegt. Derselbe Speichervorgang am selben Tag für denselben Buchstaben führt immer zum selben Ergebnis, um Betrug zu vermeiden.
"Gebäude": ["Stall","Großer Stall","Deluxe-Stall"], // Erfordert, dass eines der Gebäude derzeit auf der Farm gebaut wird.
"RequireAllBuildings": false, // Wenn "true", müssen alle Gebäude in der Liste "Gebäude" aktuell auf der Farm gebaut sein. Der Standardwert ist "false".
"MailReceived": ["jojaVault","ccVault"], // Erfordert, dass eine der E-Mails empfangen wurde. Die Spieleliste enthält auch andere Dinge, die keine E-Mails sind, wie z. B. Community-Center-Flaggen.
"RequireAllMailReceived": false, // Wenn "true", müssen alle E-Mails in der Liste "MailReceived" empfangen worden sein. Der Standardwert ist "false".
"MailNotReceived": ["jojaVault","ccVault"], // Erfordert, dass die E-Mails nicht empfangen wurden. Die Spieleliste enthält auch andere Dinge, die keine E-Mails sind, wie z. B. Community Center-Flaggen.
"EventsSeen": [ "4", "32423" ], // Erfordert, dass eines der Ereignisse vom Spieler gesehen wurde. Sollte eine Zeichenfolge sein, funktioniert aber aus Gründen der Retro-Kompatibilität auch als Ganzzahl.
"RequireAllEventsSeen": false, // Wenn "true", ist es erforderlich, dass alle Ereignisse in der Liste "EventsSeen" vom Spieler gesehen wurden. Der Standardwert ist "false".
"HasMods": [ "SMAPI.ConsoleCommands", "SMAPI.SaveBackup" ], // Erfordert das Laden eines der Mods. Sollte die eindeutige Mod-ID sein.
"RequireAllMods": false, // Wenn true, müssen alle Mods in der Liste "HasMods" geladen sein. Standard ist false.
"EventsNotSeen": [ "4", "32423" ], // Erfordert, dass die Ereignisse vom Spieler nicht gesehen wurden. Sollte eine Zeichenfolge sein, funktioniert aber aus Gründen der Retro-Kompatibilität auch als Ganzzahl.
"RecipeKnown": ["Pizza","Survival Burger"], // Erfordert, dass der Spieler eines der Rezepte erlernt hat.
"RequireAllRecipeKnown": false, // Wenn "true", muss der Spieler alle Rezepte in der Liste "RecipeKnown" erlernt haben. Der Standardwert ist "false".
"RecipeNotKnown": ["Wild Bait"], // Erfordert, dass die Rezepte vom Spieler nicht erlernt wurden.
"KeepValid": false // Wenn dies wahr ist, bleibt die E-Mail gültig, bis sie gelesen wird, sobald die Bedingungen erfüllt sind. Der Standardwert ist "false".
    }
]


Damit Modder die API verwenden können:
  • KopieIMailFrameworkModApiSchnittstelle mit der Methode, die Sie von der MFM-Schnittstelle aus verwenden möchten.
  • KopieILetterwenn eine der Methoden es benötigt.
  • Methoden:
    • RegisterContentPack- VerwendenHelper.ContentPacks.CreateTemporaryum einen Ordner aus Ihrem Mod zu laden, der die Datei mail.json und einen möglichen i18n-Ordner für Übersetzungen enthält. Ein Manifest ist nicht erforderlich, da Sie diesen Methodenparameter verwenden können.
    • RegisterBrief- Füllen Sie einen ILetter mit den gewünschten Eigenschaften aus. Für die Registrierung eines Briefes ist außerdem eine Bedingung erforderlich. Ein Rückruf ist ratsam, um zumindest die empfangene Brief-ID hinzuzufügen. Siehe Beispiele unten, auf der Seite "Für Modder zum Coden mit MFM-Abhängigkeit" Sitzung.
    • Brief abrufen- Sie erhalten das ILetter-Objekt für die Brief-ID.
    • GetMailDataString- Sie erhalten die E-Mail-Datenzeichenfolge für die Brief-ID. Die E-Mail-Datenzeichenfolge besteht im Wesentlichen aus dem übersetzten Text plus dem übersetzten Titel mit einem [#]-Trennzeichen.

Damit Modder mit MFM-Abhängigkeit codieren können:
  • Verweisen Sie in Ihrem SMAPI-Projekt auf die MailFrameworkMod.dll.
    • Sie registrieren Ihren Brief mit MailRepository.SaveLetter(Letter)
    • Zu Beginn eines jeden Tages prüft der Mod, ob Briefe den Zustellstatus erreicht haben, und fügt sie dem Briefkasten hinzu.
    • Diese Briefe werden zuerst geöffnet, wenn der Spieler den Briefkasten überprüft.
    • Wenn der Brief geöffnet wird, wird er aus dem Briefkasten entfernt.
    • Die Rückrufbedingung des Briefes wird ihnen genannt.
    • Am Ende des Tages werden die noch im Briefkasten befindlichen Briefe entfernt, sodass sie vom Spiel nicht gespeichert werden.
  • Sie können sich diesen Mod als eine Art Aufbewahrungsort für Ihre Briefe vorstellen. Er funktioniert am besten, wenn Sie alle Ihre Briefe beim Laden des Spiels laden.


Beispiele:

Spoiler:
Zeigen

Laden eines einfachen Briefes, der dem Spieler angezeigt wird, wenn er ihn noch nicht gelesen hat, und der nach dem Öffnen durch den Spieler nicht erneut zugestellt wird:
MailRepository.SaveLetter(
neuer Buchstabe(
"Eindeutige Brief-ID"
,"Benutzerdefinierter Brieftext."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);


Laden eines einfachen Briefes wie zuvor, aber mit 5 angehängten Smaragden:
MailRepository.SaveLetter(
neuer Buchstabe(
"Eindeutige Brief-ID"
,"Benutzerdefinierter Brieftext."
,neue Liste { neues StardewValley.Objekt(60,5) }
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
  )
);

Der Spieler erhält nicht denselben Gegenstand, sondern eine Kopie, die von der Methode getOne() zurückgegeben wird.

Ein einfacher Brief wird geladen, der ein Kochrezept vermittelt. Er wird zugestellt, wenn der Spieler das Rezept nicht kennt. Der Mod vermittelt die Rezepte automatisch beim Laden, ein Rückruf ist hier nicht erforderlich:
MailRepository.SaveLetter(
neuer Buchstabe(
"Eindeutige Brief-ID"
, „Benutzerdefinierter Brieftext.“
, "Eindeutiger Rezeptname"
, (l) => !Game1.player.cookingRecipes.ContainsKey(l.Recipe)
  )
);

Der „RecipeUniqueName“ muss derselbe sein wie der in „Data//CookingRecipes“ oder „Data//CraftingRecipes“ gespeicherte.

Laden eines einfachen Briefes mit anderem Text und Hintergrund:
MailRepository.SaveLetter(
neuer Buchstabe(
"Eindeutige Brief-ID"
,"Benutzerdefinierter Brieftext."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
1
){TextColor=8}
);


Laden eines einfachen Briefes mit benutzerdefiniertem Hintergrund:
MailRepository.SaveLetter(
neuer Buchstabe(
"Eindeutige Brief-ID"
,"Benutzerdefinierter Brieftext."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,Game1.player.mailReceived.Add(l.Id)
1
){
LetterTexture=helper.Content.Load("CustomLetterBG.png")
,TextColor=4
  }
);
Wobei CustomLetterBG.png eine Bilddatei ist, die der gleichen Struktur wie „LooseSprites//letterBG“ folgt.

Laden eines einfachen Briefes mit Übersetzung für Text und Titel.
MailRepository.SaveLetter(
neuer Buchstabe(
"Eindeutige Brief-ID"
,"myletter.translation.key.text"
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
){
Titel = "myletter.translation.key.title",
I18N = Helfer.Übersetzung
    }
);



Meine anderen Mods:

Top-Mods für Stardew Valley

Entdecke die besten Mods für Stardew Valley, die neue Funktionen, verbesserte Grafiken und spannende Möglichkeiten bieten, dein Spielerlebnis zu verändern.

Entfalte das volle Potenzial von Stardew Valley mit XMODhub — entdecke noch heute diese Top-Mods!

mcafee
Authentifizierung
Vertraut von 200,000,000+ Nutzern

Brauchst du Hilfe beim Download oder der Installation? Trete unserer Discord-Community für Unterstützung bei!

logo
Sprache

Gaming-Lösungen

Ressourcen

Partner

Folgen Sie uns auf

discordfacebooktwitteryoutube
Support:
support@xmodhub.com
Xmod_Lily
Geschäft:
dc@xmodhub.com or cathy@business.xmodhub.com
catherine_79237

Larvas Limited

Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK