

[
{
"Id": "MyMod.MyMailId", // ID lettera. È importante che sia una stringa univoca per evitare conflitti. Inoltre, non dovrebbe contenere spazi.
"GroupId": "MyMod.MyGroupId", // ID gruppo lettere. Le lettere con lo stesso ID gruppo non vengono mai consegnate nello stesso giorno. Le lettere registrate per prime hanno la priorità, a meno che l'ID gruppo non termini con ".Random", nel qual caso verrà scelta una lettera casuale. Il valore predefinito è null.
"Titolo": "Titolo della mia lettera", // Titolo della lettera. Verrà visualizzato nel menu delle raccolte. Impostalo su null o rimuovi la riga se non desideri che la lettera appaia nella raccolta. Se viene fornito un file di traduzione, dovresti inserire qui una chiave di traduzione, ma puoi comunque lasciare null per non visualizzare alcun titolo.
"Testo": "Caro @^Questa è la mia email personalizzata.", // Testo della lettera. Puoi usare @ per inserire il nome del giocatore e ^ per le interruzioni di riga. Puoi anche usare i comandi del gioco base per aggiungere denaro, oggetti e altro. Se viene fornito un file di traduzione, dovresti inserire qui una chiave di traduzione.
"RandomlyChooseAttachment": 2, // Se viene impostato un numero, verrà scelto casualmente quel numero di elementi dall'elenco degli allegati, per gruppo. Il valore predefinito è null.
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // Se qui vengono impostati un gruppo e una quantità, per selezionare gli elementi verrà utilizzata quella quantità anziché quella impostata su RandomlyChooseAttachment. Il valore predefinito è vuoto.
"AttachmentGroupWithReplacement": [ "CaveItems" ], // Per impostazione predefinita, gli allegati vengono scelti casualmente da un elenco senza sostituzione. Se si desidera che la selezione venga effettuata sostituendo gli allegati, aggiungere il gruppo all'elenco. Se non sono stati aggiunti gruppi, utilizzare una stringa vuota. Il valore predefinito è un elenco vuoto.
"Allegati": [ // Elenco degli allegati. Rimuovi la proprietà per non allegare elementi alla mail.
{
"Type": "Object", // [Object|BigCraftable|Tool|Ring|Furniture|Weapon|Boots|DGA|QualifiedItemId|None] Obbligatorio. Il tipo di oggetto che verrà allegato. Se non specificato, l'oggetto verrà ignorato. 'None' viene sempre inserito senza errori nel registro e dovrebbe essere utilizzato quando si desidera una probabilità di non aggiungere un allegato.
"Name": "Cave Carrot", // Utilizzato per trovare l'indice dell'elemento. Obbligatorio se si utilizzano oggetti personalizzati come quelli JSON Assets. Dovrebbe essere l'ID DGA completo se si utilizza DGA. Se non specificato, verrà utilizzato l'indice. Il valore predefinito è null.
"Indice": "(0)78", // L'indice di un elemento. Dovrebbe essere l'ID dell'elemento qualificato come stringa, ma funzionerà anche come numero intero per compatibilità retroattiva. Se non viene fornito alcun nome o non viene trovato un elemento per il nome, viene utilizzato l'indice. In caso contrario, l'allegato viene ignorato. Ignorato se il tipo è DGA.
"Stack": 1, // Il valore dello stack dell'oggetto da consegnare. Utilizzato solo per oggetti e BigCraftable. Il valore predefinito è 1.
"Qualità": 2, // Il valore di qualità dell'articolo da consegnare. Utilizzato solo per gli oggetti. 0 = nessuno, 1 = argento, 2 = oro, 4 = iridio. Il valore predefinito è 0;
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Richiede che una delle email sia stata ricevuta. L'elenco dei giochi contiene anche altre cose che non sono email, come le bandiere del centro comunitario. Il valore predefinito è null per non richiedere la ricezione di un'email.
"RequireAllMailReceived": false, // Se true, richiede che tutte le email nell'elenco "RequireMailReceived" siano state ricevute. Il valore predefinito è false.
"ProbabilityWeight": 1, // Il peso che questo allegato ha quando si sceglie quale consegnare. Il mod somma tutti i pesi in un dato gruppo e gli assegna una probabilità dividendo questo peso per il totale. Il valore predefinito è 1.
"RandomGroup": "CaveItems" // Quando si scelgono gli elementi in modo casuale, raggruppa l'elenco in base ai gruppi trovati e seleziona la quantità impostata da ciascun gruppo. Il valore predefinito è una stringa vuota che funge da gruppo predefinito.
},
{
"Tipo": "Strumento", // Quando si utilizza uno strumento, è possibile allegare solo quelli supportati.
"Nome": "Ascia", // [Ascia|Zappa|Annaffiatoio|Piccone|Falce|Falce d'oro|Secchio del latte|Forbici|Canna da pesca|Padella|Scettro di ritorno] Obbligatorio per gli strumenti. Il nome dello strumento supportato. In caso contrario, l'allegato viene ignorato.
"UpgradeLevel": 1 // Il livello di potenziamento dello strumento. Strumenti normali: 0 = pietra, 1 = rame, 2 = acciaio, 3 = oro, 4 = iridio. Canna da pesca: 0 = canna di bambù, 1 = canna da allenamento, 2 = canna in fibra di vetro, 3 = canna in iridio. Ignorato per gli altri tipi. Il valore predefinito è 0.
},
{
"Tipo": "DGA", //elemento DGA
"Name": "spacechase0.DynamicGameAssets.Example/My Custom Item", // usa l'ID DGA completo. Obbligatorio.
"Stack": 10, // Il valore dello stack dell'oggetto da consegnare. Utilizzato solo per oggetti e BigCraftable. Il valore predefinito è 1.
"Qualità": 2 // Il valore di qualità dell'oggetto da consegnare. Utilizzato solo per gli oggetti. 0 = nessuno, 1 = argento, 2 = oro, 4 = iridio. Il valore predefinito è 0;
},
{
"Type": "QualifiedItemId", //Qualsiasi elemento supportato
"Indice": "(0)78", // L'ID articolo qualificato di un articolo.
"Stack": 10, // Il valore dello stack dell'oggetto da consegnare. Utilizzato solo per Oggetti e BigCraftable. Il valore predefinito è 1;
"Qualità": 2 // Il valore di qualità dell'oggetto da consegnare. Utilizzato solo per gli oggetti. 0 = nessuno, 1 = argento, 2 = oro, 4 = iridio. Il valore predefinito è 0;
}
],
"Recipe": "Nome della ricetta", // Rimuovi la riga se non vuoi allegare una ricetta all'email. Funzionerà solo se non hai altri allegati all'email. Per le ricette DGA, usa solo la parte ID (ometti il ModID)
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // Utilizzare questo per aggiungere testo aggiuntivo all'elenco MailReceived. Può essere utile per aggiungere flag vanilla o altri ID lettera MFM.
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], //Testo da rimuovere dall'elenco MailReceived. Può essere utilizzato per attivare nuove email, eventi, flag vanilla, impedire l'invio di altre email MFM...
"LetterBG": "CustomLetterBG.png", // Nome del file nel tuo pacchetto di contenuti che contiene lo sfondo personalizzato della lettera da utilizzare. Dovrebbe seguire la stessa struttura del file LetterBG del gioco. WhichBG sarà relativo a questo file per questa lettera. Se nullo o rimosso, la mod utilizzerà il file LetterBG del gioco.
"WhichBG": 0, //L'ID dello sfondo della lettera. 0 = classico, 1 = blocco note, 2 = piramidi
"TextColor": -1, //Rimuovere questa riga per utilizzare il colore predefinito. Verrà ignorato se è impostato un CustomTextColor. -1 = Rosso scuro, 0 = Nero, 1 = Blu cielo, 2 = Rosso, 3 = Blu viola, 4 = Bianco, 5 = Rosso arancione, 6 = Verde lime, 7 = Ciano, 8 = Grigio più scuro
"CustomTextColorName": "Bianco", //Il colore del testo.[http://www.foszor.com/blog/xna-color-chart/] Per impostazione predefinita verrà utilizzata la proprietà TextColor.
"UpperRightCloseButton": "CustomCloseButton.png", // Nome del file nel pacchetto di contenuti che contiene il pulsante di chiusura personalizzato da utilizzare. Dovrebbe essere 12 x 12. Se nullo o rimosso, verrà utilizzato il pulsante predefinito.
"ReplyConfig": { // Se si desidera che il giocatore invii una risposta dopo aver letto la lettera, verranno mostrate le opzioni di risposta che aggiungeranno uno o più "ReceivedMail" in base alla risposta del giocatore. Qualsiasi logica aggiuntiva relativa alla risposta deve essere implementata in base al ReceivedMail aggiunto.
"QuestionKey": "MyMod.MyMailId.Question", //Una chiave per identificare la tua domanda. Ha solo uso interno, ma dovrebbe essere univoca nel tuo pacchetto di contenuti per evitare conflitti tra le risposte.
"QuestionDialog": "Invia una risposta scegliendo la tua ricompensa:", //La tua domanda o il testo che verrà visualizzato sopra le opzioni di risposta. Se viene fornito un file di traduzione, dovresti inserire qui una chiave di traduzione.
"Risposte": [
{
"ReplyKey": "MyMod.MyMailId.Reply1", //Deve essere univoco tra le risposte alle domande.
"ReplyOptionDialog": "Voglio i seed.", //Il testo dell'opzione che verrà visualizzato nell'elenco delle risposte. Se viene fornito un file di traduzione, è necessario inserire qui una chiave di traduzione.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Richiede che una delle email sia stata ricevuta. L'elenco dei giochi contiene anche altre cose che non sono email, come le bandiere del centro comunitario. Il valore predefinito è null per non richiedere la ricezione di un'email.
"RequireAllMailReceived": false, // Se true, richiede che tutte le email nell'elenco "RequireMailReceived" siano state ricevute. Il valore predefinito è false.
"MailReceivedToAdd": [ "MyMod.MyMailId.PlayerSeedOption" ], // Testo da aggiungere all'elenco MailReceived. Può essere utilizzato per attivare nuove email, eventi, flag vanilla, impedire l'invio di altre email MFM...
"MailReceivedToRemove": [ "MyMod.MyMailId.PlayerSapplingOption" ], //Testo da rimuovere dall'elenco MailReceived. Può essere utilizzato per attivare nuove email, eventi, flag vanilla, impedire l'invio di altre email MFM...
"ReplyResponseDialog": "La tua lettera di richiesta di semi è stata inviata.", //Testo che verrà visualizzato dopo aver scelto questa opzione di risposta. Se viene fornito un file di traduzione, è necessario inserire qui una chiave di traduzione.
"Costo": 50 //La quantità di denaro che il giocatore deve avere per scegliere questa opzione. Se la sceglie, tale importo viene immediatamente sottratto dal denaro del giocatore. Fornisci sempre un'opzione senza costi, altrimenti potresti bloccare il giocatore.
}
]
},
"Ripetibile": false, // Se true il mod non verificherà che l'ID della lettera sia già stato consegnato. Il valore predefinito è false.
"AutoOpen": false, // Se true, il moderatore aprirà la lettera all'inizio del giorno, dopo che le condizioni saranno soddisfatte. L'ID della lettera verrà contrassegnato come letto e, se è impostata una ricetta, verrà appreso. Poiché la lettera non verrà mai visualizzata, le proprietà visive come titolo, testo, sfondo... non verranno mai utilizzate, così come gli allegati.
// CONDIZIONI DI CONSEGNA
//Di seguito sono riportate le condizioni per la consegna. Rimuovere le righe desiderate se non si desidera verificare tale condizione.
"Data": "10 primavera Y1", // Deve essere quella data o una successiva. Il formato è "[1-28] [primavera|estate|autunno|inverno] Y[1-999]".
"Giorni": [7,14,21,28], // Deve essere uno dei giorni nell'elenco.
"Stagioni": ["autunno"], // Deve essere una delle stagioni nell'elenco. [primavera|estate|autunno|inverno]
"Meteo": "soleggiato", // Deve essere il meteo della partita. Il formato è "[soleggiato|piovoso]".
"HouseUpgradeLevel": 2, // Il livello di miglioramento della casa deve essere uguale o superiore a quanto definito. 0 - casa iniziale (non c'è motivo di usarlo, basta rimuovere la riga), 1 - cucina, 2 - secondo piano, 3 - cantina.
"DeepestMineLevel": 80, // Il livello più profondo della miniera deve essere uguale o superiore a quanto definito. 120 è l'ultimo livello della miniera, 121 è il primo livello della caverna del teschio.
"CurrentMoney": 10000, // Il denaro corrente deve essere uguale o superiore a quanto definito.
"TotalMoneyEarned": 500000, // Il denaro totale guadagnato deve essere uguale o superiore a quanto definito.
"FriendshipConditions": // Ogni PNG della lista deve verificare tutte le condizioni.
[
{
"NpcName": "Lewis", //Nome del PNG. È possibile utilizzare PNG personalizzati.
"FriendshipLevel": 8, // Il PNG deve avere un livello di cuore dell'amicizia uguale o superiore a quello definito. Il valore predefinito è 0.
"FriendshipStatus": ["Incontri","Fidanzati","Sposati"] // [Amichevole|Incontri|Fidanzati|Sposati|Divorziati] Richiede che lo stato di amicizia del PNG sia uno dell'elenco. Rimuovi per non richiedere uno stato.
}
],
"SkillConditions": // Ogni abilità dell'elenco deve avere un livello uguale o superiore a quello definito. È possibile utilizzare tutte le abilità codificate nel gioco originale, inclusa la Fortuna. Non è possibile utilizzare abilità personalizzate.
[
{ "SkillName": "Agricoltura", "SkillLevel": 1 }
],
"StatsConditions": // Ogni statistica dell'elenco deve avere un valore uguale o superiore a quello definito. Scegli uno StatsName o uno StatsLabel
[
{
"StatsName": "CheeseMade", //[SemiSeminati|OggettiSpediti|OggettiCucinati|OggettiLavorati|Uova di Gallina Deposte|Uova di Anatra Deposte|Latte di Mucca Prodotto|Latte di Capra Prodotto|Lana di Coniglio Prodotta|Lana di Pecora Prodotta|Formaggio Prodotto|Formaggio di Capra Prodotto|Tartufi Trovati|Pietre Raccolte|Rocce Schiacciate|Terra Zappata|Regali Fatti|Tempi di Incoscienza|Ora Media di Andare a Letto|Tempi di Pesca|Pesce Pescato|Massi Spaccati|Ceppi Tagliati|Passi Intrapresi|Mostri Uccisi|Diamanti Trovati|PrismaticSh ardsFound|OtherPreciousGemsFound|CaveCarrotsFound|CopperFound|IronFound|CoalFound|CoinsFound|GoldFound|IridiumFound|ButterflySmelted|BeveragesMade|PreservesMade|PiecesOfTrashRecycled|MysticStonesCrushed|DaysPlayed|WeedsEliminates|SticksChopped|NotesFound|QuestsCompleted|StarLevelCropsSpedited|CropsSpedited|ItemsForaged|SlimeUccise|GeodiCracked|GoodFriends|IndividualMoneyEarned] Il valore predefinito è nullo.
"StatsLabel": "Nome", // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] Queste sono le statistiche di gioco attuali identificate dall'etichetta; se ne vengono aggiunte altre, dovrebbero essere supportate. Identificherà anche le etichette delle statistiche personalizzate aggiunte da altri mod. Il valore predefinito è null.
"Importo": 1 // L'importo a cui lo stato deve essere uguale o maggiore affinché la condizione sia valida.
}
],
"CollectionConditions": // Ogni condizione di raccolta dell'elenco deve avere un valore uguale o superiore all'importo definito.
[
{
"Collezione": "Spedito", //[Spedito|Pesce|Manufatti|Minerali|Cucina|Artigianato] Obbligatorio.
"Nome": "Olio", //Obsoleto, utilizza invece gli ID. Il nome dell'oggetto o della ricetta per la collezione "Creazione". Se non si tratta di una collezione di creazione, cercherà quel nome nell'elenco degli oggetti per trovare l'indice. Se il nome non viene trovato, la lettera viene ignorata. Verrà combinato con le altre proprietà. Il valore predefinito è null.
"Indice": 211, //Obsoleto, utilizza invece gli ID. L'indice dell'oggetto. Verrà combinato con le altre proprietà. Il valore predefinito è null.
"Ids": [ "282", "MossSoup" ], //Gli ID degli oggetti o i nomi delle ricette di creazione. Verranno combinati con le altre proprietà. Le quantità vengono sommate per il confronto con la proprietà Importo.
"Importo": 10 // La quantità totale di oggetti nella raccolta deve essere uguale o maggiore affinché la condizione sia valida.
}
],
"SpecialDateCondition": // Deve essere quella data o una successiva.
{
"SpecialDate": "Nascita", //[Matrimonio|Nascita] Obbligatorio
"YearsSince": 1, //Il numero di anni trascorsi dalla data. 0 corrisponderà alla data effettiva, 1 all'anno corrente. Il valore predefinito è 0.
"WhichChild": 1 //Se la proprietà SpecialDate è ChildBirth, farà riferimento al bambino. Il valore predefinito è 1;
},
"ExpandedPrecondition": "d Mon Fri/HasItem Pink Cake/!JojaMartComplete/!w rainy", //Richiede la mod Expanded Preconditions Utility. Consulta la documentazione della mod per vedere come funziona. Se la mod non è caricata, la lettera non verrà consegnata.
"ExpandedPreconditions": [ "!z spring/t 600 1000", "f Linus 1000/w rainy/z spring", "f Linus 2500" ], //Richiede la mod Expanded Preconditions Utility. Consulta la documentazione della mod per vedere come funziona. Se la mod non è caricata, la lettera non verrà recapitata.
"RandomChance": 0.25, // La mod controllerà se un numero casuale da 0 a 1 è inferiore al numero specificato. Lo stesso salvataggio, nello stesso giorno per la stessa lettera, darà sempre lo stesso risultato per evitare che si bari.
"Edifici": ["Coop","Big Coop","Deluxe Coop"], // Richiede che uno degli edifici sia attualmente in costruzione nella fattoria.
"RequireAllBuildings": false, // Se true, richiede che tutti gli edifici nell'elenco "Buildings" siano attualmente in costruzione nella farm. Il valore predefinito è false.
"MailReceived": ["jojaVault","ccVault"], // Richiede che una delle email sia stata ricevuta. L'elenco dei giochi contiene anche altre informazioni che non sono email, come le bandiere dei centri comunitari.
"RequireAllMailReceived": false, // Se true, richiede che tutte le email nell'elenco "MailReceived" siano state ricevute. Il valore predefinito è false.
"MailNotReceived": ["jojaVault","ccVault"], // Richiede che le email non siano state ricevute. L'elenco dei giochi contiene anche altre informazioni che non sono email, come le bandiere dei centri comunitari.
"EventsSeen": [ "4", "32423" ], // Richiede che uno degli eventi sia stato visto dal giocatore. Dovrebbe essere una stringa, ma funzionerà anche come un numero intero per compatibilità retroattiva.
"RequireAllEventsSeen": false, // Se true, richiede che tutti gli eventi nell'elenco "EventsSeen" siano stati visti dal giocatore. Il valore predefinito è false.
"HasMods": [ "SMAPI.ConsoleCommands", "SMAPI.SaveBackup" ], // Richiede il caricamento di una delle mod. Dovrebbe essere l'ID univoco della mod.
"RequireAllMods": false, // Se true, richiede che tutte le mod nell'elenco "HasMods" siano state caricate. Il valore predefinito è false.
"EventsNotSeen": [ "4", "32423" ], // Richiede che gli eventi non siano stati visti dal giocatore. Dovrebbe essere una stringa, ma funziona anche come un intero per compatibilità retroattiva.
"RecipeKnown": ["Pizza","Survival Burger"], // Richiede che una delle ricette sia stata appresa dal giocatore.
"RequireAllRecipeKnown": false, // Se true, richiede che tutte le ricette nell'elenco "RecipeKnown" siano state apprese dal giocatore. Il valore predefinito è false.
"RecipeNotKnown": ["Wild Bait"], // Richiede che le ricette non siano state apprese dal giocatore.
"KeepValid": false // Se è vero, una volta soddisfatte le condizioni, mantiene valida la mail fino alla lettura. Il valore predefinito è false.
}
]MailRepository.SaveLetter(
nuova lettera(
"LetterUniqueId"
,"Testo personalizzato."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);
MailRepository.SaveLetter(
nuova lettera(
"LetterUniqueId"
,"Testo personalizzato."
,nuovo Elenco { nuovo StardewValley.Object(60,5) }
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);
MailRepository.SaveLetter(
nuova lettera(
"LetterUniqueId"
, "Testo personalizzato."
, "NomeUnivocoRicetta"
, (l) => !Game1.player.cookingRecipes.ContainsKey(l.Recipe)
)
);
MailRepository.SaveLetter(
nuova lettera(
"LetterUniqueId"
,"Testo personalizzato."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
1
){Colore del testo=8}
);
MailRepository.SaveLetter(
nuova lettera(
"LetterUniqueId"
,"Testo personalizzato."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,Game1.player.mailReceived.Add(l.Id)
1
){
LetterTexture=helper.Content.Load("CustomLetterBG.png")
,Colore del testo=4
}
);
Dove CustomLetterBG.png è un file immagine che segue la stessa struttura di "LooseSprites//letterBG"MailRepository.SaveLetter(
nuova lettera(
"LetterUniqueId"
,"myletter.translation.key.text"
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
){
Titolo = "myletter.translation.key.title",
I18N = helper.Traduzione
}
);
Hai bisogno di aiuto per il download o l'installazione? Unisciti al nostroComunità DiscordCerca supporto.
soluzioni di giochi
risorse
richieste di partenariato e supporto
Seguici
Larvas Limited
Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK