[
{
"Id": "MyMod.MyMailId", // 문자 ID입니다. 충돌을 피하기 위해 고유한 문자열이어야 합니다. 또한 공백이 포함되어서는 안 됩니다.
"GroupId": "MyMod.MyGroupId", // 편지 그룹 ID입니다. 동일한 그룹 ID를 가진 편지는 같은 날에 배달되지 않습니다. 먼저 등록된 편지가 우선권을 가지며, 그룹 ID가 ".Random"으로 끝나는 경우 무작위로 편지가 선택됩니다. 기본값은 null입니다.
"제목": "내 편지 제목", // 편지 제목. 컬렉션 메뉴에 표시됩니다. 컬렉션에 편지가 표시되지 않도록 하려면 null로 설정하거나 해당 줄을 삭제하세요. 번역 파일이 제공되는 경우 여기에 번역 키를 입력해야 하지만, 제목이 없는 경우 null로 설정해도 됩니다.
"텍스트": "@^님께, 제 맞춤 메일입니다.", // 편지 본문입니다. @는 플레이어 이름을, ^는 줄바꿈을 위해 사용할 수 있습니다. 기본 게임 명령어를 사용하여 돈, 아이템 등을 추가할 수도 있습니다. 번역 파일이 제공되는 경우, 여기에 번역 키를 입력하세요.
"RandomlyChooseAttachment": 2, // 숫자를 설정하면 그룹별로 첨부 파일 목록에서 해당 개수만큼의 항목을 무작위로 선택합니다. 기본값은 null입니다.
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // 여기에 그룹과 개수를 설정하면 RandomlyChooseAttachment에 설정된 그룹과 개수 대신 해당 개수를 사용하여 아이템을 선택합니다. 기본값은 비어 있습니다.
"AttachmentGroupWithReplacement": [ "CaveItems" ], // 첨부 파일은 기본적으로 목록에서 무작위로 선택되며, 대체되지 않습니다. 첨부 파일을 대체하여 선택되도록 하려면 그룹을 목록에 추가하세요. 그룹을 추가하지 않은 경우 빈 문자열을 사용하세요. 기본값은 빈 목록입니다.
"첨부 파일": [ // 첨부 파일 목록입니다. 메일에 항목을 첨부하지 않으려면 이 속성을 제거하세요.
{
"Type": "Object", // [Object|BigCraftable|Tool|Ring|Furniture|Weapon|Boots|DGA|QualifiedItemId|None] 필수. 부착될 아이템의 유형입니다. 지정하지 않으면 아이템이 무시됩니다. 'None'은 로그에서 오류 없이 항상 무시되며, 부착물을 추가하지 않을 확률을 높이고 싶을 때 사용해야 합니다.
"이름": "Cave Carrot", // 아이템 인덱스를 찾는 데 사용됩니다. JSON Assets와 같은 사용자 정의 객체를 사용하는 경우 필수입니다. DGA를 사용하는 경우 전체 DGA ID를 입력해야 합니다. 지정하지 않으면 인덱스가 사용됩니다. 기본값은 null입니다.
"Index": "(0)78", // 항목의 인덱스입니다. 정규화된 항목 ID를 문자열로 지정해야 하지만, 역호환성을 위해 정수로도 사용할 수 있습니다. 이름이 지정되지 않았거나 해당 이름에 해당하는 항목을 찾을 수 없는 경우 인덱스가 사용됩니다. 그렇지 않으면 첨부 파일은 무시됩니다. 유형이 DGA인 경우 무시됩니다.
"Stack": 1, // 전달할 아이템의 스택 값입니다. Objects 및 BigCraftable에만 사용됩니다. 기본값은 1입니다.
"Quality": 2, // 배송될 품목의 품질 값입니다. Object에만 사용됩니다. 0 = 없음, 1 = 은, 2 = 금, 4 = 이리듐. 기본값은 0입니다.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // 메일 중 하나를 수신해야 합니다. 게임 목록에는 커뮤니티 센터 플래그처럼 메일이 아닌 다른 항목도 포함됩니다. 기본값은 null이므로 메일 수신을 요구하지 않습니다.
"RequireAllMailReceived": false, // true인 경우 "RequireMailReceived" 목록에 있는 모든 메일을 수신해야 합니다. 기본값은 false입니다.
"ProbabilityWeight": 1, // 이 부착물이 전달할 부착물을 선택할 때 가지는 가중치입니다. 관리자는 주어진 그룹의 모든 가중치를 합산하고, 이 가중치를 전체 가중치로 나누어 확률을 계산합니다. 기본값은 1입니다.
"RandomGroup": "CaveItems" // 무작위로 아이템을 선택할 경우, 찾은 그룹별로 목록을 그룹화하고 각 그룹에서 설정된 개수를 선택합니다. 기본값은 기본 그룹으로 사용되는 빈 문자열입니다.
},
{
"Type": "Tool", // 도구를 사용할 경우, 지원되는 도구만 첨부할 수 있습니다.
"이름": "도끼", // [도끼|괭이|물뿌리개|곡괭이|낫|황금낫|우유통|가위|낚싯대|냄비|반환용 홀] 도구에 필수입니다. 지원되는 도구의 이름입니다. 그렇지 않으면 부착물이 무시됩니다.
"UpgradeLevel": 1 // 도구의 업그레이드 레벨. 일반 도구: 0 = 돌, 1 = 구리, 2 = 강철, 3 = 금, 4 = 이리듐. 낚싯대: 0 = 대나무 낚싯대, 1 = 연습용 낚싯대, 2 = 유리 섬유 낚싯대, 3 = 이리듐 낚싯대. 다른 유형의 도구는 무시됩니다. 기본값은 0입니다.
},
{
"유형": "DGA", //DGA 항목
"이름": "spacechase0.DynamicGameAssets.Example/내 사용자 지정 아이템", // 전체 DGA ID를 사용하세요. 필수입니다.
"Stack": 10, // 전달할 아이템의 스택 값입니다. Objects 및 BigCraftable에만 사용됩니다. 기본값은 1입니다.
"Quality": 2 // 배송될 품목의 품질 값입니다. Object에만 사용됩니다. 0 = 없음, 1 = 은, 2 = 금, 4 = 이리듐. 기본값은 0입니다.
},
{
"Type": "QualifiedItemId", //지원되는 모든 항목
"Index": "(0)78", // 항목의 적격 항목 ID입니다.
"Stack": 10, // 전달할 아이템의 스택 값입니다. Objects 및 BigCraftable에만 사용됩니다. 기본값은 1입니다.
"Quality": 2 // 배송될 품목의 품질 값입니다. Object에만 사용됩니다. 0 = 없음, 1 = 은, 2 = 금, 4 = 이리듐. 기본값은 0입니다.
}
],
"Recipe": "Recipe Name", // 메일에 레시피를 첨부하지 않으려면 해당 줄을 삭제하세요. 메일에 다른 첨부 파일이 없는 경우에만 작동합니다. DGA 레시피의 경우 ID 부분만 사용하세요(ModID는 제외).
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // MailReceived 목록에 추가 텍스트를 추가하는 데 사용합니다. 바닐라 플래그나 기타 MFM 문자 ID를 추가하는 데 유용할 수 있습니다.
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], //MailReceived 목록에서 제거할 텍스트입니다. 새 메일, 이벤트, 기본 플래그를 트리거하거나 다른 MFM 메일의 전송을 차단하는 데 사용할 수 있습니다.
"LetterBG": "CustomLetterBG.png", // 콘텐츠 팩에서 사용할 사용자 지정 글자 배경이 있는 파일 이름입니다. 게임 LetterBG 파일과 동일한 구조를 따라야 합니다. WhichBG는 해당 글자에 대해 이 파일을 기준으로 합니다. null이거나 제거된 경우, 모드는 게임 LetterBG를 사용합니다.
"WhichBG": 0, // 편지 배경의 ID입니다. 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 목록에서 제거할 텍스트입니다. 새 메일, 이벤트, 기본 플래그를 트리거하거나 다른 MFM 메일이 전송되지 않도록 하는 데 사용할 수 있습니다.
"ReplyResponseDialog": "씨앗 요청 편지가 전송되었습니다.", // 이 답장 옵션을 선택하면 표시될 텍스트입니다. 번역 파일이 제공되는 경우 여기에 번역 키를 입력해야 합니다.
"비용": 50 // 플레이어가 이 옵션을 선택하는 데 필요한 금액입니다. 플레이어가 이 옵션을 선택하면 해당 금액이 플레이어의 돈에서 즉시 차감됩니다. 항상 비용이 없는 옵션을 제공해야 합니다. 그렇지 않으면 플레이어가 완전히 잠길 수 있습니다.
}
]
},
"Repeatable": false, // true이면 관리자가 문자 ID가 이미 전달되었는지 확인하지 않습니다. 기본값은 false입니다.
"AutoOpen": false, // true이면 관리자는 조건이 충족된 후 하루가 시작될 때 편지를 엽니다. 편지 ID는 읽음으로 표시되고, 레시피가 설정되어 있으면 학습됩니다. 편지가 표시되지 않으므로 제목, 텍스트, 배경 등의 시각적 속성과 첨부 파일은 사용되지 않습니다.
// 배송 조건
//아래는 배송 조건입니다. 해당 조건을 확인하지 않으려면 해당 줄을 삭제하세요.
"날짜": "10 봄 Y1", // 해당 날짜 또는 그 이후 날짜여야 합니다. 형식은 "[1-28] [봄|여름|가을|겨울] Y[1-999]"입니다.
"Days": [7,14,21,28], // 목록에 있는 날짜 중 하나여야 합니다.
"계절": ["가을"], // 목록에 있는 계절 중 하나여야 합니다. [봄|여름|가을|겨울]
"Weather": "sunny", // 게임 날씨와 같은 것 같습니다. 형식은 "[sunny|rainy]"입니다.
"HouseUpgradeLevel": 2, // 주택 업그레이드 레벨은 정의된 레벨 이상이어야 합니다. 0 - 시작 주택(사용할 이유 없음, 줄만 제거), 1 - 주방, 2 - 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": "치즈 제조", //[씨앗 심기|배송된 아이템|조리된 아이템|제작된 아이템|낳은 닭알|낳은 오리알|생산된 소젖|생산된 염소젖|생산된 토끼털|생산된 양털|치즈 제조|치즈 제조된 염소|발견된 트러플|채집된 돌|파쇄된 바위|흙갈기|준 선물|의식 상실 시간|평균 취침 시간|낚시한 시간|잡은 물고기|금이 간 바위|잘라낸 그루터기|걸음 수|죽인 몬스터|발견된 다이아몬드|프리즈매틱 ardsFound|OtherPreciousGemsFound|CaveCarrotsFound|CopperFound|IronFound|CoalFound|CoinsFound|GoldFound|IridiumFound|BarsSmelted|BeveragesManade|PreservesManade|PiecesOfTrashRecycled|MysticStonesCrushed|DaysPlayed|WeedsDeliminated|SticksChopped|NotesFound|QuestsCompleted|StarLevelCropsShipped|CropsShipped|ItemsForaging|SlimesKilled|GeodesCracked|GoodFriends|IndividualMoneyEarned] 기본값은 null입니다.
"StatsLabel": "이름", // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] 레이블로 식별되는 현재 게임 통계입니다. 더 많은 통계가 추가되면 해당 통계도 지원되어야 합니다. 다른 모드가 추가한 사용자 지정 통계 레이블도 식별합니다. 기본값은 null입니다.
"금액": 1 // 조건이 유효하려면 상태가 같아야 하는 금액 이상이어야 합니다.
}
],
"CollectionConditions": // 목록의 각 수집 조건은 정의된 양보다 크거나 같은 값을 가져야 합니다.
[
{
"수집": "배송됨", //[배송됨|생선|유물|광물|요리|제작]이 필요합니다.
"이름": "석유", //더 이상 사용되지 않음, 대신 ID를 사용합니다. '제작' 컬렉션의 객체 또는 제조법 이름입니다. 제작 컬렉션이 아닌 경우, 객체 목록에서 해당 이름을 찾아 색인을 찾습니다. 이름을 찾을 수 없으면 해당 문자는 무시됩니다. 다른 속성과 결합됩니다. 기본값은 null입니다.
"Index": 211, //더 이상 사용되지 않음. 대신 ID를 사용합니다. 객체의 인덱스입니다. 다른 속성과 결합됩니다. 기본값은 null입니다.
"ID": [ "282", "MossSoup" ], //아이템 ID 또는 제작 레시피 이름입니다. 다른 속성과 결합됩니다. 수량은 합계되어 Amount 속성과 비교됩니다.
"Amount": 10 // 조건이 유효하려면 컬렉션에 있는 객체의 총량이 같거나 커야 합니다.
}
],
"SpecialDateCondition": // 해당 날짜이거나 이후여야 합니다.
{
"SpecialDate": "출산", //[결혼|출산] 필수
"YearsSince": 1, // 해당 날짜 이후 경과된 연도. 0은 실제 날짜, 1은 흐르는 연도와 일치합니다. 기본값은 0입니다.
"WhichChild": 1 //SpecialDate 속성이 ChildBirth이면 어떤 자녀인지 참조합니다. 기본값은 1입니다.
},
"ExpandedPrecondition": "d Mon Fri/HasItem Pink Cake/!JojaMartComplete/!w rainy", //확장된 전제 조건 유틸리티 모드가 필요합니다. 작동 방식을 확인하려면 해당 모드 설명서를 참조하세요. 모드가 로드되지 않으면 편지가 전달되지 않습니다.
"ExpandedPreconditions": [ "!z spring/t 600 1000", "f Linus 1000/w rainy/z spring", "f Linus 2500" ], //Expanded Preconditions 유틸리티 모드가 필요합니다. 작동 방식을 확인하려면 해당 모드 설명서를 참조하세요. 모드가 로드되지 않으면 편지가 전달되지 않습니다.
"RandomChance": 0.25, // 관리자는 0에서 1 사이의 난수가 주어진 숫자보다 작은지 확인합니다. 부정행위를 방지하기 위해 같은 날, 같은 글자를 저장하면 항상 같은 결과가 나옵니다.
"건물": ["협동조합", "대형 협동조합", "고급 협동조합"], // 농장에 현재 건설 중인 건물이 필요합니다.
"RequireAllBuildings": false, // true인 경우, "Buildings" 목록에 있는 모든 건물이 현재 농장에 건설되어 있어야 합니다. 기본값은 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" ], // 모드 중 하나를 로드해야 합니다. 모드의 UniqueID여야 합니다.
"RequireAllMods": false, // true인 경우 "HasMods" 목록에 있는 모든 모드가 로드되어야 합니다. 기본값은 false입니다.
"EventsNotSeen": [ "4", "32423" ], // 플레이어가 이벤트를 본 적이 없어야 합니다. 문자열이어야 하지만, 역호환성을 위해 정수로도 사용할 수 있습니다.
"RecipeKnown": ["피자", "서바이벌 버거"], // 플레이어가 레시피 중 하나를 배워야 합니다.
"RequireAllRecipeKnown": false, // true인 경우, 플레이어가 "RecipeKnown" 목록에 있는 모든 레시피를 이미 습득했어야 합니다. 기본값은 false입니다.
"RecipeNotKnown": ["Wild Bait"], // 플레이어가 해당 요리법을 배우지 않았어야 합니다.
"KeepValid": false // true인 경우, 조건이 충족되면 읽을 때까지 메일을 유효 상태로 유지합니다. 기본값은 false입니다.
}
]메일 저장소.SaveLetter(
새로운 편지(
"LetterUniqueId"
,"편지 사용자 정의 텍스트."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);
메일 저장소.SaveLetter(
새로운 편지(
"LetterUniqueId"
,"편지 사용자 정의 텍스트."
,새로운 목록<아이템> { 새로운 StardewValley.Object(60,5) }
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);
메일 저장소.SaveLetter(
새로운 편지(
"LetterUniqueId"
, "문자 사용자 정의 텍스트."
, "레시피 고유 이름"
, (l) => !Game1.player.cookingRecipes.ContainsKey(l.레시피)
)
);
메일 저장소.SaveLetter(
새로운 편지(
"LetterUniqueId"
,"편지 사용자 정의 텍스트."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
1
){텍스트색상=8}
);
메일 저장소.SaveLetter(
새로운 편지(
"LetterUniqueId"
,"편지 사용자 정의 텍스트."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,Game1.player.mailReceived.Add(l.Id)
1
){
LetterTexture=helper.Content.Load("CustomLetterBG.png")
,텍스트색상=4
}
);
여기서 CustomLetterBG.png는 "LooseSprites//letterBG"와 동일한 구조를 따르는 이미지 파일입니다.메일 저장소.SaveLetter(
새로운 편지(
"LetterUniqueId"
,"myletter.translation.key.text"
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
){
제목 = "myletter.translation.key.title",
I18N = 도우미.번역
}
);
Larvas Limited
Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK