

[
{
"Id": "MyMod.MyMailId", // Идентификатор письма. Важно, чтобы строка была уникальной, чтобы избежать конфликтов. Также она не должна содержать пробелов.
"GroupId": "MyMod.MyGroupId", // Идентификатор группы писем. Письма с одинаковым идентификатором группы никогда не доставляются в один день. Письма, зарегистрированные первыми, имеют приоритет, если только идентификатор группы не заканчивается на ".Random" — в этом случае будет выбрано случайное письмо. Значение по умолчанию — null.
"Title": "Заголовок моего письма", // Заголовок письма. Будет отображаться в меню коллекций. Установите значение null или удалите строку, если не хотите, чтобы письмо отображалось в коллекции. Если предоставлен файл перевода, необходимо указать здесь ключ перевода, но можно оставить значение null, чтобы не отображать заголовок.
"Текст": "Уважаемый @^Это моя персональная почта.", // Текст письма. Вы можете использовать @ для имени игрока и ^ для переноса строк. Вы также можете использовать команды базовой игры для добавления денег, предметов и прочего. Если предоставляется файл перевода, необходимо указать здесь ключ перевода.
"RandomlyChooseAttachment": 2, // Если задано число, будет случайным образом выбрано указанное количество элементов из списка вложений для каждой группы. Значение по умолчанию — null.
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // Если здесь заданы группа и количество, для выбора предметов будет использоваться это количество, а не то, которое задано в RandomlyChooseAttachment. Значение по умолчанию — пустое.
"AttachmentGroupWithReplacement": [ "CaveItems" ], // Вложения по умолчанию выбираются случайным образом из списка без замены. Если вы хотите, чтобы был выбран вариант, заменяющий вложения, добавьте группу в список. Если группы не добавлялись, используйте пустую строку. Значение по умолчанию — пустой список.
"Вложения": [ // Список вложений. Удалите свойство, чтобы не прикреплять элементы к письму.
{
"Type": "Object", // [Object|BigCraftable|Tool|Ring|Furniture|Weapon|Boots|DGA|QualifiedItemId|None] Обязательно. Тип предмета, который будет прикреплён. Если не указан, предмет будет проигнорирован. Значение "None" всегда игнорируется без ошибок в журнале и должно использоваться, когда требуется оценить вероятность отсутствия прикреплённого предмета.
"Name": "Cave Carrot", // Используется для поиска индекса элемента. Это необходимо при использовании пользовательских объектов, таких как Json Assets. Должен быть указан полный идентификатор DGA, если используется DGA. Если не указано, будет использоваться индекс. Значение по умолчанию — null.
"Index": "(0)78", // Индекс элемента. Должен быть уточнённым идентификатором элемента в виде строки, но также может работать как целое число для совместимости с предыдущими версиями. Если имя не указано или элемент для данного имени не найден, используется индекс. В противном случае вложение игнорируется. Игнорируется, если тип — DGA.
"Stack": 1, // Значение стека доставляемого предмета. Используется только для объектов и BigCraftable. Значение по умолчанию — 1.
"Quality": 2, // Качество доставляемого предмета. Используется только для объектов. 0 = нет, 1 = серебро, 2 = золото, 4 = иридий. Значение по умолчанию — 0;
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Требует получения одного из писем. Список игр также содержит другие элементы, не являющиеся почтой, например, флаги центра сообщества. Значение по умолчанию — null, то есть получение письма не требуется.
"RequireAllMailReceived": false, // Если true, требуется, чтобы все письма из списка "RequireMailReceived" были получены. Значение по умолчанию — false.
"ProbabilityWeight": 1, // Вес этого вложения при выборе того, какое из них доставить. Модульная сумма всех весов в заданной группе и определение вероятности путём деления этого веса на общую сумму. Значение по умолчанию — 1.
"RandomGroup": "CaveItems" // При случайном выборе элементов группируем список по найденным группам и выбираем заданное количество из каждой группы. Значение по умолчанию — пустая строка, которая служит группой по умолчанию.
},
{
"Тип": "Инструмент", // При использовании инструмента можно прикрепить только поддерживаемые.
"Name": "Axe", // [Топор|Мотыга|Лейка|Кирка|Коса|Золотая коса|Ведро для молока|Ножницы|Удочка|Сковорода|Возвратный скипетр] Требуется для инструментов. Название поддерживаемого инструмента. В противном случае вложение игнорируется.
"UpgradeLevel": 1 // Уровень улучшения инструмента. Обычные инструменты: 0 = камень, 1 = медь, 2 = сталь, 3 = золото, 4 = иридий. Удочка: 0 = бамбуковая удочка, 1 = тренировочная удочка, 2 = стекловолоконная удочка, 3 = иридиевая удочка. Игнорируется для других типов. Значение по умолчанию — 0.
},
{
"Тип": "DGA", //элемент DGA
"Name": "spacechase0.DynamicGameAssets.Example/My Custom Item", // используйте полный идентификатор DGA. Обязательно.
"Stack": 10, // Значение стека доставляемого предмета. Используется только для объектов и BigCraftable. Значение по умолчанию — 1.
"Quality": 2 // Качество доставляемого предмета. Используется только для объектов. 0 = нет, 1 = серебро, 2 = золото, 4 = иридий. Значение по умолчанию: 0;
},
{
"Type": "QualifiedItemId", // Любой поддерживаемый элемент
"Index": "(0)78", // Квалифицированный идентификатор элемента.
"Stack": 10, // Значение стека доставляемого предмета. Используется только для объектов и BigCraftable. Значение по умолчанию — 1;
"Quality": 2 // Качество доставляемого предмета. Используется только для объектов. 0 = нет, 1 = серебро, 2 = золото, 4 = иридий. Значение по умолчанию: 0;
}
],
"Recipe": "Recipe Name", // Удалите эту строку, если не хотите прикреплять рецепт к письму. Это сработает только при отсутствии других вложений в письме. Для рецептов DGA используйте только идентификатор (ModID можно не добавлять).
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // Используйте это для добавления дополнительного текста в список MailReceived. Может быть полезно для добавления флагов Vanilla или других идентификаторов писем MFM.
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], //Текст, который нужно удалить из списка MailReceived. Это можно использовать для отправки новых писем, событий, установки стандартных флагов, а также для предотвращения отправки других писем MFM...
"LetterBG": "CustomLetterBG.png", // Имя файла в вашем пакете контента, содержащего фон для пользовательской буквы. Он должен иметь ту же структуру, что и файл LetterBG игры. WhichBG будет связан с этим файлом для этой буквы. Если значение равно null или удалено, мод будет использовать LetterBG игры.
"WhichBG": 0, //Идентификатор фона письма. 0 = классический, 1 = блокнот, 2 = пирамиды
"TextColor": -1, //Удалите эту строку, чтобы использовать цвет по умолчанию. Будет проигнорировано, если задан CustomTextColor. -1 = Тёмно-красный, 0 = Чёрный, 1 = Небесно-голубой, 2 = Красный, 3 = Сине-фиолетовый, 4 = Белый, 5 = Оранжево-красный, 6 = Лаймово-зелёный, 7 = Голубой, 8 = Самый тёмный серый
"CustomTextColorName": "White", //Цвет текста.[http://www.foszor.com/blog/xna-color-chart/] По умолчанию будет использоваться свойство TextColor.
"UpperRightCloseButton": "CustomCloseButton.png", // Имя файла в вашем пакете контента, содержащего пользовательскую кнопку закрытия. Размер должен быть 12 x 12. Если значение равно null или удалено, будет использоваться кнопка по умолчанию.
"ReplyConfig": { // Если вы хотите, чтобы игрок отправил ответ после прочтения письма. Будут показаны варианты ответа, которые добавят одно или несколько сообщений "ReceivedMail" в зависимости от ответа игрока. Любая дополнительная логика, связанная с ответом, должна быть реализована на основе добавленного сообщения "ReceivedMail".
"QuestionKey": "MyMod.MyMailId.Question", //Ключ для идентификации вашего вопроса. Он предназначен только для внутреннего использования, но должен быть уникальным в вашем пакете контента, чтобы избежать конфликтов между ответами.
"QuestionDialog": "Отправьте ответ, выбрав награду:", //Ваш вопрос или текст, который будет отображаться над вариантами ответа. Если предоставлен файл перевода, необходимо указать здесь ключ перевода.
«Ответы»: [
{
"ReplyKey": "MyMod.MyMailId.Reply1", //Должен быть уникальным среди ответов на вопрос.
"ReplyOptionDialog": "Мне нужны семена.", //Текст варианта ответа, который будет отображаться в списке ответов. Если предоставлен файл перевода, необходимо указать здесь ключ перевода.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Требует получения одного из писем. Список игр также содержит другие элементы, не являющиеся почтой, например, флаги центра сообщества. Значение по умолчанию — null, то есть получение письма не требуется.
"RequireAllMailReceived": false, // Если true, требуется, чтобы все письма из списка "RequireMailReceived" были получены. Значение по умолчанию — false.
"MailReceivedToAdd": [ "MyMod.MyMailId.PlayerSeedOption" ], // Текст для добавления в список MailReceived. Его можно использовать для отправки новых писем, событий, установки флагов, блокировки отправки других писем MFM...
"MailReceivedToRemove": [ "MyMod.MyMailId.PlayerSapplingOption" ], //Текст, который нужно удалить из списка MailReceived. Это можно использовать для отправки новых писем, событий, установки флагов Vanilla, а также для предотвращения отправки других писем MFM...
"ReplyResponseDialog": "Ваше письмо с просьбой о семенах отправлено.", //Текст, который будет отображаться после выбора этого варианта ответа. Если предоставлен файл перевода, необходимо указать здесь ключ перевода.
"Cost": 50 // Сумма денег, необходимая игроку для выбора этого варианта. Если игрок выбирает этот вариант, эта сумма немедленно вычитается из его денег. Всегда предлагайте вариант без стоимости, иначе вы рискуете заблокировать игрока.
}
]
},
"Repeatable": false, // Если true, модер не будет проверять, что письмо уже доставлено. Значение по умолчанию — false.
"AutoOpen": false, // Если true, мод откроет письмо в начале дня после выполнения условий. Идентификатор письма будет отмечен как прочитанный, и, если задан рецепт, он будет изучен. Поскольку письмо никогда не будет показано, визуальные свойства, такие как заголовок, текст, фон и т. д., а также вложения, никогда не будут использоваться.
// УСЛОВИЯ ПОСТАВКИ
//Ниже приведены условия доставки. Удалите любую строку, если не хотите проверять это условие.
"Дата": "10 весна Y1", // Должна быть эта дата или более поздняя. Формат: "[1-28] [весна|лето|осень|зима] Y[1-999]".
"Дни": [7,14,21,28], // Должен быть одним из дней в списке.
"Времена года": ["осень"], // Должно быть одно из времен года в списке. [весна|лето|осень|зима]
"Погода": "солнечно", // Должно быть, это та самая погода из игры. Формат: "[солнечно|дождливо]".
"HouseUpgradeLevel": 2, // Уровень улучшения дома должен быть равен или выше указанного. 0 - начальный дом (нет смысла использовать это, просто удалите строку), 1 - кухня, 2 - второй этаж, 3 - подвал.
"DeepestMineLevel": 80, // Самый глубокий уровень шахты должен быть равен или превышать указанное значение. 120 — последний уровень шахты, 121 — первый уровень пещеры Черепа.
"CurrentMoney": 10000, // Текущая сумма денег должна быть равна или превышать указанное значение.
"TotalMoneyEarned": 500000, // Общая сумма заработанных денег должна быть равна или превышать указанное значение.
"FriendshipConditions": // Каждый NPC из списка должен проверить все условия.
[
{
"NpcName": "Lewis", //Имя NPC. Можно использовать пользовательских NPC.
"FriendshipLevel": 8, // NPC должен иметь уровень дружеского расположения, равный или превышающий указанный. По умолчанию — 0.
"FriendshipStatus": ["Встречаются","Помолвлены","Женаты"] // [Дружба|Встречаются|Помолвлены|Женаты|Разведены] Требует, чтобы статус дружбы NPC был одним из списка. Удалите, чтобы статус не требовался.
}
],
"SkillConditions": // Каждый навык в списке должен иметь уровень, равный или превышающий указанный. Можно использовать все закодированные навыки в оригинальной игре, включая Удачу. Нельзя использовать пользовательские навыки.
[
{ "SkillName": "Фермерство", "SkillLevel": 1 }
],
"StatsConditions": // Каждая статистика в списке должна иметь значение, равное или превышающее заданное. Выберите StatsName или StatsLabel.
[
{
"StatsName": "СырСделан", //[ПосеянныеСемена|ДоставленныеПредметы|ПриготовленныеПредметы|ИзготовленныеПредметы|СнесенныеКуриныеЯйца|СнесенныеУтиныеЯйца|ПроизводствоКоровьегоМолока|ПроизводствоКозьегоМолока|ПроизводствоКроличьейШерсти|ПроизводствоОвечьейШерсти|ПроизводствоСыра|ПроизводствоКозьегоСыра|НайденоТрюфелей|СобраноКамней|РаздробленныхКамней|ВырытойЗемли|ДарованныхПодарков|ВремяБезСознания|СреднееВремяОтходаСна|ВремяВыловаРыбы|ТреснувшиеВалуны|РазрубленныеПни|ПройденныеШаги|УбитыеМонстры|НайденоАлмазов|Призматические [Найдено] [Другие драгоценные камни] [Найдено] [Пещерная морковь] [Найдено] [Медь] [Найдено] [Железо] [Найдено] [Уголь] [Найдено] [Монеты] [Найдено] [Найдено] [Иридий] [Найдено] [Выплавлено] [Напитки] [Сделано] [Сварено] [Изготовлено] [Дней игры] [Дней игры] [Уничтожено] [Палочки] [Найдено] [Заметки] [Задания выполнены] [Уровень звезды] [Урожай отправлен] [Доставлен] [Предметы собраны] [Убиты] [Слизи] [Треснуто] [Хорошие друзья] [Заработано] [Деньги человека] [По умолчанию] [Ноль].
"StatsLabel": "Name", // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] Это текущая игровая статистика, идентифицируемая по метке. Если будут добавлены другие, они также должны поддерживаться. Также будут идентифицироваться пользовательские метки статистики, добавленные другими модами. Значение по умолчанию — null.
"Сумма": 1 // Сумма, которой статус должен быть равен или больше, чтобы условие было действительным.
}
],
"CollectionConditions": // Каждое условие сбора списка должно иметь значение, равное или превышающее определенную сумму.
[
{
«Сбор»: «Отправлено», //[Отправлено|Рыба|Артефакты|Минералы|Кулинария|Изготовление] Требуется.
"Name": "Oil", // Устарело, вместо этого используются идентификаторы. Имя объекта или рецепта для коллекции "Crafting". Если это не коллекция "Crafting", будет выполнен поиск по этому имени в списке объектов для поиска индекса. Если имя не найдено, буква игнорируется. Будет объединено с другими свойствами. Значение по умолчанию — null.
"Index": 211, // Устарело, вместо него используются идентификаторы. Индекс объекта. Будет комбинироваться с другими свойствами. Значение по умолчанию — null.
"Ids": [ "282", "MossSoup" ], //Идентификаторы предметов или названия рецептов крафта. Будут объединены с другими свойствами. Суммы суммируются для сравнения со свойством "Amount".
"Сумма": 10 // Общее количество объектов в коллекции должно быть равно или больше, чтобы условие было верным.
}
],
"SpecialDateCondition": // Должна быть эта дата или более поздняя.
{
"SpecialDate": "ChildBirth", //[Свадьба|РождениеРебёнка] Обязательно
"YearsSince": 1, // Количество лет с момента наступления даты. 0 соответствует фактической дате, 1 — текущему году. Значение по умолчанию — 0.
"WhichChild": 1 //Если свойство SpecialDate равно ChildBirth, оно будет указывать на ребёнка. Значение по умолчанию — 1;
},
"ExpandedPrecondition": "d Mon Fri/HasItem Pink Cake/!JojaMartComplete/!w rainy", //Требуется мод Expanded Preconditions Utility. Чтобы понять, как это работает, обратитесь к документации к этому моду. Если мод не загружен, письмо не будет доставлено.
"ExpandedPreconditions": [ "!z spring/t 600 1000", "f Linus 1000/w rainy/z spring", "f Linus 2500" ], //Требуется мод Expanded Preconditions Utility. Чтобы понять, как это работает, обратитесь к документации к этому моду. Если мод не загружен, письмо не будет доставлено.
"RandomChance": 0.25, // Мод проверяет, меньше ли заданного случайное число от 0 до 1. Одно и то же сохранение в один и тот же день для одной и той же буквы всегда будет иметь одинаковый результат, чтобы избежать читерства.
"Buildings": ["Coop","Big Coop","Deluxe Coop"], // Требует, чтобы одно из зданий было построено на ферме в данный момент.
"RequireAllBuildings": false, // Если true, требуется, чтобы все здания из списка «Здания» были построены на ферме. Значение по умолчанию — false.
"MailReceived": ["jojaVault","ccVault"], // Требует получения одного из писем. Список игр также содержит другие элементы, не являющиеся почтой, например, флаги центра сообщества.
"RequireAllMailReceived": false, // Если true, требуется, чтобы все письма из списка "MailReceived" были получены. Значение по умолчанию — false.
"MailNotReceived": ["jojaVault","ccVault"], // Требует, чтобы письма не были получены. Список игр также содержит другие элементы, не являющиеся почтой, например, флаги центра сообщества.
"EventsSeen": [ "4", "32423" ], // Требует, чтобы игрок видел одно из событий. Должна быть строкой, но также может работать как целое число для совместимости с ретро-версиями.
"RequireAllEventsSeen": false, // Если true, требуется, чтобы игрок видел все события из списка "EventsSeen". Значение по умолчанию — false.
"HasMods": [ "SMAPI.ConsoleCommands", "SMAPI.SaveBackup" ], // Требует загрузки одного из модов. Должен быть указан уникальный идентификатор мода.
"RequireAllMods": false, // Если true, требуется загрузка всех модов из списка "HasMods". Значение по умолчанию — false.
"EventsNotSeen": [ "4", "32423" ], // Требует, чтобы события не были видны игроку. Должна быть строкой, но также может работать как целое число для совместимости с ретро-версиями.
"RecipeKnown": ["Пицца","Бургер выживания"], // Требует, чтобы игрок выучил один из рецептов.
"RequireAllRecipeKnown": false, // Если true, требуется, чтобы игрок изучил все рецепты из списка "RecipeKnown". Значение по умолчанию — false.
"RecipeNotKnown": ["Wild Bait"], // Требует, чтобы рецепты не были изучены игроком.
"KeepValid": false // Если это значение равно true, то после выполнения условий письмо остаётся действительным до прочтения. Значение по умолчанию — false.
}
]MailRepository.SaveLetter(
новое письмо(
"LetterUniqueId"
,"Пользовательский текст письма."
Нужна помощь с загрузкой или установкой? Присоединяйтесь к нашему сообществу Discord для поддержки!
Игровые решения
Ресурсы
Партнеры
Подписывайтесь на нас
Larvas Limited
Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK