logo
it
Italiano

Mod di Mail Framework

Creatore: Digus
Aggiornato:2025-03-28 14:16:59
49KB
mcafee
Verifica
fiducioso da 200,000,000+ utenti

mod pre-richiedente

verrà installato automaticamente quando si utilizza Mod di Mail Framework

Su questo mod

Framework per utilizzare la casella postale in gioco. Comandi della console per regolare la posta. Codice e Content Pack interfacce.
Obiettivo:
Semplifica l'invio di posta al giocatore, dandogli un maggiore controllo su quando e cosa ricevere.
Inoltre, vengono fornite più opzioni non possibili modificando semplicemente i file di dati, come cambiare a piacimento il colore del testo e lo sfondo della lettera.

Installazione:

Registro delle modifiche:

1.20.0
  • Aggiunge una nuova risorsa personalizzata al gioco. (DIGUS.MailFrameworkMod/MailData). Ciò significa che le lettere MFM possono ora essere caricate con Content Patcher e sfruttarne tutte le funzionalità, come i token. Supporta le stesse proprietà.
  • Anche le lettere del pacchetto di contenuti vengono caricate nella nuova risorsa personalizzata e pertanto possono essere modificate con Content Patcher.
  • I pacchetti di contenuti ora vengono caricati in una cache all'avvio del gioco, anziché essere ricaricati ogni volta che si carica un salvataggio. È possibile forzare il ricaricamento dei pacchetti di contenuti tramite il comando della console.
  • Le proprietà Testo e Titolo ora supportano la stringa tokenizzabile.
  • Ora le risorse texture possono essere una risorsa di gioco e non solo una risorsa nella cartella mod.
  • Nuova proprietà GameStateQuery come condizione per recapitare una lettera.
1.19.0
  • Nuova proprietà per mantenere valida una posta una volta che tutte le condizioni sono state soddisfatte per un giorno, ma la posta non è stata letta quel giorno.
  • Nuova funzionalità per gestire gli allegati scelti casualmente
  • Nuova proprietà per impostare la quantità di articoli dall'elenco degli allegati da scegliere per la consegna.
  • Nuova proprietà per impostare un "RandomGroup" su un allegato, in modo che venga scelto da quel gruppo anziché dall'intero elenco.
  • Nuova proprietà per impostare un "Peso" per un dato allegato, quando viene scelto casualmente.
  • Nuova proprietà per impostare quanti elementi devono essere selezionati da un dato gruppo, invece di utilizzare il valore predefinito.
  • Nuova proprietà per indicare se un elemento di un dato gruppo può essere scelto più di una volta.
  • Nuovo set di proprietà per impostare un requisito MailReceived per allegati e risposte
  • Nuova proprietà per impostare un MailReceived da rimuovere quando una lettera viene letta o quando viene selezionata un'opzione di risposta.
  • Nuova proprietà per impostare un costo per una determinata opzione di risposta.
  • Nuovo ItemType "Nessuno". Fondamentalmente da utilizzare quando si desidera una probabilità casuale di non consegnare un articolo, senza che vengano generati errori/avvisi nel registro.
1.18.0
  • Nuova proprietà Ids per sostituire Indice e Nome per CollectionConditions. Può aggregare il conteggio di più elementi, sommandone il valore per confrontarlo con l'importo.
  • Nuova proprietà ReplyConfig per aggiungere un comportamento di risposta. È possibile mostrare un'opzione al giocatore dopo aver letto una mail e questo aggiungerà uno o più testi MailReceived in base all'opzione scelta. È possibile implementare ulteriore logica di mod in base a tale scelta.
  • Correzione della lettera con ricetta che non supporta la proprietà CustomTextColorName.
  • Correzione dell'eccezione di riferimento nullo quando nel gioco veniva caricato un oggetto con nome nullo.
1.17.1
  • Le e-mail con pacchetti di contenuto con proprietà ricetta non devono avere allegati per essere recapitate se la ricetta non è stata appresa. (la proprietà ricetta viene ignorata se sono presenti allegati)
  • Correggi le ricette di cucina con la stessa logica applicata in precedenza alle ricette di creazione.
1.17.0
  • Nuova proprietà per impostare la qualità dell'allegato
  • Le e-mail contenenti i pacchetti di contenuti con la ricetta devono essere reinviate se la ricetta non è stata appresa.
  • Correggi gli avvisi su Slingshot se si utilizza l'ID articolo qualificato.
  • Correggi le ricette per gli oggetti realizzabili consegnate anche se la ricetta era già stata appresa.
  • Per motivi di legacy, se l'ID della ricetta non viene trovato nelle ricette apprese, verrà cercata una ricetta che crei un elemento con il nome dell'ID della ricetta.
1.16.1
  • Correzione del nome tradotto della ricetta.
1.16.0
  • Aggiorna la mod per renderla compatibile con Stardew Valley 1.6
  • Nuovo comando per ricaricare i pacchetti di contenuti
  • Cambiato il nome di MailDao in MailRepository. (Riguarda solo i mod SMAPI che lo utilizzano)
  • Nuovo tipo di oggetto 'QualifiedItemId' per gli allegati, dovrebbe funzionare per ogni tipo di oggetto nel gioco se si utilizza la qualificazione corretta.
  • Nuova proprietà per date speciali. (Matrimonio e Parto)
  • Nuova proprietà per CustomTextColor, quella vecchia è obsoleta.
  • Nuova proprietà HasMods
  • Nuova proprietà RequireAllMods
  • Gli ID degli eventi ora sono stringhe. (I numeri dovrebbero continuare a funzionare)
  • Rimossa la logica obsoleta SV 1.6 incorporata da MFM.
  • Risolto il problema della versione alpha per cui la lettera non si apriva nella pagina di raccolta della posta.
Anticipazione:
Spettacolo
1.15.0
  • Nuova interfaccia API per le mod SMAPI.
  • Metodo API per caricare la cartella del pacchetto di contenuti dall'interno della mod SMAPI.
  • Metodo API per caricare una lettera.
  • Metodo API per ottenere i dati di una lettera.
  • Metodo API per ottenere la stringa di dati di posta di una lettera.
  • Correzione del problema del funzionamento non corretto della casella di posta quando si verifica un errore durante la chiusura della lettera.
  • Meglio segnalare quegli errori.
1.14.0
  • Ulteriori modifiche per la compatibilità con SMAPI 4
  • Nuovo attributo nella classe lettera per impostare ITranslationHelper.
  • Il pacchetto di contenuti non deve cambiare nulla, ma questa modifica dovrebbe evitare alcuni rari problemi di i18n.
  • I mod che utilizzano MFM tramite codice possono aggiornare la loro implementazione.
1.13.0
  • Rendere la mod compatibile con SMAPI 4.
  • Nuova proprietà per il livello della miniera più profonda.
  • Nuova proprietà a prezzo corrente.
  • Nuova proprietà per il totale dei soldi guadagnati.
  • Nuovo comando della console per forzare l'aggiornamento della casella di posta per aiutare i modder a eseguire il debug.
  • Il menu di raccolta delle lettere ora mostra anche il pulsante di chiusura personalizzato.
1.12.2
  • Rendere la mod compatibile con 1.5.5, senza forzare SMAPI a convertirla.
  • Dovrebbe risolvere alcuni problemi con gli allegati che non funzionano sul sistema operativo Unix.
  • Nuova proprietà per il livello di miglioramento della casa.
1.12.1
  • Risolto l'errore quando l'utilità delle precondizioni espanse non veniva caricata.
1.12.0
  • Nuove proprietà per supportare l'uso diPrerequisiti estesi
  • Nuova proprietà che consente di aggiungere testo oltre all'ID della lettera all'elenco MailReceived del giocatore.
1.11.0
  • Supporto per DGA (Dynamic Game Assets) come allegati.
1.10.2
  • Correzione dei nomi delle ricette di cucina in inglese che venivano visualizzati come nulli quando aggiunti tramite Json Assets.
1.10.1
  • Correzione per l'apertura automatica delle lettere senza testo che interrompeva la mod quando erano presenti file i18n.
  • Correzione del problema per cui la lettera del pacchetto di contenuti non veniva caricata dopo un avviso di condizione di raccolta.
  • Aggiunge un nuovo tipo di requisito di raccolta per la creazione di ricette.
1.10.0
  • Ora sono supportati tutti gli strumenti vanilla.
  • Supporto per le fionde vanilla come armi. Se si utilizza l'indice o il nome di una fionda, questa verrà creata correttamente come tale.
  • Nuova proprietà "Apertura automatica", utile quando si desidera utilizzare le condizioni MFM per salvare un ID lettera come letto senza scrivere una lettera vera e propria.
1.9.2
  • Ottimizzazione per il caricamento di risorse da pacchetti di contenuti.
  • Correzione del problema per cui il richiamo delle lettere non veniva eseguito se veniva aperto un menu per aggiungere un elemento all'inventario.
1.9.1
  • Correzione di un bug per cui la lettera MFM non veniva aperta e rimossa dalla casella per il giorno corrente se si teneva in mano un oggetto quando si cliccava sulla casella di posta.
1.9.0
  • Nuova proprietà per la lettera creata con SMAPI per aggiungere elementi in modo dinamico alla lettera.
  • Nuovo metodo per rimuovere le lettere dalla cassetta postale.
1.8.1
  • Correzione per evitare messaggi di posta in conflitto nella cooperativa locale.
  • Correzione di rari casi in cui la mod smetteva di funzionare se un menu di lettere non veniva chiuso correttamente dal gioco.
1.8.0
  • Supporto per mobili, armi e stivali come accessori.
  • Nuova proprietà per impostare il livello di aggiornamento degli strumenti allegati.
1.7.0
  • Supporto per anelli come allegati.
  • Nuove condizioni per le ricette.
  • Nuova proprietà per la personalizzazione dello sfondo con pacchetti di contenuti.
  • Supporto per la personalizzazione del pulsante Chiudi con pacchetto di contenuti e codice.
1.6.0
  • Supporto per i18n nei pacchetti di contenuti.
  • Nuove condizioni di proprietà per gli edifici della fattoria.
  • Nuove proprietà delle condizioni per la posta ricevuta. (utilizzate per i flag delle missioni)
  • Nuove condizioni di proprietà per gli eventi.
  • Nuovo elenco delle condizioni per le voci del menu delle collezioni.
  • Nuovo elenco delle condizioni per le statistiche di gioco.
  • Nuova proprietà per lo stato di amicizia nell'elenco delle condizioni per l'amicizia con i PNG.
  • Nuova funzionalità casuale quando gli ID di gruppo entrano in conflitto.
1.5.1
  • Correzione per le lettere senza ID di gruppo raggruppate.
1.5.0
  • Ora la lettera verrà visualizzata nel menu della collezione se è stato definito un titolo. Anche le texture e i colori personalizzati verranno visualizzati nel menu della collezione.
  • Ora le lettere possono avere un ID gruppo. Le lettere con lo stesso ID gruppo non vengono mai consegnate lo stesso giorno.
  • Nuova condizione per i pacchetti di contenuti: "RandomChance".
  • BigObject ora si chiama BigCraftable, come nel codice del gioco.
  • Correzione degli errori di battitura nel modello.
1.4.1
  • Aggiunge supporto a Stardew Valley 1.4.0
  • Aggiunge la proprietà Titolo per le Lettere da visualizzare nel menu Raccolta. Non è ancora completamente implementata, ma i modder possono iniziare a impostarla.
1.4.0
  • Aggiunge un supporto per pacchetti di contenuti che consente ai modder di aggiungere lettere personalizzate, con configurazioni per tutte le funzionalità fornite da questo framework e con le condizioni di consegna più comuni.
  • Correggi i controller che non funzionano per ottenere gli oggetti collegati.
  • Correzione per visualizzare correttamente gli allegati se la posta contiene più di un elemento allegato.
  • Correzione per impedire la chiusura della lettera se l'inventario è pieno e si apre un menu per gestirlo.
  • Correzione del problema per cui non veniva aggiunta una pila di elementi alla posta, anche quando era configurato per farlo.
  • Aggiunge il supporto a SMAPI 3
1.3.4
  • Aggiunge supporto a Stardew Valley 1.3.36
1.3.3
  • Aggiunge il supporto a SMAPI 3
1.3.2
  • Aggiunge supporto a Stardew Valley 1.3.32
1.3.1
  • Aggiunge comandi per rimuovere e aggiungere all'elenco delle e-mail ricevute dal giocatore.
1.3.0-beta.6
  • Aggiunge supporto alle ricette di creazione
  • Aggiunge supporto allo sfondo personalizzato
  • Aggiunge supporto al colore del testo personalizzato
  • Nuovo modo per aprire una lettera personalizzata, ora utilizzando l'armonia
  • File di configurazione per abilitare il vecchio metodo di apertura delle lettere personalizzate.
1.2.0
  • Supporto per le ricette i18n.
  • Correzione del problema per cui la mod non funzionava correttamente dopo essere tornati al menu del titolo.
  • Correzione per cui la posta non veniva recapitata se la condizione di una lettera generava un'eccezione.
1.1.0
  • Correzione del problema per cui si riceveva la posta "tasse passate" quando si dormiva e si usciva dal gioco senza aver letto una posta personalizzata.
  • Le e-mail personalizzate possono contenere ricette.
  • Questa versione non è compatibile con quella precedente. Per utilizzare questa versione, è necessario aggiornare le mod.
1.0.0
  • Aggiungi email personalizzate
  • Le e-mail personalizzate possono contenere elementi.

Per i Modder che vogliono utilizzare il pacchetto di contenuti:
  • All'interno della cartella mod è presente un modello con istruzioni commentate su cosa fa ogni proprietà.
  • Tutte le caratteristiche delle lettere, ad eccezione delle condizioni e del callback, sono le stesse della codifica con il framework.
  • Le condizioni sono limitate a quelle implementate e la callback imposta sempre l'ID della lettera come ricevuto. Se hai bisogno di condizioni avanzate, dovresti comunque codificarle. Oppure puoi cortesemente suggerirmi di aggiungere una condizione al pacchetto di contenuti: se ha senso, potrei aggiungerla.
  • Ecco il modello aggiunto nel file mod:
Anticipazione:
Spettacolo
[
    {
"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.
    }
]


Per far sì che Modder utilizzi l'API:
  • CopiaIMailFrameworkModApiinterfaccia con il metodo che si desidera utilizzare dall'interfaccia MFM.
  • CopiaLetterase uno dei metodi lo richiede.
  • Metodi:
    • RegisterContentPack- UtilizzoHelper.ContentPacks.CreateTemporaryPer caricare una cartella dal tuo mod che contenga il file mail.json e una possibile cartella i18n per le traduzioni. Il manifesto non è necessario, poiché puoi usare quel parametro del metodo.
    • Lettera di registrazione- Compila una ILetter con le proprietà di cui hai bisogno. È richiesta anche una condizione per registrare una lettera. È consigliabile una callback, per aggiungere almeno l'ID della lettera ricevuta. Vedi esempi qui sotto, su "Per Modder per codificare con dipendenza MFM" sessione.
    • OttieniLettera- Otterrai l'oggetto ILetter per l'ID della lettera.
    • Ottieni stringa dati posta- Otterrai la stringa di dati di posta per l'ID della lettera. La stringa di dati di posta è fondamentalmente il testo tradotto più il titolo tradotto con un separatore [#].

Per Modder per codificare con dipendenza MFM:
  • Fai riferimento a MailFrameworkMod.dll nel tuo progetto SMAPI.
    • Registri la tua lettera utilizzando MailRepository.SaveLetter(Letter)
    • All'inizio di ogni giorno, il moderatore controllerà le lettere che hanno raggiunto la condizione di consegna e le aggiungerà alla cassetta postale.
    • Queste lettere verranno aperte per prime quando il giocatore controllerà la cassetta postale.
    • Una volta aperta, la lettera viene rimossa dalla cassetta postale.
    • La condizione di callback della lettera è chiamata così.
    • Alla fine della giornata le lettere rimaste nella cassetta della posta verranno rimosse, quindi non verranno salvate dal gioco.
  • Puoi pensare a questa mod come a un archivio per le tue lettere. Funziona meglio se carichi tutte le tue lettere quando il gioco si carica.


Esempi:

Anticipazione:
Spettacolo

Caricamento di una semplice lettera che verrà mostrata al giocatore se non è stata letta in precedenza e non verrà più consegnata dopo essere stata aperta dal giocatore:
MailRepository.SaveLetter(
nuova lettera(
"LetterUniqueId"
,"Testo personalizzato."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);


Caricamento di una semplice Lettera come prima, ma con 5 Smeraldi annessi:
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)
  )
);

Il giocatore non riceverà lo stesso oggetto, ma una copia restituita dal metodo getOne().

Caricando una semplice lettera che insegnerà una ricetta di cucina, questa verrà consegnata se il giocatore non la conosce. La mod insegna automaticamente le ricette quando il giocatore carica, senza bisogno di un callback:
MailRepository.SaveLetter(
nuova lettera(
"LetterUniqueId"
, "Testo personalizzato."
, "NomeUnivocoRicetta"
, (l) => !Game1.player.cookingRecipes.ContainsKey(l.Recipe)
  )
);

Il valore "RecipeUniqueName" deve essere lo stesso memorizzato in "Data//CookingRecipes" o "Data//CraftingRecipes".

Caricamento di una lettera semplice con testo e sfondo diversi:
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}
);


Caricamento di una lettera semplice con sfondo personalizzato:
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"

Caricamento di una semplice lettera con traduzione del testo e del titolo.
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
    }
);



Le mie altre mod:

Top Mod per Stardew Valley

esplorare i migliori mod per Stardew Valley che portano nuove funzionalità, visuali aggiornati e modi emozionanti per trasformare la tua esperienza di gameplay.

sblocca il pieno potenziale di Stardew Valley con XMODhub- esplora questi mod top oggi!

mcafee
Verifica
fiducioso da 200,000,000+ utenti

Hai bisogno di aiuto per il download o l'installazione? Unisciti al nostroComunità DiscordCerca supporto.

logo
lingua

soluzioni di giochi

risorse

richieste di partenariato e supporto

Seguici

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