logo
fr
Français

Mod de cadre de messagerie

Créateur: Digus
Mis à jour:28/03/2025 14:16:59
49KB
mcafee
Authentification
Fiable pour 200,000,000+ utilisateurs

Mods prérequis

sera installé automatiquement lorsque vous utilisez Mod de cadre de messagerie

À propos de ce mod

Cadre pour utiliser la boîte aux lettres dans le jeu. Commandes de console pour ajuster le courrier. Interfaces Code et Content Pack.
Objectif:
Simplifiez l'envoi de courrier au joueur, en lui donnant plus de contrôle sur le moment et ce qui doit être reçu.
Il offre également davantage d'options qui ne sont pas possibles en modifiant simplement les fichiers de données, comme changer la couleur du texte et l'arrière-plan de la lettre à volonté.

Installation:

Journal des modifications :

1.20.0
  • Ajoute un nouvel élément personnalisé au jeu (DIGUS.MailFrameworkMod/MailData). Cela signifie que les lettres MFM peuvent désormais être chargées avec Content Patcher et bénéficier de toutes ses fonctionnalités, comme les jetons. Les mêmes propriétés sont prises en charge.
  • Les lettres du pack de contenu sont également chargées dans le nouvel actif personnalisé et peuvent donc être modifiées avec Content Patcher.
  • Les packs de contenu sont désormais chargés dans un cache au démarrage du jeu, au lieu d'être rechargés à chaque chargement de la sauvegarde. Vous pouvez forcer le rechargement des packs de contenu avec la commande console.
  • Les propriétés Texte et Titre prennent désormais en charge la chaîne tokenisable.
  • Les ressources de texture peuvent désormais être une ressource de jeu, et pas seulement une ressource dans le dossier mod.
  • Nouvelle propriété GameStateQuery comme condition pour livrer une lettre.
1.19.0
  • Nouvelle propriété permettant de conserver un courrier valide une fois que toutes les conditions ont été remplies pendant une journée mais que le courrier n'a pas été lu ce jour-là.
  • Nouvelle fonctionnalité pour gérer les pièces jointes choisies par Randoly
  • Nouvelle propriété permettant de définir le nombre d'éléments de la liste des pièces jointes à choisir pour la livraison.
  • Nouvelle propriété permettant de définir un « RandomGroup » sur une pièce jointe, afin qu'elle soit sélectionnée dans ce groupe plutôt que dans la liste entière.
  • Nouvelle propriété permettant de définir un « poids » pour une pièce jointe donnée, lorsqu'elle est sélectionnée au hasard.
  • Nouvelle propriété permettant de définir le nombre d'éléments à sélectionner dans un groupe donné, au lieu d'utiliser la valeur par défaut.
  • Nouvelle propriété permettant de dire si un élément d'un groupe donné peut être choisi plus d'une fois.
  • Nouvel ensemble de propriétés pour définir une exigence MailReceived pour les pièces jointes et les réponses
  • Nouvelle propriété permettant de définir un MailReceived à supprimer lorsqu'une lettre est lue ou lorsqu'une option de réponse est cochée.
  • Nouvelle propriété permettant de définir un coût pour une option de réponse donnée.
  • Nouveau type d'élément « Aucun ». Il est principalement utilisé lorsque vous souhaitez avoir une chance aléatoire de ne pas livrer un article, sans déclencher d'erreurs ou d'avertissements dans le journal.
1.18.0
  • Nouvelle propriété Ids remplaçant Index et Name pour CollectionConditions. Elle permet d'agréger plusieurs éléments et d'additionner leurs valeurs pour les comparer au montant.
  • Nouvelle propriété ReplyConfig pour ajouter un comportement de réponse. Vous pouvez afficher une option au joueur après la lecture d'un message ; un ou plusieurs messages « MailReceived » seront ajoutés en fonction de l'option choisie. Une logique de mod supplémentaire peut être implémentée en fonction de ce choix.
  • Correction de la lettre avec la recette ne prenant pas en charge la propriété CustomTextColorName.
  • Correction de l'exception de référence nulle lorsqu'un élément avec un nom nul était chargé dans le jeu.
1.17.1
  • Les e-mails de pack de contenu avec propriété de recette ne doivent pas contenir de pièces jointes pour être redistribués si la recette n'est pas apprise. (La propriété de recette est ignorée s'il y a des pièces jointes)
  • Corrigez les recettes de cuisine avec la même logique appliquée aux recettes d'artisanat auparavant.
1.17.0
  • Nouvelle propriété pour définir la qualité de la pièce jointe
  • Les courriers de pack de contenu avec recette doivent être redistribués si la recette n'est pas apprise.
  • Corrigez les avertissements concernant Slingshot si vous utilisez l'ID d'élément qualifié.
  • Correction des recettes pour les objets fabriqués livrées même si la recette a déjà été apprise.
  • Pour des raisons d'héritage, si l'ID de recette n'est pas trouvé dans les recettes apprises, il recherchera une recette qui crée un élément avec le nom de l'ID de recette.
1.16.1
  • Correction du nom traduit de la recette.
1.16.0
  • Mise à jour du mod pour être compatible avec Stardew Valley 1.6
  • Nouvelle commande pour recharger les packs de contenu
  • MailDao a été rebaptisé MailRepository. (N'affecte que les modérateurs SMAPI qui l'utilisent)
  • Nouveau type d'élément « QualifiedItemId » pour les pièces jointes, devrait fonctionner pour chaque type d'élément du jeu si vous utilisez la qualification appropriée.
  • Nouvelle propriété avec conditions spéciales pour dates (mariage et naissance).
  • Nouvelle propriété pour CustomTextColor, ancienne propriété obsolète.
  • Nouvelle propriété HasMods
  • Nouvelle propriété RequireAllMods
  • Les identifiants d'événements sont désormais des chaînes. (Les nombres devraient toujours fonctionner)
  • Suppression de la logique obsolète SV 1.6 incorporée à partir de MFM.
  • Problème résolu depuis la version alpha où la lettre ne s'ouvrait pas dans la page de collecte de courrier.
Becquet:
Montrer
1.15.0
  • Nouvelle interface API pour les mods SMAPI.
  • Méthode API pour charger le dossier du pack de contenu à partir de votre mod SMAPI.
  • Méthode API pour charger une lettre.
  • Méthode API pour obtenir les données d'une lettre.
  • Méthode API pour obtenir la chaîne de données de courrier d'une lettre.
  • Correction de la boîte aux lettres qui ne fonctionnait pas correctement lorsqu'une erreur se produisait lors de la fermeture de la lettre.
  • Il vaut mieux consigner ces erreurs.
1.14.0
  • Autres modifications pour la compatibilité avec SMAPI 4
  • Nouvel attribut dans la classe de lettre pour définir le ITranslationHelper.
  • Le pack de contenu n'a pas besoin de changer quoi que ce soit, mais ce changement devrait éviter certains problèmes i18n rares.
  • Les mods qui utilisent MFM via le code peuvent mettre à jour leur implémentation.
1.13.0
  • Rendre le mod compatible avec SMAPI 4.
  • Nouvelle propriété pour le niveau de la mine la plus profonde.
  • Nouvelle propriété pour l'argent courant.
  • Nouvelle propriété pour l'argent total gagné.
  • Nouvelle commande de console pour forcer la mise à jour de la boîte aux lettres pour aider les moddeurs à déboguer.
  • Le menu de collecte de lettres affiche désormais également un bouton de fermeture personnalisé.
1.12.2
  • Rendre le mod compatible avec 1.5.5, sans forcer SMAPI à le convertir.
  • Cela devrait résoudre certains problèmes liés aux pièces jointes qui ne fonctionnent pas sur le système d'exploitation Unix.
  • Nouvelle propriété pour le niveau de mise à niveau de la maison.
1.12.1
  • Erreur corrigée lorsque l'utilitaire de conditions préalables étendues n'était pas chargé.
1.12.0
  • De nouvelles propriétés pour soutenir l'utilisation deConditions préalables élargies
  • Nouvelle propriété permettant d'ajouter du texte en plus de l'identifiant de la lettre à la liste MailReceived du joueur.
1.11.0
  • Prise en charge des DGA (Dynamic Game Assets) en tant que pièces jointes.
1.10.2
  • Correction des noms de recettes de cuisine en anglais affichés comme nuls, lorsqu'ils sont ajoutés par Json Assets.
1.10.1
  • Correction de l'ouverture automatique des lettres sans texte, ce qui interrompt le mod lorsqu'il y a des fichiers i18n.
  • Correction de la lettre du pack de contenu qui ne se charge pas après un avertissement de condition de collection.
  • Ajoute un nouveau type d'exigence de collection pour les recettes d'artisanat.
1.10.0
  • Tous les outils vanilla sont désormais pris en charge.
  • Prise en charge des lance-pierres classiques comme armes. Si vous utilisez l'index ou le nom d'un lance-pierres, il sera correctement créé comme tel.
  • Nouvelle propriété « Ouverture automatique », lorsque vous souhaitez utiliser les conditions MFM pour enregistrer un identifiant de lettre comme lu sans écrire une lettre réelle.
1.9.2
  • Optimisation pour le chargement des ressources à partir des packs de contenu.
  • Correction du rappel des lettres qui n'étaient pas appelées si un menu était ouvert pour ajouter un élément à l'inventaire.
1.9.1
  • Correction d'un bug où la lettre MFM n'était pas ouverte et retirée de la boîte pour le jour en cours si vous teniez un objet lorsque vous cliquiez sur la boîte aux lettres.
1.9.0
  • Nouvelle propriété pour la lettre créée avec SMAPI pour ajouter des éléments dynamiquement à la lettre.
  • Nouvelle méthode pour supprimer les lettres de la boîte aux lettres.
1.8.1
  • Correction pour éviter les conflits de courrier dans la coopérative locale.
  • Correction de situations rares dans lesquelles le mod cessait de fonctionner si un menu de lettres n'était pas correctement fermé par le jeu.
1.8.0
  • Prise en charge des meubles, des armes et des bottes en tant qu'accessoires.
  • Nouvelle propriété pour définir le niveau de mise à niveau des outils attachés.
1.7.0
  • Prise en charge des anneaux en tant que pièces jointes.
  • Nouvelles conditions pour les recettes.
  • Nouvelle propriété pour la personnalisation de l'arrière-plan avec des packs de contenu.
  • Prise en charge de la personnalisation du bouton de fermeture avec le pack de contenu et le code.
1.6.0
  • Prise en charge de l'i18n dans les packs de contenu.
  • Nouvelles conditions de propriétés pour les bâtiments de la ferme.
  • Nouvelles propriétés de conditions pour le courrier reçu. (utilisé pour les indicateurs de quête)
  • Nouvelles propriétés de conditions pour les événements.
  • Nouvelle liste de conditions pour les éléments du menu des collections.
  • Nouvelle liste de conditions pour les statistiques du jeu.
  • Nouvelle propriété pour le statut d'amitié pour la liste des conditions d'amitié PNJ.
  • Nouvelle fonctionnalité aléatoire lorsque les identifiants de groupe entrent en collision.
1.5.1
  • Correction des lettres sans identifiant de groupe regroupées.
1.5.0
  • La lettre sera désormais affichée dans le menu Collection si un titre est défini. Les textures et couleurs personnalisées seront également affichées dans le menu Collection.
  • Les lettres peuvent désormais avoir un identifiant de groupe. Les lettres portant le même identifiant ne sont jamais distribuées le même jour.
  • Nouvelle condition pour les packs de contenu : « RandomChance ».
  • BigObject s'appelle désormais BigCraftable, comme dans le code du jeu.
  • Correction de fautes de frappe dans le modèle.
1.4.1
  • Ajoute la prise en charge de Stardew Valley 1.4.0
  • Ajout de la propriété Titre pour l'affichage des lettres dans le menu Collection. Ce n'est pas encore complètement implémenté, mais les moddeurs peuvent commencer à le configurer.
1.4.0
  • Ajoute un support de pack de contenu permettant aux moddeurs d'ajouter des lettres personnalisées, avec des configurations pour toutes les fonctionnalités fournies par ce framework, et avec les conditions de livraison les plus courantes.
  • Corrigez les contrôleurs qui ne fonctionnent pas pour obtenir les éléments attachés.
  • Correction pour afficher correctement les pièces jointes si le courrier contient plusieurs éléments joints.
  • Correction pour ne pas laisser la lettre se fermer si votre inventaire est plein et qu'un menu est ouvert pour le gérer.
  • Correction pour ne pas ajouter une pile d'éléments au courrier même lorsqu'il est configuré pour le faire.
  • Ajoute la prise en charge de SMAPI 3
1.3.4
  • Ajoute la prise en charge de Stardew Valley 1.3.36
1.3.3
  • Ajoute la prise en charge de SMAPI 3
1.3.2
  • Ajoute la prise en charge de Stardew Valley 1.3.32
1.3.1
  • Ajoute des commandes pour supprimer et ajouter à la liste de courrier reçu du joueur.
1.3.0-beta.6
  • Ajoute la prise en charge des recettes d'artisanat
  • Ajoute la prise en charge de l'arrière-plan personnalisé
  • Ajoute la prise en charge de la couleur de texte personnalisée
  • Nouvelle façon d'ouvrir une lettre personnalisée, utilisant désormais Harmony
  • Fichier de configuration pour activer l'ancienne méthode d'ouverture des lettres personnalisées.
1.2.0
  • Prise en charge des recettes i18n.
  • Correction du mod qui ne fonctionne pas correctement après le retour au menu titre.
  • Correction du problème de non-livraison du courrier si la condition d'une lettre générait une exception.
1.1.0
  • Correction pour recevoir le courrier « taxe passée » en dormant et quitter le jeu sans avoir lu un courrier personnalisé.
  • Les courriers personnalisés peuvent contenir des recettes.
  • Cette version n'est pas compatible avec l'ancienne. Les mods doivent être mis à jour pour utiliser cette version.
1.0.0
  • Ajouter des e-mails personnalisés
  • Les courriers personnalisés peuvent contenir des éléments.

Pour que les moddeurs utilisent le pack de contenu :
  • Il y a un modèle dans le dossier mod avec des instructions commentées sur ce que fait chaque propriété.
  • Toutes les fonctionnalités des lettres, à l'exception des conditions et du rappel, sont les mêmes que celles du codage avec le framework.
  • Les conditions sont limitées à celles implémentées, et le rappel définit toujours l'identifiant de lettre comme reçu. Si vous avez besoin de conditions avancées, vous devez quand même les coder. Vous pouvez également me suggérer poliment d'ajouter une condition au pack de contenu ; si cela vous semble pertinent, je pourrais l'ajouter.
  • Voici le modèle tel qu'ajouté dans le fichier mod :
Becquet:
Montrer
[
    {
"Id": "MyMod.MyMailId", // ID de la lettre. Il est important que la chaîne soit unique pour éviter les conflits. De plus, elle ne doit pas contenir d'espace.
"GroupId": "MyMod.MyGroupId", // Identifiant du groupe de lettres. Les lettres portant le même identifiant ne sont jamais distribuées le même jour. Les lettres enregistrées en premier sont prioritaires, sauf si l'identifiant du groupe se termine par « .Random ». Dans ce cas, une lettre aléatoire est sélectionnée. La valeur par défaut est nulle.
"Titre" : « Titre de ma lettre », // Le titre de la lettre. Il sera affiché dans le menu des collections. Définissez-le à « Null » ou supprimez la ligne si vous ne souhaitez pas que la lettre apparaisse dans la collection. Si un fichier de traduction est fourni, vous devez indiquer une clé de traduction ici, mais vous pouvez toujours laisser la valeur « Null » pour ne pas avoir de titre.
Texte : « Cher @^Ceci est mon courrier personnalisé. », // Texte de la lettre. Vous pouvez utiliser @ pour indiquer le nom du joueur et ^ pour les sauts de ligne. Vous pouvez également utiliser les commandes du jeu de base pour ajouter de l'argent, des objets et d'autres éléments. Si un fichier de traduction est fourni, vous devez indiquer une clé de traduction ici.
"RandomlyChooseAttachment": 2, // Si un nombre est défini, le nombre d'éléments sélectionnés sera choisi aléatoirement dans la liste des pièces jointes, par groupe. La valeur par défaut est null.
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // Si un groupe et un montant sont définis ici, ce montant sera utilisé pour sélectionner les éléments au lieu de celui défini dans RandomlyChooseAttachment. La valeur par défaut est vide.
"AttachmentGroupWithReplacement": [ "CaveItems" ], // Les pièces jointes sont choisies aléatoirement dans une liste, sans remplacement par défaut. Si vous souhaitez que le groupe soit choisi en remplacement des pièces jointes, ajoutez le groupe à la liste. Si vous n'avez pas ajouté de groupes, utilisez une chaîne vide. La valeur par défaut est une liste vide.
« Pièces jointes » : [ // Liste des pièces jointes. Supprimez la propriété pour ne pas joindre d'éléments au courrier.
            {
"Type": "Object", // [Object|BigCraftable|Tool|Ring|Furniture|Weapon|Boots|DGA|QualifiedItemId|None] Obligatoire. Type d'objet à joindre. S'il n'est pas renseigné, l'objet sera ignoré. « None » est toujours ignoré sans erreur dans le journal et doit être utilisé pour connaître la probabilité de ne pas ajouter d'objet joint.
"Nom" : "Cave Carrot", // Utilisé pour trouver l'index de l'élément. Ceci est requis si vous utilisez des objets personnalisés comme ceux des ressources JSON. Doit contenir l'ID DGA complet. S'il n'est pas fourni, l'index sera utilisé. La valeur par défaut est null.
"Index": "(0)78", // L'index d'un élément. Doit être l'ID d'élément qualifié sous forme de chaîne, mais peut également être utilisé comme entier pour la rétrocompatibilité. Si aucun nom n'est fourni ou si aucun élément correspondant à ce nom n'est trouvé, l'index est utilisé. Sinon, la pièce jointe est ignorée. Ignoré si le type est DGA.
"Stack" : 1, // Valeur de pile de l'objet à livrer. Utilisé uniquement pour les objets et BigCraftable. La valeur par défaut est 1.
« Qualité » : 2, // La valeur de qualité de l'article à livrer. Utilisé uniquement pour les objets. 0 = aucune, 1 = argent, 2 = or, 4 = iridium. La valeur par défaut est 0 ;
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Exige qu'un des e-mails ait été reçu. La liste des jeux contient également d'autres éléments qui ne sont pas des e-mails, comme les indicateurs du centre communautaire. La valeur par défaut est null, ce qui signifie qu'aucun e-mail n'est requis.
"RequireAllMailReceived": false, // Si la valeur est true, tous les e-mails de la liste « RequireMailReceived » doivent avoir été reçus. La valeur par défaut est false.
"ProbabilityWeight": 1, // Le poids de cette pièce jointe lors du choix de celle à livrer. Le modérateur additionne tous les poids d'un groupe donné et attribue une probabilité en divisant ce poids par le total. La valeur par défaut est 1.
"RandomGroup": "CaveItems" // Lors de la sélection aléatoire des éléments, regroupez la liste selon les groupes trouvés et sélectionnez le nombre défini dans chaque groupe. La valeur par défaut est une chaîne vide qui sert de groupe par défaut.
},
            {
"Type" : "Outil", // Lors de l'utilisation d'un outil, seuls ceux pris en charge peuvent être attachés.
"Nom" : "Hache", // [Hache|Bêche|Arrosoir|Pioche|Faux|Faux doré|Seau à lait|Ciseaux|Canne à pêche|Pan|Sceptre de retour] Requis pour les outils. Nom de l'outil pris en charge. Sinon, la pièce jointe est ignorée.
"UpgradeLevel" : 1 // Niveau d'amélioration de l'outil. Outils standards : 0 = pierre, 1 = cuivre, 2 = acier, 3 = or, 4 = iridium. Canne à pêche : 0 = canne en bambou, 1 = canne d'entraînement, 2 = canne en fibre de verre, 3 = canne en iridium. Ignoré pour les autres types. La valeur par défaut est 0.
},
            {
"Type" : "DGA", //élément DGA
"Nom" : "spacechase0.DynamicGameAssets.Example/My Custom Item", // utilisez l'ID DGA complet. Obligatoire.
"Stack" : 10, // Valeur de pile de l'objet à livrer. Utilisé uniquement pour les objets et BigCraftable. La valeur par défaut est 1.
« Qualité » : 2 // La valeur de qualité de l'article à livrer. Utilisé uniquement pour les objets. 0 = aucune, 1 = argent, 2 = or, 4 = iridium. La valeur par défaut est 0 ;
},
            {
"Type": "QualifiedItemId", //Tout élément pris en charge
"Index": "(0)78", // L'ID d'élément qualifié d'un élément.
"Stack": 10, // La valeur de la pile de l'objet à livrer. Utilisé uniquement pour les objets et BigCraftable. La valeur par défaut est 1 ;
« Qualité » : 2 // La valeur de qualité de l'article à livrer. Utilisé uniquement pour les objets. 0 = aucune, 1 = argent, 2 = or, 4 = iridium. La valeur par défaut est 0 ;
            }
],
"Recette" : "Nom de la recette", // Supprimez la ligne si vous ne souhaitez pas joindre de recette au message. Cela ne fonctionnera que si vous n'avez pas d'autres pièces jointes. Pour les recettes DGA, utilisez uniquement la partie ID (ignorez le ModID).
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // Utilisez ceci pour ajouter du texte supplémentaire à la liste MailReceived. Cela peut être utile pour ajouter des indicateurs de type "vanilla" ou d'autres identifiants de lettre MFM.
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], // Texte à supprimer de la liste MailReceived. Ceci peut être utilisé pour déclencher de nouveaux messages, des événements, des indicateurs de validation, et empêcher l'envoi d'autres messages MFM…
"LetterBG": "CustomLetterBG.png", // Nom du fichier de votre pack de contenu contenant l'arrière-plan de lettre personnalisé à utiliser. Il doit suivre la même structure que le fichier LetterBG du jeu. WhichBG sera relatif à ce fichier pour cette lettre. Si ce paramètre est nul ou supprimé, le mod utilisera le LetterBG du jeu.
"WhichBG" : 0, // L'identifiant de l'arrière-plan de la lettre. 0 = classique, 1 = bloc-notes, 2 = pyramides
"TextColor": -1, // Supprimez cette ligne pour utiliser la couleur par défaut. Elle sera ignorée si une couleur de texte personnalisée est définie. -1 = Rouge foncé, 0 = Noir, 1 = Bleu ciel, 2 = Rouge, 3 = Bleu violet, 4 = Blanc, 5 = Rouge orangé, 6 = Vert citron, 7 = Cyan, 8 = Gris foncé
"CustomTextColorName": "White", //La couleur du texte.[http://www.foszor.com/blog/xna-color-chart/] La propriété TextColor sera utilisée par défaut.
"UpperRightCloseButton": "CustomCloseButton.png", // Nom du fichier de votre pack de contenu contenant le bouton de fermeture personnalisé à utiliser. Il doit être de 12 x 12. Si la valeur est nulle ou supprimée, le bouton par défaut sera utilisé.
"ReplyConfig": { // Si vous souhaitez que le joueur envoie une réponse après avoir lu la lettre, les options de réponse s'afficheront et ajouteront un ou plusieurs « ReceivedMail » en fonction de la réponse du joueur. Toute logique supplémentaire liée à la réponse doit être implémentée en fonction du ReceivedMail ajouté.
"QuestionKey": "MyMod.MyMailId.Question", //Une clé pour identifier votre question. Elle est à usage interne uniquement, mais doit être unique dans votre pack de contenu pour éviter les conflits entre les réponses.
"QuestionDialog": "Envoyer une réponse en choisissant votre récompense :", //Votre question ou texte qui s'affichera au-dessus des options de réponse. Si un fichier de traduction est fourni, vous devez indiquer une clé de traduction ici.
« Réponses » : [
                {
"ReplyKey": "MyMod.MyMailId.Reply1", //Doit être unique entre les réponses à la question.
"ReplyOptionDialog": "Je veux des graines.", //Le texte de l'option qui s'affichera dans la liste des réponses. Si un fichier de traduction est fourni, vous devez indiquer une clé de traduction ici.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Exige qu'un des e-mails ait été reçu. La liste des jeux contient également d'autres éléments qui ne sont pas des e-mails, comme les indicateurs du centre communautaire. La valeur par défaut est null, ce qui signifie qu'aucun e-mail n'est requis.
"RequireAllMailReceived": false, // Si la valeur est true, tous les e-mails de la liste « RequireMailReceived » doivent avoir été reçus. La valeur par défaut est false.
"MailReceivedToAdd": [ "MyMod.MyMailId.PlayerSeedOption" ], // Texte à ajouter à la liste MailReceived. Cela peut servir à déclencher de nouveaux messages, des événements, des indicateurs de validation, ou à empêcher l'envoi d'autres messages MFM.
"MailReceivedToRemove": [ "MyMod.MyMailId.PlayerSapplingOption" ], // Texte à supprimer de la liste MailReceived. Ceci peut être utilisé pour déclencher de nouveaux messages, des événements, des indicateurs de validation, et empêcher l'envoi d'autres messages MFM...
"ReplyResponseDialog": "Votre lettre de demande de semences a été envoyée." // Texte qui s'affichera après avoir sélectionné cette option de réponse. Si un fichier de traduction est fourni, vous devez indiquer une clé de traduction ici.
Coût : 50 // Le montant d'argent dont le joueur a besoin pour choisir cette option. S'il la choisit, ce montant est immédiatement déduit de son argent. Proposez toujours une option gratuite, sinon vous risquez de bloquer le joueur.
                }
            ]
},
"Répétable" : faux, // Si la valeur est vraie, le mod ne vérifiera pas si l'identifiant de la lettre a déjà été fourni. La valeur par défaut est faux.
"AutoOpen": false, // Si la valeur est true, le mod ouvrira la lettre en début de journée, une fois les conditions remplies. L'identifiant de la lettre sera marqué comme lu et, si une recette est définie, elle sera apprise. Comme la lettre ne s'affichera jamais, les propriétés visuelles comme le titre, le texte, l'arrière-plan, etc., ne seront jamais utilisées, tout comme les pièces jointes.
// CONDITIONS DE LIVRAISON
//Voici les conditions de livraison. Supprimez les lignes si vous ne souhaitez pas les vérifier.
"Date" : "10 printemps Y1", // Doit être cette date ou une date ultérieure. Le format est « [1-28] [printemps|été|automne|hiver] Y[1-999] ».
"Jours" : [7,14,21,28], // Doit être l'un des jours de la liste.
"Saisons" : ["automne"], // Doit être l'une des saisons de la liste. [printemps|été|automne|hiver]
"Météo" : "ensoleillé", // Doit correspondre à la météo du match. Le format est "[ensoleillé|pluvieux]".
"HouseUpgradeLevel": 2, // Le niveau de mise à niveau de la maison doit être égal ou supérieur à ce qui est défini. 0 - maison de départ (aucune raison d'utiliser ceci, supprimez simplement la ligne), 1 - cuisine, 2 - deuxième étage, 3 - cave.
"DeepestMineLevel": 80, // Le niveau de la mine la plus profonde doit être égal ou supérieur à ce qui est défini. 120 est le dernier niveau de la mine, 121 est le premier niveau de la caverne du crâne.
"CurrentMoney": 10000, // L'argent actuel doit être égal ou supérieur à ce qui est défini.
"TotalMoneyEarned" : 500000, // L'argent total gagné doit être égal ou supérieur à ce qui est défini.
"FriendshipConditions": // Chaque PNJ de la liste doit vérifier toutes les conditions.
        [
            {
"NpcName": "Lewis", //Nom du PNJ. Possibilité d'utiliser des PNJ personnalisés.
"FriendshipLevel": 8, // Le PNJ doit avoir un niveau d'amitié égal ou supérieur à celui défini. La valeur par défaut est 0.
"FriendshipStatus": ["Dating","Engaged","Married"] // [Friendly|Dating|Engaged|Married|Divorced] Exige que le statut d'amitié du PNJ soit un statut de la liste. Supprimez-le pour ne pas exiger de statut.
            }
],
"SkillConditions": // Chaque compétence de la liste doit avoir un niveau égal ou supérieur à celui défini. Toutes les compétences codées du jeu standard peuvent être utilisées, y compris Chance. Les compétences personnalisées ne sont pas autorisées.
        [
{ "SkillName": "Agriculture", "SkillLevel": 1 }
],
"StatsConditions" : // Chaque statistique de la liste doit avoir une valeur supérieure ou égale à celle définie. Choisissez un StatsName ou un StatsLabel.
        [
            {
"StatsName": "FromageFabriqué", //[GrainesSemées|ArticlesExpédiés|ArticlesCuits|ArticlesFabriqués|ŒufsDePoulePondus|ŒufsDeCanardPondus|LaitDeVacheProduit|LaitDeChèvreProduit|LaineDeLapinProduite|LaineDeMoutonProduite|FromageFabriqué|FromageDeChèvreFabriqué|TruffesTrouvées|PierresRécoltées|RochersConcassés|SaletéSauvée|CadeauxOfferts|NombreDePertesInconscientes|HeureMoyenneDeCoucher|NombreDePêches|PoissonsPêchés|RochersFêlés|SouchesHachées|PasFaits|MonstresTués|DiamantsTrouvés|Prismatiques ardsTrouvés|AutresPierresPrécieusesTrouvées|CarottesDeGrotteTrouvées|CuivreTrouvé|FerTrouvé|CharbonTrouvé|PiècesTrouvées|OrTrouvé|IridiumTrouvé|BarresFondues|BoissonsFabriquées|ConservesFabriquées|MorceauxDeDéchetsRecyclés|PierresMystiquesÉcrasées|JoursDeJoué|Mauvaises HerbesÉliminées|BâtonsHachés|NotesTrouvées|QuêtesTerminées|NiveauÉtoileRécoltesExpédiées|RécoltesExpédiées|ObjetsCueillis|SlimesTués|GéodesFêlées|BonsAmis|ArgentIndividuelGagné] La valeur par défaut est null.
"StatsLabel": "Name", // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] Voici les statistiques actuelles du jeu, identifiées par une étiquette. Si d'autres sont ajoutées, elles devraient également être prises en charge. Cela identifiera également les étiquettes de statistiques personnalisées ajoutées par d'autres mods. La valeur par défaut est nulle.
"Montant" : 1 // Le montant auquel le statut doit être égal ou supérieur pour que la condition soit valide.
            }
],
"CollectionConditions": // Chaque condition de collecte de la liste doit avoir une valeur égale ou supérieure au montant défini.
        [
            {
"Collection" : "Expédié", //[Expédié|Poisson|Artefacts|Minéraux|Cuisine|Artisanat] Requis.
"Nom" : "Huile", // Obsolète, utilise des identifiants. Nom de l'objet ou de la recette de la collection « Artisanat ». S'il ne s'agit pas d'une collection d'artisanat, ce nom sera recherché dans la liste d'objets pour trouver l'index. Si le nom est introuvable, la lettre est ignorée. La propriété sera combinée avec les autres propriétés. La valeur par défaut est nulle.
"Index" : 211, // Obsolète, utilise plutôt les identifiants. Index de l'objet. Se combine avec les autres propriétés. La valeur par défaut est null.
"Ids" : [ "282", "MossSoup" ], // Identifiants des objets ou noms des recettes de fabrication. Ces valeurs seront combinées avec les autres propriétés. Les quantités sont additionnées pour être comparées à la propriété Quantité.
"Montant" : 10 // Le montant total auquel les objets de la collection doivent être égaux ou supérieurs pour que la condition soit valide.
            }
],
"SpecialDateCondition" : // Doit être cette date ou après.
        {
"SpecialDate": "Naissance", //[Mariage|Naissance] Obligatoire
"YearsSince": 1, //Nombre d'années écoulées depuis la date. 0 correspond à la date réelle, 1 à l'année écoulée. La valeur par défaut est 0.
"WhichChild": 1 //Si la propriété SpecialDate est ChildBirth, elle fera référence à quel enfant. La valeur par défaut est 1 ;
},
"ExpandedPrecondition": "d Mon Fri/HasItem Pink Cake/!JojaMartComplete/!w rainy", // Nécessite le module Utilitaire Expanded Preconditions. Consultez la documentation de ce module pour comprendre son fonctionnement. Si le module n'est pas chargé, la lettre ne sera pas livrée.
"ExpandedPreconditions": [ "!z spring/t 600 1000", "f Linus 1000/w rainy/z spring", "f Linus 2500" ], // Nécessite le module Utilitaire Expanded Preconditions. Consultez la documentation de ce module pour comprendre son fonctionnement. Si le module n'est pas chargé, la lettre ne sera pas livrée.
"RandomChance": 0.25, // Le mod vérifie si un nombre aléatoire compris entre 0 et 1 est inférieur au nombre donné. Une même sauvegarde, effectuée le même jour et pour la même lettre, produira toujours le même résultat afin d'éviter toute triche.
"Bâtiments" : ["Coop", "Big Coop", "Deluxe Coop"], // Nécessite qu'un des bâtiments soit actuellement construit dans la ferme.
"RequireAllBuildings": false, // Si la valeur est true, tous les bâtiments de la liste « Bâtiments » doivent être actuellement construits dans la ferme. La valeur par défaut est false.
"MailReceived": ["jojaVault","ccVault"], // Exige qu'un des messages ait été reçu. La liste des jeux contient également d'autres éléments qui ne sont pas du courrier, comme les drapeaux du centre communautaire.
"RequireAllMailReceived": false, // Si la valeur est true, tous les e-mails de la liste « MailReceived » doivent avoir été reçus. La valeur par défaut est false.
"MailNotReceived": ["jojaVault","ccVault"], // Exige que les e-mails n'aient pas été reçus. La liste des jeux contient également d'autres éléments qui ne sont pas des e-mails, comme les drapeaux du centre communautaire.
"EventsSeen": [ "4", "32423" ], // Exige que l'un des événements ait été vu par le joueur. Doit être une chaîne, mais peut également fonctionner comme un entier pour la compatibilité rétro.
"RequireAllEventsSeen": false, // Si la valeur est true, tous les événements de la liste « EventsSeen » doivent avoir été vus par le joueur. La valeur par défaut est false.
"HasMods": [ "SMAPI.ConsoleCommands", "SMAPI.SaveBackup" ], // Nécessite le chargement d'un des mods. Doit correspondre à l'ID unique du mod.
"RequireAllMods": false, // Si vrai, exige que tous les mods de la liste "HasMods" soient chargés. La valeur par défaut est false.
"EventsNotSeen": [ "4", "32423" ], // Exige que les événements n'aient pas été vus par le joueur. Doit être une chaîne, mais peut également fonctionner comme un entier pour la compatibilité rétro.
"RecipeKnown": ["Pizza","Survival Burger"], // Exige que l'une des recettes ait été apprise par le joueur.
"RequireAllRecipeKnown": false, // Si la valeur est true, le joueur doit avoir appris toutes les recettes de la liste « RecipeKnown ». La valeur par défaut est false.
"RecipeNotKnown": ["Wild Bait"], // Exige que les recettes n'aient pas été apprises par le joueur.
"KeepValid": false // Si cette option est vraie, une fois les conditions remplies, le courrier reste valide jusqu'à sa lecture. La valeur par défaut est false.
    }
]


Pour que Modder utilise l'API :
  • CopieIMailFrameworkModApiinterface avec la méthode que vous souhaitez utiliser à partir de l'interface MFM.
  • CopieLettre Isi l'une des méthodes en a besoin.
  • Méthodes :
    • RegisterContentPack- UtiliserHelper.ContentPacks.CreateTemporaryPour charger un dossier depuis votre mod contenant le fichier mail.json et éventuellement le dossier i18n pour les traductions. Le manifeste n'est pas nécessaire, car vous pouvez utiliser ce paramètre de méthode.
    • Lettre d'inscription- Remplissez une ILetter avec les propriétés nécessaires. Une condition est également requise pour enregistrer une lettre. Un rappel est recommandé, afin d'ajouter au moins l'identifiant de la lettre reçue. Voir les exemples ci-dessous, à la page « »Pour que les moddeurs codent avec la dépendance MFM" session.
    • Obtenir une lettre- Vous obtiendrez l'objet ILetter pour l'ID de la lettre.
    • GetMailDataString- Vous obtiendrez la chaîne de données de courrier correspondant à l'identifiant de la lettre. Cette chaîne est composée du texte traduit et du titre traduit, séparés par un [#].

Pour que les moddeurs codent avec la dépendance MFM :
  • Référencez MailFrameworkMod.dll sur votre projet SMAPI.
    • Vous enregistrez votre lettre en utilisant MailRepository.SaveLetter(Letter)
    • Au début de chaque journée, le mod vérifiera les lettres qui ont atteint leur état de livraison et les ajoutera à la boîte aux lettres.
    • Ces lettres seront ouvertes en premier lorsque le joueur vérifiera la boîte aux lettres.
    • Lorsque la lettre est ouverte, elle est retirée de la boîte aux lettres.
    • La condition de rappel de la lettre est alors appelée.
    • À la fin de la journée, les lettres encore présentes dans la boîte aux lettres seront supprimées, elles ne seront donc pas sauvegardées par le jeu.
  • Vous pouvez considérer ce mod comme un dépôt pour vos lettres. Il est plus efficace si vous chargez toutes vos lettres au chargement du jeu.


Exemples :

Becquet:
Montrer

Chargement d'une lettre simple qui s'affichera pour le joueur si elle n'a pas été lue auparavant, et qui ne sera plus délivrée après avoir été ouverte par le joueur :
MailRepository.SaveLetter(
nouvelle lettre(
« LetterUniqueId »
« Lettre texte personnalisé ».
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);


Chargement d'une lettre simple comme avant, mais avec 5 Émeraudes annexées :
MailRepository.SaveLetter(
nouvelle lettre(
« LetterUniqueId »
« Lettre texte personnalisé ».
,nouvelle liste<élément> { nouveau StardewValley.Object(60,5) }
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
  )
);

Le joueur ne recevra pas le même objet, mais une copie renvoyée par la méthode getOne().

Chargement d'une lettre simple qui apprend une recette de cuisine. Elle sera envoyée si le joueur ne la connaît pas. Le mod apprend automatiquement les recettes au chargement ; aucun rappel n'est nécessaire ici :
MailRepository.SaveLetter(
nouvelle lettre(
« LetterUniqueId »
« Texte personnalisé de la lettre. »
, "NomUniqueDeLaRecette"
, (l) => !Game1.player.cookingRecipes.ContainsKey(l.Recipe)
  )
);

Le « RecipeUniqueName » doit être le même que celui stocké dans « Data//CookingRecipes » ou « Data//CraftingRecipes ».

Chargement d'une lettre simple avec un texte et un arrière-plan différents :
MailRepository.SaveLetter(
nouvelle lettre(
« LetterUniqueId »
« Lettre texte personnalisé ».
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
1
){TextColor=8}
);


Chargement d'une lettre simple avec un arrière-plan personnalisé :
MailRepository.SaveLetter(
nouvelle lettre(
« LetterUniqueId »
« Lettre texte personnalisé ».
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,Game1.player.mailReceived.Add(l.Id)
1
){
LetterTexture=helper.Content.Load("CustomLetterBG.png")
,TextColor=4
  }
);
Où CustomLetterBG.png est un fichier image qui suit la même structure que « LooseSprites//letterBG »

Chargement d'une lettre simple avec traduction du texte et du titre.
MailRepository.SaveLetter(
nouvelle lettre(
« LetterUniqueId »
,"myletter.translation.key.text"
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
){
Titre = "myletter.translation.key.title",
I18N = aide.Traduction
    }
);



Mes autres mods :

Meilleurs mods pour Stardew Valley

Découvrez les meilleurs mods pour Stardew Valley qui apportent de nouvelles fonctionnalités, des graphismes améliorés et des façons passionnantes de transformer votre expérience de jeu.

Déverrouillez tout le potentiel de Stardew Valley avec XMODhub — explorez ces meilleurs mods dès aujourd’hui !

mcafee
Authentification
Fiable pour 200,000,000+ utilisateurs

Besoin d’aide pour le téléchargement ou l’installation ? Rejoignez notre communauté Discord pour obtenir de l'aide!

logo
Langue

Solutions de jeu

Ressources

Partenaires

Suivez-nous sur

discordfacebooktwitteryoutube
Support:
support@xmodhub.com
Xmod_Lily
Affaires:
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