logo
es
Español

Mod del marco de correo

Creador: Digus
Actualizado:2025-03-28 14:16:59
49KB
mcafee
Autenticación
Confiado por 200,000,000+ usuarios

Mods previos requeridos

se instalará automáticamente cuando uses Mod del marco de correo

Acerca de este mod

Marco para usar el buzón en el juego. Comandos de la consola para ajustar el correo. Interfaces de código y paquete de contenido.
Objetivo:
Simplifica el envío de correo al jugador, dándole más control sobre cuándo y qué debe recibirse.
También ofrece más opciones que no son posibles simplemente editando los archivos de datos, como cambiar el color del texto y el fondo de la letra a voluntad.

Instalación:

Registro de cambios:

1.20.0
  • Añade un nuevo recurso personalizado al juego (DIGUS.MailFrameworkMod/MailData). Esto significa que las cartas MFM ahora pueden cargarse con Content Patcher y aprovechar todas sus funciones, como los tokens. Admite las mismas propiedades.
  • Las letras del paquete de contenido también se cargan en el nuevo activo personalizado y, por lo tanto, se pueden editar con Content Patcher.
  • Los paquetes de contenido ahora se cargan en la caché al iniciar el juego, en lugar de recargarse cada vez que se carga la partida guardada. Puedes forzar la recarga de los paquetes de contenido con el comando de consola.
  • Las propiedades de Texto y Título ahora admiten cadenas tokenizables.
  • Los recursos de textura ahora pueden ser un recurso del juego, no solo un recurso en la carpeta del mod.
  • Nueva propiedad GameStateQuery como condición para entregar una carta.
1.19.0
  • Nueva propiedad para mantener un correo válido una vez que se cumplieron todas las condiciones durante un día pero el correo no fue leído ese día.
  • Nueva función para gestionar archivos adjuntos elegidos aleatoriamente
  • Nueva propiedad para establecer cuántos elementos de la lista de adjuntos deben elegirse para la entrega.
  • Nueva propiedad para establecer un "RandomGroup" para un archivo adjunto, de modo que se seleccione de ese grupo en lugar de de la lista completa.
  • Nueva propiedad para establecer un "Peso" para un accesorio determinado, cuando se selecciona aleatoriamente.
  • Nueva propiedad para establecer cuántos elementos se deben elegir de un grupo determinado, en lugar de utilizar el valor predeterminado.
  • Nueva propiedad para indicar si un elemento de un grupo determinado puede elegirse más de una vez.
  • Nuevo conjunto de propiedades para establecer un requisito de MailReceived para archivos adjuntos y respuestas
  • Nueva propiedad para configurar que un MailReceived se elimine cuando se lee una carta o cuando se selecciona una opción de respuesta.
  • Nueva propiedad para establecer un costo para una opción de respuesta determinada.
  • Nuevo tipo de artículo "Ninguno". Se usa básicamente cuando se desea una probabilidad aleatoria de no entregar un artículo, sin generar errores ni advertencias en el registro.
1.18.0
  • Nueva propiedad Ids para reemplazar Índice y Nombre en CollectionConditions. Permite agregar el recuento de varios elementos, sumando sus valores para compararlos con la cantidad.
  • Nueva propiedad ReplyConfig para añadir un comportamiento de respuesta. Puedes mostrar una opción al jugador tras leer un correo y se añadirá uno o más textos de MailReceived según la opción elegida. Se puede implementar lógica de mod adicional según esa opción.
  • Se corrige el problema de la carta con receta que no admite la propiedad CustomTextColorName.
  • Se solucionó la excepción de referencia nula cuando se cargaba un elemento con un nombre nulo en el juego.
1.17.1
  • Los correos de paquetes de contenido con propiedad de receta no deben tener archivos adjuntos para ser reenviados si no se aprende la receta. (La propiedad de receta se ignora si hay archivos adjuntos)
  • Arregla las recetas de cocina con la misma lógica que aplicabas antes a las recetas de elaboración.
1.17.0
  • Nueva propiedad para establecer la calidad del archivo adjunto
  • Los correos con paquetes de contenido que incluyan una receta deberán volver a enviarse si no se aprende la receta.
  • Se corrigen las advertencias sobre Slingshot si se usa el ID de elemento calificado.
  • Se corrigieron las recetas para objetos fabricables que se entregaban incluso si la receta ya se había aprendido.
  • Por razones de legado, si el ID de la receta no se encuentra en las recetas aprendidas, buscará una receta que cree un elemento con el nombre del ID de la receta.
1.16.1
  • Corrección del nombre traducido de la receta.
1.16.0
  • Actualizar el mod para que sea compatible con Stardew Valley 1.6
  • Nuevo comando para recargar paquetes de contenido
  • Se cambió el nombre de MailDao a MailRepository. (Solo afecta a los mods de SMAPI que lo usan).
  • Nuevo tipo de artículo 'QualifiedItemId' para accesorios. Debería funcionar para cualquier tipo de artículo del juego si utilizas la calificación adecuada.
  • Nueva propiedad en condiciones especiales (boda y nacimiento).
  • Nueva propiedad para CustomTextColor, la antigua obsoleta.
  • Nueva propiedad HasMods
  • Nueva propiedad RequireAllMods
  • Los identificadores de eventos ahora son cadenas. (Los números aún deberían funcionar)
  • Se eliminó la lógica obsoleta SV 1.6 incorporada de MFM.
  • Se solucionó el problema de la versión alfa donde la carta no se abría en la página de recopilación de correo.
Spoiler:
Espectáculo
1.15.0
  • Nueva interfaz API para mods SMAPI.
  • Método API para cargar la carpeta del paquete de contenido desde dentro de su mod SMAPI.
  • Método API para cargar una letra.
  • Método API para obtener datos de una letra.
  • Método API para obtener la cadena de datos de correo de una carta.
  • Se soluciona el problema del buzón que no funciona correctamente cuando ocurre un error al cerrar la carta.
  • Será mejor que registres esos errores.
1.14.0
  • Más cambios para la compatibilidad con SMAPI 4
  • Nuevo atributo en la clase de letra para configurar ITranslationHelper.
  • El paquete de contenido no necesita cambiar nada, pero este cambio debería evitar algunos problemas raros de i18n.
  • Los mods que usan MFM a través del código pueden actualizar su implementación.
1.13.0
  • Haga que el mod sea compatible con SMAPI 4.
  • Nueva propiedad para el nivel de mina más profundo.
  • Propiedad nueva por dinero actual.
  • Nueva propiedad por el dinero total ganado.
  • Nuevo comando de consola para forzar la actualización del buzón para ayudar a los modders a depurar.
  • El menú de recopilación de cartas ahora también muestra un botón de cierre personalizado.
1.12.2
  • Haga que el mod sea compatible con 1.5.5, sin forzar a SMAPI a convertirlo.
  • Debería solucionar algunos problemas con los archivos adjuntos que no funcionan en el sistema operativo Unix.
  • Nueva propiedad para nivel de mejora de casa.
1.12.1
  • Se corrigió el error cuando no se cargaba la Utilidad de condiciones previas expandidas.
1.12.0
  • Nuevas propiedades para apoyar el uso deCondiciones previas ampliadas
  • Nueva propiedad que permite agregar texto además del ID de la letra a la lista MailReceived del jugador.
1.11.0
  • Soporte para DGA (Activos de Juego Dinámicos) como archivos adjuntos.
1.10.2
  • Corrección del problema por el cual los nombres de recetas de cocina en inglés se muestran como nulos cuando se agregan mediante Json Assets.
1.10.1
  • Se soluciona la apertura automática de letras sin texto, lo que interrumpe el mod cuando hay archivos i18n.
  • Se soluciona el problema de que la carta del paquete de contenido no se carga después de una advertencia de condición de recopilación.
  • Agrega un nuevo tipo de requisito de colección para la elaboración de recetas.
1.10.0
  • Ahora todas las herramientas de vainilla son compatibles.
  • Se admiten tirachinas estándar como armas. Si usas el índice o el nombre de una tirachinas, se creará correctamente como tal.
  • Nueva propiedad "Apertura automática" para cuando desea utilizar las condiciones MFM para guardar una identificación de letra como leída sin escribir una carta real.
1.9.2
  • Optimización para la carga de activos desde paquetes de contenido.
  • Se soluciona el problema de la devolución de llamada de letras que no se invocan si se abre un menú para agregar un elemento al inventario.
1.9.1
  • Se solucionó un error en el cual la carta de MFM no se abría ni se retiraba del buzón durante el día actual si sostenías un objeto al hacer clic en el buzón.
1.9.0
  • Nueva propiedad para carta creada con SMAPI para agregar elementos dinámicamente a la carta.
  • Nuevo método para eliminar cartas del buzón.
1.8.1
  • Corrección para evitar correos conflictivos en la cooperativa local.
  • Se soluciona el problema de situaciones excepcionales en las que el mod dejaba de funcionar si el juego no cerraba correctamente un menú de letras.
1.8.0
  • Soporte para muebles, armas y botas como accesorios.
  • Nueva propiedad para establecer el nivel de actualización de las herramientas adjuntas.
1.7.0
  • Soporte para anillos como accesorios.
  • Nuevas condiciones para las recetas.
  • Nueva propiedad para la personalización de fondo con paquetes de contenido.
  • Admite personalización del botón Cerrar con paquete de contenido y código.
1.6.0
  • Soporte para i18n en paquetes de contenido.
  • Nuevas condiciones de propiedades para edificaciones en la finca.
  • Nuevas propiedades de condiciones para el correo recibido. (Esto se utiliza para las banderas de misiones)
  • Nuevas condiciones de propiedades para eventos.
  • Nueva lista de condiciones para los elementos del menú de colecciones.
  • Nueva lista de condiciones para las estadísticas del juego.
  • Nueva propiedad para el estado de amistad para la lista de condiciones para la amistad de los NPC.
  • Nueva funcionalidad aleatoria para cuando los ID de grupo colisionan.
1.5.1
  • Se soluciona que las letras sin identificadores de grupo se agrupen.
1.5.0
  • La letra ahora se mostrará en el menú de colección si se define un título. Las texturas y colores personalizados también se mostrarán en el menú de colección.
  • Las cartas ahora pueden tener un ID de grupo. Las cartas con el mismo ID de grupo nunca se entregan el mismo día.
  • Nueva condición para los paquetes de contenido: "RandomChance".
  • BigObject ahora se llama BigCraftable, como en el código del juego.
  • Corrección de errores tipográficos en la plantilla.
1.4.1
  • Añade soporte para Stardew Valley 1.4.0
  • Se añade la propiedad Título para que las letras se muestren en el menú de colección. Aún no está completamente implementado, pero los modders pueden empezar a configurarlo.
1.4.0
  • Agrega un paquete de contenido que permite a los modders agregar letras personalizadas, con configuraciones para todas las características que brinda este marco y con las condiciones de entrega más comunes.
  • Se soluciona el problema de los controladores que no funcionan para obtener elementos adjuntos.
  • Corrección para mostrar correctamente los archivos adjuntos si el correo tiene más de un elemento adjunto.
  • Solución para que la carta no se cierre si tu inventario está lleno y se abre un menú para administrarlo.
  • Corrección del problema que impide agregar una pila de elementos al correo incluso cuando está configurado para hacerlo.
  • Añade soporte para SMAPI 3
1.3.4
  • Añade soporte para Stardew Valley 1.3.36
1.3.3
  • Añade soporte para SMAPI 3
1.3.2
  • Añade soporte para Stardew Valley 1.3.32
1.3.1
  • Agrega comandos para eliminar y agregar a la lista de correo recibido del jugador.
1.3.0-beta.6
  • Añade soporte para la elaboración de recetas.
  • Añade soporte para fondo personalizado
  • Agrega soporte para color de texto personalizado
  • Nueva forma de abrir cartas personalizadas, ahora usando armonía
  • Archivo de configuración para habilitar la forma antigua de abrir letras personalizadas.
1.2.0
  • Soporte para recetas i18n.
  • Se solucionó el problema del mod que no funcionaba correctamente después de regresar al menú de título.
  • Se soluciona el problema de que no se entrega correo si la condición de una carta genera una excepción.
1.1.0
  • Se soluciona la recepción del correo "impuesto pasado" al dormir y salir del juego sin haber leído un correo personalizado.
  • Los correos personalizados pueden tener recetas.
  • Esta versión no es compatible con la anterior. Es necesario actualizar los mods para usar esta versión.
1.0.0
  • Agregar correos personalizados
  • Los correos personalizados pueden tener elementos.

Para que los Modders utilicen el paquete de contenido:
  • Hay una plantilla dentro de la carpeta mod con instrucciones comentadas sobre lo que hace cada propiedad.
  • Todas las características de las letras, excepto las condiciones y la devolución de llamada, son las mismas que la codificación con el marco.
  • Las condiciones se limitan a las implementadas, y la devolución de llamada siempre establece el ID de la carta como recibido. Si necesita condiciones avanzadas, debe codificarlas. O puede sugerirme amablemente que agregue una condición al paquete de contenido; si tiene sentido, podría agregarla.
  • Aquí está la plantilla tal como se agregó en el archivo mod:
Spoiler:
Espectáculo
[
    {
"Id": "MyMod.MyMailId", // ID de la carta. Es importante que sea una cadena única para evitar conflictos. Además, no debe contener espacios.
"GroupId": "MyMod.MyGroupId", // ID del grupo de cartas. Las cartas con el mismo ID de grupo nunca se entregan el mismo día. Las cartas registradas primero tienen prioridad, a menos que el ID de grupo termine en ".Random". En ese caso, se elegirá una carta aleatoria. El valor predeterminado es nulo.
"Título": "Título de mi carta", // Título de la carta. Se mostrará en el menú de colecciones. Si no desea que la carta aparezca en la colección, defínala como nula o elimine la línea. Si se proporciona un archivo de traducción, debe incluir una clave de traducción aquí; sin embargo, puede dejarla como nula si no hay título.
"Texto": "Estimado @^Este es mi correo personalizado.", // Texto de la carta. Puedes usar @ para escribir el nombre del jugador y ^ para saltos de línea. También puedes usar los comandos del juego base para añadir dinero, objetos y demás. Si se proporciona un archivo de traducción, debes incluir aquí la clave de traducción.
"RandomlyChooseAttachment": 2, // Si se establece un número, se seleccionará aleatoriamente esa cantidad de elementos de la lista de adjuntos, por grupo. El valor predeterminado es nulo.
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // Si se configura un grupo y una cantidad aquí, se usará esa cantidad para seleccionar elementos en lugar de la configurada en RandomlyChooseAttachment. El valor predeterminado es vacío.
"AttachmentGroupWithReplacement": [ "CaveItems" ], // Los archivos adjuntos se seleccionan aleatoriamente de una lista, sin reemplazo, por defecto. Si desea que la selección se realice reemplazando los archivos adjuntos, agregue el grupo a la lista. Si no agregó grupos, use una cadena vacía. El valor predeterminado es una lista vacía.
"Adjuntos": [ // Lista de adjuntos. Eliminar la propiedad para no adjuntar elementos al correo.
            {
"Tipo": "Objeto", // [Objeto|BigCraftable|Herramienta|Anillo|Muebles|Arma|Botas|DGA|QualifiedItemId|Ninguno] Obligatorio. El tipo de objeto que se adjuntará. Si no se proporciona, se ignorará. "Ninguno" siempre se ignora sin errores en el registro y se debe usar cuando se desea una probabilidad de no añadir un objeto adjunto.
"Nombre": "Cave Carrot", // Se usa para encontrar el índice del elemento. Es necesario si se usan objetos personalizados, como los de activos JSON. Debe ser el ID completo de DGA si se usa DGA. Si no se proporciona, se usará el índice. El valor predeterminado es nulo.
"Índice": "(0)78", // El índice de un elemento. Debe ser el ID del elemento calificado como cadena, pero también funciona como un entero para compatibilidad con versiones anteriores. Si no se proporciona un nombre o no se encuentra un elemento para ese nombre, se utiliza el índice. De lo contrario, se ignora el archivo adjunto. Se ignora si el tipo es DGA.
"Pila": 1, // El valor de pila del artículo que se entregará. Se usa solo para objetos y BigCraftable. El valor predeterminado es 1.
"Calidad": 2, // El valor de calidad del artículo a entregar. Solo se usa para objetos. 0 = ninguno, 1 = plata, 2 = oro, 4 = iridio. El valor predeterminado es 0.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Requiere que se haya recibido uno de los correos. La lista de juegos también contiene otros elementos que no son correos, como las banderas del centro comunitario. El valor predeterminado es nulo para no requerir que se haya recibido ningún correo.
"RequireAllMailReceived": falso. Si es verdadero, se requiere que se hayan recibido todos los correos de la lista "RequireMailReceived". El valor predeterminado es falso.
"ProbabilityWeight": 1, // El peso que tiene este accesorio al elegir cuál entregar. El módulo suma todos los pesos de un grupo dado y le asigna una probabilidad dividiendo este peso entre el total. El valor predeterminado es 1.
"RandomGroup": "CaveItems" // Al seleccionar los elementos aleatoriamente, se agrupa la lista según los grupos encontrados y se selecciona la cantidad establecida de cada grupo. El valor predeterminado es una cadena vacía que funciona como grupo predeterminado.
},
            {
"Tipo": "Herramienta", // Al utilizar herramientas, solo se pueden adjuntar las compatibles.
"Nombre": "Hacha", // [Hacha|Azada|Regadera|Pico|Guadaña|Guadaña dorada|Cubo de leche|Tijeras|Caña de pescar|Sartén|Cetro de retorno] Requerido para herramientas. El nombre de la herramienta compatible. De lo contrario, el accesorio se ignora.
"UpgradeLevel": 1 // El nivel de mejora de la herramienta. Herramientas comunes: 0 = piedra, 1 = cobre, 2 = acero, 3 = oro, 4 = iridio. Caña de pescar: 0 = caña de bambú, 1 = caña de entrenamiento, 2 = caña de fibra de vidrio, 3 = caña de iridio. Se ignora para los demás tipos. El valor predeterminado es 0.
},
            {
"Tipo": "DGA", //Elemento DGA
"Nombre": "spacechase0.DynamicGameAssets.Example/Mi Artículo Personalizado", // usa el ID completo de DGA. Obligatorio.
"Pila": 10, // El valor de pila del artículo a entregar. Se usa solo para objetos y BigCraftable. El valor predeterminado es 1.
"Calidad": 2 // El valor de calidad del artículo a entregar. Solo se usa para objetos. 0 = ninguno, 1 = plata, 2 = oro, 4 = iridio. El valor predeterminado es 0.
},
            {
"Tipo": "QualifiedItemId", //Cualquier artículo compatible
"Índice": "(0)78", // El Id. de artículo calificado de un artículo.
"Pila": 10, // El valor de la pila del artículo que se entregará. Se usa solo para objetos y BigCraftable. El valor predeterminado es 1.
"Calidad": 2 // El valor de calidad del artículo a entregar. Solo se usa para objetos. 0 = ninguno, 1 = plata, 2 = oro, 4 = iridio. El valor predeterminado es 0.
            }
],
"Receta": "Nombre de la receta", // Si no desea adjuntar una receta al correo, elimine esta línea. Solo funcionará si no tiene otros archivos adjuntos. Para recetas DGA, use solo el ID (omita el ModID).
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // Use esto para agregar texto adicional a la lista MailReceived. Puede ser útil para agregar indicadores de vainilla u otros identificadores de letras MFM.
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], //Texto que se eliminará de la lista de correo recibido. Esto puede usarse para activar nuevos correos, eventos, indicadores de estado, detener el envío de otros correos MFM...
"LetterBG": "CustomLetterBG.png", // Nombre del archivo en tu paquete de contenido que contiene el fondo de letra personalizado. Debe seguir la misma estructura que el archivo LetterBG del juego. WhichBG será relativo a este archivo para esta letra. Si se establece en null o se elimina, el mod usará el LetterBG del juego.
"WhichBG": 0, //El ID del fondo de la carta. 0 = clásico, 1 = bloc de notas, 2 = pirámides
"TextColor": -1, //Elimine esta línea para usar el color predeterminado. Se ignorará si se establece un CustomTextColor. -1 = Rojo oscuro, 0 = Negro, 1 = Azul cielo, 2 = Rojo, 3 = Violeta azul, 4 = Blanco, 5 = Rojo anaranjado, 6 = Verde lima, 7 = Cian, 8 = Gris oscuro
"CustomTextColorName": "Blanco", //El color del texto.[http://www.foszor.com/blog/xna-color-chart/] De forma predeterminada, se utilizará la propiedad TextColor.
"UpperRightCloseButton": "CustomCloseButton.png", // Nombre del archivo en tu paquete de contenido que contiene el botón de cierre personalizado. Debe tener un tamaño de 12 x 12. Si se establece en null o se elimina, se usará el botón predeterminado.
"ReplyConfig": { // Si desea que el jugador envíe una respuesta después de leer la carta, se mostrarán las opciones de respuesta que agregarán uno o más "ReceivedMail" según la respuesta del jugador. Cualquier lógica adicional relacionada con la respuesta debe implementarse según el ReceivedMail agregado.
"QuestionKey": "MyMod.MyMailId.Question", //Una clave para identificar tu pregunta. Es de uso interno, pero debe ser única en tu paquete de contenido para evitar conflictos entre respuestas.
"QuestionDialog": "Envía una respuesta eligiendo tu recompensa:", //Tu pregunta o texto que aparecerá sobre las opciones de respuesta. Si se proporciona un archivo de traducción, debes incluir aquí la clave de traducción.
"Respuestas": [
                {
"ReplyKey": "MyMod.MyMailId.Reply1", //Debe ser único entre las respuestas de la pregunta.
"ReplyOptionDialog": "Quiero semillas.", //El texto de la opción que se mostrará en la lista de respuestas. Si se proporciona un archivo de traducción, debe incluir aquí la clave de traducción.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Requiere que se haya recibido uno de los correos. La lista de juegos también contiene otros elementos que no son correos, como las banderas del centro comunitario. El valor predeterminado es nulo para no requerir que se haya recibido ningún correo.
"RequireAllMailReceived": falso. Si es verdadero, se requiere que se hayan recibido todos los correos de la lista "RequireMailReceived". El valor predeterminado es falso.
"MailReceivedToAdd": [ "MyMod.MyMailId.PlayerSeedOption" ], // Texto para añadir a la lista MailReceived. Esto puede usarse para activar nuevos correos, eventos, indicadores de estado, impedir el envío de otros correos MFM...
"MailReceivedToRemove": [ "MyMod.MyMailId.PlayerSapplingOption" ], //Texto que se eliminará de la lista de correos recibidos. Esto puede usarse para activar nuevos correos, eventos, indicadores de estado, detener el envío de otros correos MFM...
"ReplyResponseDialog": "Su carta solicitando semillas fue enviada." //Texto que se mostrará después de seleccionar esta opción de respuesta. Si se proporciona un archivo de traducción, debe incluir aquí la clave de traducción.
"Costo": 50 // La cantidad de dinero que el jugador necesita para elegir esta opción. Si la elige, esa cantidad se resta inmediatamente de su dinero. Siempre ofrece una opción sin costo; de lo contrario, podrías bloquear al jugador.
                }
            ]
},
"Repetible": falso. Si es verdadero, el mod no comprobará si el ID de la carta ya se ha entregado. El valor predeterminado es falso.
"AutoOpen": falso, // Si es verdadero, el mod abrirá la carta al comienzo del día, una vez que se cumplan las condiciones. El ID de la carta se marcará como leído y, si hay una receta establecida, se aprenderá. Dado que la carta nunca se mostrará, las propiedades visuales como el título, el texto, el fondo, etc., tampoco se usarán, al igual que los archivos adjuntos.
// CONDICIONES DE ENTREGA
A continuación se muestran las condiciones de entrega. Si no desea marcarlas, elimine cualquier línea.
"Fecha": "10 primavera Y1", // Debe ser esa fecha o posterior. El formato es "[1-28] [primavera|verano|otoño|invierno] Y[1-999]".
"Días": [7,14,21,28], // Debe ser uno de los días de la lista.
"Estaciones": ["otoño"], // Debe ser una de las estaciones de la lista. [primavera|verano|otoño|invierno]
"Tiempo": "soleado", // Debe ser el tiempo del juego. El formato es "[soleado|lluvioso]".
"HouseUpgradeLevel": 2, // El nivel de mejora de la casa debe ser igual o superior al definido. 0 - casa inicial (no hay razón para usar esto, solo elimine la línea), 1 - cocina, 2 - segundo piso, 3 - sótano.
"DeepestMineLevel": 80, // El nivel de la mina más profunda debe ser igual o mayor al definido. 120 es el último nivel de la mina, 121 es el primer nivel de la caverna del cráneo.
"CurrentMoney": 10000, // El dinero actual debe ser igual o mayor al definido.
"TotalMoneyEarned": 500000, // El dinero total ganado debe ser igual o mayor a lo definido.
"FriendshipConditions": // Cada NPC de la lista debe cumplir todas las condiciones.
        [
            {
"NpcName": "Lewis", //Nombre del PNJ. Se pueden usar PNJ personalizados.
"NivelAmistad": 8, // El PNJ debe tener un nivel de corazón de amistad igual o superior al definido. El valor predeterminado es 0.
"FriendshipStatus": ["Citas","Comprometido","Casado"] // [Amistoso|Citas|Comprometido|Casado|Divorciado] Requerir que el estado de amistad del PNJ sea uno de la lista. Eliminar para no requerir un estado.
            }
],
"SkillConditions": // Cada habilidad de la lista debe tener un nivel igual o superior al definido. Se pueden usar todas las habilidades codificadas del juego original, incluyendo Suerte. No se pueden usar habilidades personalizadas.
        [
{ "SkillName": "Agricultura", "SkillLevel": 1 }
],
"StatsConditions": // Cada estadística de la lista debe tener un valor igual o superior al definido. Elija un StatsName o un StatsLabel.
        [
            {
"StatsName": "Queso Hecho", //[Semillas Sembradas | Objetos Enviados | Objetos Cocinados | Objetos Elaborados | Huevos de Gallina Puestos | Huevos de Pato Puestos | Leche de Vaca Producida | Leche de Cabra Producida | Lana de Conejo Producida | Lana de Oveja Producida | Queso Hecho | Queso de Cabra Hecho | Trufas Encontradas | Piedras Recolectadas | Rocas Trituradas | Tierra Desenterrada | Regalos Recibidos | Veces Inconsciente | Promedio de Hora de Acostarse | Veces Pescadas | Peces Capturados | Rocas Agrietadas | Tocones Troceados | Pasos Dados | Monstruos Muertos | Diamantes Encontrados | Prismáticos ardsEncontrados|OtrasGemasPreciosasEncontradas|ZanahoriasDeCuevaEncontradas|CobreEncontrado|HierroEncontrado|CarbónEncontrado|MonedasEncontradas|OroEncontrado|IridioEncontrado|LingotesFundidos|BebidasFabricadas|ConservasFabricadas|PedazosDeBasuraReciclados|PiedrasMísticasTrituradas|DíasJugados|Mala hierbaEliminada|PalosCortados|NotasEncontradas|MisionesCompletadas|NivelEstrellaCosechasEnviadas|CosechasEnviadas|ObjetosRecolectados|SlimesMatados|GeodasRompidas|BuenosAmigos|DineroIndividualGanado] El valor predeterminado es nulo.
"StatsLabel": "Nombre", // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] Estas son las estadísticas actuales del juego identificadas por etiqueta. Si se agregan más, también deberían ser compatibles. También identificará las etiquetas de estadísticas personalizadas agregadas por otros mods. El valor predeterminado es nulo.
"Cantidad": 1 // La cantidad que el estado debe ser igual o mayor para que la condición sea válida.
            }
],
"CollectionConditions": // Cada condición de colección de la lista debe tener un valor igual o mayor que la cantidad definida.
        [
            {
"Colección": "Enviado", //[Enviado|Pescado|Artefactos|Minerales|Cocina|Elaboración] Obligatorio.
"Nombre": "Aceite", //Obsoleto, usa identificadores en su lugar. El nombre del objeto o receta de la colección "Artesanía". Si no es una colección de artesanía, se buscará ese nombre en la lista de objetos para encontrar el índice. Si no se encuentra el nombre, se ignora la letra. Se combinará con las demás propiedades. El valor predeterminado es nulo.
"Índice": 211, //Obsoleto, usa identificadores en su lugar. El índice del objeto. Se combinará con las demás propiedades. El valor predeterminado es nulo.
"Ids": [ "282", "MossSoup" ], //Los IDs de los artículos o los nombres de las recetas de elaboración. Se combinarán con las demás propiedades. Las cantidades se suman para compararlas con la propiedad Cantidad.
"Cantidad": 10 // La cantidad total de objetos en la colección debe ser igual o mayor para que la condición sea válida.
            }
],
"SpecialDateCondition": // Debe ser esa fecha o posterior.
        {
"FechaEspecial": "Nacimiento", //[Boda|Nacimiento] Obligatorio
"YearsSince": 1, // La cantidad de años transcurridos desde la fecha. 0 corresponde a la fecha actual, 1 al año siguiente. El valor predeterminado es 0.
"WhichChild": 1 //Si la propiedad SpecialDate es ChildBirth, se hará referencia a qué hijo. El valor predeterminado es 1.
},
"ExpandedPrecondition": "d Mon Fri/HasItem Pink Cake/!JojaMartComplete/!w rainy", //Necesita el mod "Utilidad de Precondiciones Expandidas". Consulta la documentación de dicho mod para ver cómo funciona. Si el mod no está instalado, la carta no se entregará.
"ExpandedPreconditions": [ "!z spring/t 600 1000", "f Linus 1000/w rainy/z spring", "f Linus 2500" ], //Requiere el módulo "Utilidad de Precondiciones Expandidas". Consulte la documentación de dicho módulo para ver cómo funciona. Si el módulo no está cargado, la carta no se entregará.
"RandomChance": 0.25, // El mod comprobará si un número aleatorio del 0 al 1 está por debajo del número dado. La misma partida guardada, el mismo día y para la misma letra, siempre tendrá el mismo resultado para evitar trampas.
"Edificios": ["Coop","Big Coop","Deluxe Coop"], // Requiere que uno de los edificios esté actualmente construido en la granja.
"RequireAllBuildings": falso, // Si es verdadero, se requiere que todos los edificios de la lista "Edificios" estén actualmente construidos en la granja. El valor predeterminado es falso.
"MailReceived": ["jojaVault","ccVault"], // Requiere que se haya recibido uno de los correos. La lista de juegos también contiene otros elementos que no son correo, como las banderas del centro comunitario.
"RequireAllMailReceived": falso, // Si es verdadero, se requiere que se hayan recibido todos los correos de la lista "MailReceived". El valor predeterminado es falso.
"MailNotReceived": ["jojaVault","ccVault"], // Requiere que los correos no se hayan recibido. La lista de juegos también contiene otros elementos que no son correo, como las banderas del centro comunitario.
"EventsSeen": [ "4", "32423" ], // Requiere que el jugador haya visto uno de los eventos. Debe ser una cadena, pero también funciona como un entero para compatibilidad con versiones anteriores.
"RequireAllEventsSeen": falso, // Si es verdadero, se requiere que el jugador haya visto todos los eventos de la lista "EventsSeen". El valor predeterminado es falso.
"HasMods": [ "SMAPI.ConsoleCommands", "SMAPI.SaveBackup" ], // Requiere que se cargue uno de los mods. Debe ser el ID único del mod.
"RequireAllMods": falso, // Si es verdadero, se requiere que se hayan cargado todos los mods de la lista "HasMods". El valor predeterminado es falso.
"EventsNotSeen": [ "4", "32423" ], // Requiere que el jugador no haya visto los eventos. Debe ser una cadena, pero también funciona como un entero para compatibilidad con versiones anteriores.
"RecipeKnown": ["Pizza","Hamburguesa de supervivencia"], // Requiere que el jugador haya aprendido una de las recetas.
"RequireAllRecipeKnown": falso, // Si es verdadero, se requiere que el jugador haya aprendido todas las recetas de la lista "RecipeKnown". El valor predeterminado es falso.
"RecipeNotKnown": ["Cebo salvaje"], // Requiere que el jugador no haya aprendido las recetas.
"KeepValid": falso // Si es verdadero, una vez que se cumplan las condiciones, el correo se mantendrá válido hasta su lectura. El valor predeterminado es falso.
    }
]


Para que el Modder use la API:
  • CopiarAPI de modificación de IMailFrameworkInterfaz con el método que desea utilizar desde la interfaz MFM.
  • CopiarCartasi alguno de los métodos lo necesita.
  • Métodos:
    • Registrar paquete de contenido- UsarAyudante.ContentPacks.CreateTemporaryPara cargar una carpeta desde tu mod que contenga el archivo mail.json y, posiblemente, la carpeta i18n para traducciones. No se necesita el manifiesto, ya que puedes usar ese parámetro del método.
    • Carta de registroComplete una ILetter con las propiedades necesarias. También se requiere una condición para registrar una carta. Se recomienda una devolución de llamada para, al menos, agregar el ID de la carta tal como se recibió. Vea los ejemplos a continuación, en "Para que el Modder codifique con dependencia MFM" sesión.
    • Obtener carta- Obtendrá el objeto ILetter para el ID de la letra.
    • Obtener cadena de datos de correoObtendrá la cadena de datos de correo para el ID de la carta. Esta cadena consiste básicamente en el texto traducido más el título traducido, separado por [#].

Para que el Modder codifique con dependencia MFM:
  • Haga referencia a MailFrameworkMod.dll en su proyecto SMAPI.
    • Registra tu carta usando MailRepository.SaveLetter(Letter)
    • Al comienzo de cada día, el mod verificará si hay cartas que hayan alcanzado su condición para ser entregadas y las agregará al buzón.
    • Estas cartas se abrirán primero cuando el jugador revise el buzón.
    • Cuando se abre la carta, se retira del buzón.
    • La condición de devolución de llamada de la carta es que se les llame.
    • Al final del día, las cartas que queden en el buzón serán eliminadas, por lo que el juego no las guardará.
  • Puedes considerar este mod como un repositorio para tus cartas. Funciona mejor si cargas todas tus cartas al cargar el juego.


Ejemplos:

Spoiler:
Espectáculo

Cargando una carta simple que se mostrará al jugador si no la lee antes, y no será entregada nuevamente luego de ser abierta por el jugador:
MailRepository.SaveLetter(
nueva carta(
"Identificador único de letra"
,"Texto de carta personalizado."
,(l)=>!Juego1.jugador.correoRecibido.Contiene(l.Id)
,(l)=>Juego1.jugador.mailRecibido.Añadir(l.Id)
)
);


Cargando una Carta sencilla como antes, pero con 5 Esmeraldas anexas:
MailRepository.SaveLetter(
nueva carta(
"Identificador único de letra"
,"Texto de carta personalizado."
,nueva Lista { nuevo StardewValley.Object(60,5) }
,(l)=>!Juego1.jugador.correoRecibido.Contiene(l.Id)
,(l)=>Juego1.jugador.mailRecibido.Añadir(l.Id)
  )
);

El jugador no recibirá el mismo artículo, sino una copia devuelta por el método getOne().

Al cargar una carta simple que enseña una receta de cocina, esta se entregará si el jugador no la conoce. El mod enseña las recetas automáticamente al cargar, sin necesidad de una devolución de llamada.
MailRepository.SaveLetter(
nueva carta(
"Identificador único de letra"
, "Texto personalizado de carta."
, "NombreÚnicoReceta"
, (l) => !Juego1.jugador.recetasdecocina.ContieneClave(l.Receta)
  )
);

El "RecipeUniqueName" debe ser el mismo que el almacenado en "Data//CookingRecipes" o "Data//CraftingRecipes".

Cargando una carta sencilla con texto y fondo diferentes:
MailRepository.SaveLetter(
nueva carta(
"Identificador único de letra"
,"Texto de carta personalizado."
,(l)=>!Juego1.jugador.correoRecibido.Contiene(l.Id)
,(l)=>Juego1.jugador.mailRecibido.Añadir(l.Id)
1
){Color del texto=8}
);


Cargando una carta sencilla con fondo personalizado:
MailRepository.SaveLetter(
nueva carta(
"Identificador único de letra"
,"Texto de carta personalizado."
,(l)=>!Juego1.jugador.correoRecibido.Contiene(l.Id)
,Juego1.jugador.mailRecibido.Añadir(l.Id)
1
){
TexturaDeLetra=helper.Contenido.Cargar("CustomLetterBG.png")
,Color del texto=4
  }
);
Donde CustomLetterBG.png es un archivo de imagen que sigue la misma estructura que "LooseSprites//letterBG"

Cargando una carta sencilla con traducción del texto y título.
MailRepository.SaveLetter(
nueva carta(
"Identificador único de letra"
,"micarta.traducción.clave.texto"
,(l)=>!Juego1.jugador.correoRecibido.Contiene(l.Id)
,(l)=>Juego1.jugador.mailRecibido.Añadir(l.Id)
){
Título = "micarta.traducción.clave.título",
I18N = ayudante.Traducción
    }
);



Mis otras modificaciones:

Mods principales para Stardew Valley

Explora los mejores mods para Stardew Valley que aportan nuevas funciones, gráficos mejorados y formas emocionantes de transformar tu experiencia de juego.

¡Desbloquea todo el potencial de Stardew Valley con XMODhub — explora estos mods principales hoy mismo!

mcafee
Autenticación
Confiado por 200,000,000+ usuarios

¿Necesitas ayuda con la descarga o instalación? Únete a nuestra comunidad de Discord para soporte!

logo
Idioma

Soluciones de juego

Recursos

Fogonadura

Síguenos en

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