

[
{
"Id": "MyMod.MyMailId", // ID surat. Penting untuk menggunakan string unik agar tidak terjadi konflik. Selain itu, tidak boleh ada spasi.
"GroupId": "MyMod.MyGroupId", // ID grup surat. Surat dengan ID grup yang sama tidak akan pernah terkirim di hari yang sama. Surat yang terdaftar pertama akan diprioritaskan, kecuali ID grup diakhiri dengan ".Random". Dalam hal ini, surat acak akan dipilih. Nilai default-nya adalah null.
"Judul": "Judul Surat Saya", // Judul surat. Akan ditampilkan di menu koleksi. Atur nilainya menjadi null atau hapus baris jika Anda tidak ingin surat tersebut muncul di koleksi. Jika berkas terjemahan tersedia, Anda harus memasukkan kunci terjemahan di sini, tetapi Anda tetap dapat membiarkannya null jika tidak ada Judul.
"Teks": "Kepada Yth. @^Ini adalah surat pribadi saya.", // Teks surat. Anda dapat menggunakan @ untuk memasukkan nama pemain dan ^ untuk mengganti baris. Anda juga dapat menggunakan perintah dasar permainan untuk menambahkan uang, item, dan sebagainya. Jika berkas terjemahan tersedia, Anda harus memasukkan kunci terjemahan di sini.
"RandomlyChooseAttachment": 2, // Jika angka ditetapkan, jumlah item yang ditentukan akan dipilih secara acak dari daftar lampiran, per grup. Nilai default-nya adalah null.
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // Jika grup dan jumlah diatur di sini, jumlah tersebut akan digunakan untuk memilih item, bukan jumlah yang diatur di RandomlyChooseAttachment. Nilai default kosong.
"AttachmentGroupWithReplacement": [ "CaveItems" ], // Lampiran dipilih secara acak dari daftar tanpa penggantian secara default. Jika Anda ingin pilihan tersebut dipilih untuk menggantikan lampiran, tambahkan grup ke daftar. Jika Anda tidak menambahkan grup, gunakan string kosong. Nilai defaultnya adalah daftar kosong.
"Lampiran": [ // Daftar lampiran. Hapus properti untuk tidak melampirkan item ke email.
{
"Type": "Object", // [Object|BigCraftable|Tool|Ring|Furniture|Weapon|Boots|DGA|QualifiedItemId|None] Diperlukan. Jenis item yang akan dilampirkan. Jika tidak diberikan, item tersebut akan diabaikan. 'None' selalu diabaikan tanpa kesalahan di log dan harus digunakan jika Anda ingin memastikan tidak ada lampiran.
"Nama": "Cave Carrot", // Digunakan untuk menemukan indeks item. Itu diperlukan jika menggunakan objek kustom seperti Aset JSON. Seharusnya ID DGA lengkap menggunakan DGA. Jika tidak diberikan, indeks akan digunakan. Default-nya adalah null.
"Indeks": "(0)78", // Indeks suatu item. Harus berupa ID item yang memenuhi syarat sebagai string, tetapi juga dapat digunakan sebagai integer untuk kompatibilitas retro. Jika tidak ada nama yang diberikan atau item untuk nama tersebut tidak ditemukan, indeks akan digunakan. Jika tidak, lampiran akan diabaikan. Diabaikan jika tipenya adalah DGA.
"Stack": 1, // Nilai tumpukan item yang akan dikirim. Hanya digunakan untuk Objek dan BigCraftable. Nilai default-nya adalah 1.
"Kualitas": 2, // Nilai kualitas barang yang akan dikirim. Hanya digunakan untuk Objek. 0 = tidak ada, 1 = perak, 2 = emas, 4 = iridium. Nilai default adalah 0;
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Memerlukan salah satu email untuk diterima. Daftar permainan juga berisi hal-hal lain yang bukan email, seperti bendera pusat komunitas. Nilai default-nya adalah null, artinya tidak ada email yang diterima.
"RequireAllMailReceived": false, // Jika benar, pastikan semua email dalam daftar "RequireMailReceived" telah diterima. Nilai default-nya adalah false.
"ProbabilityWeight": 1, // Bobot yang dimiliki lampiran ini saat memilih yang akan dikirimkan. Mod menjumlahkan semua bobot dalam grup tertentu dan memberikan probabilitas dengan membagi bobot ini dengan total. Nilai default-nya adalah 1.
"RandomGroup": "CaveItems" // Saat memilih item secara acak, kelompokkan daftar berdasarkan grup yang ditemukan dan pilih jumlah yang ditetapkan dari setiap grup. Nilai default adalah string kosong yang berfungsi sebagai grup default.
},
{
"Jenis": "Alat", // Saat menggunakan alat, hanya alat yang didukung yang dapat dilampirkan.
"Nama": "Kapak", // [Kapak|Cangkul|Penyiram Tanaman|Beliung|Sabit|Sabit Emas|Ember Susu|Gunting|Pancing|Wajan|Tongkat Pengembalian] Diperlukan untuk alat. Nama alat yang didukung. Jika tidak, lampiran akan diabaikan.
"UpgradeLevel": 1 // Tingkat peningkatan alat. Alat biasa: 0 = batu, 1 = tembaga, 2 = baja, 3 = emas, 4 = iridium. Joran Pancing: 0 = Galah Bambu, 1 = Joran Latihan, 2 = Joran Fiberglass, 3 = Joran Iridium. Diabaikan untuk jenis lainnya. Nilai default adalah 0.
},
{
"Jenis": "DGA", //item DGA
"Nama": "spacechase0.DynamicGameAssets.Contoh/Item Kustom Saya", // gunakan ID DGA lengkap. Wajib diisi.
"Stack": 10, // Nilai tumpukan item yang akan dikirim. Hanya digunakan untuk Objek dan BigCraftable. Nilai default-nya adalah 1.
"Kualitas": 2 // Nilai kualitas barang yang akan dikirim. Hanya digunakan untuk Objek. 0 = tidak ada, 1 = perak, 2 = emas, 4 = iridium. Nilai default adalah 0;
},
{
"Type": "QualifiedItemId", //Item apa pun yang didukung
"Indeks": "(0)78", // ID Item Berkualitas suatu item.
"Stack": 10, // Nilai tumpukan item yang akan dikirim. Hanya digunakan untuk Objek dan BigCraftable. Nilai defaultnya adalah 1;
"Kualitas": 2 // Nilai kualitas barang yang akan dikirim. Hanya digunakan untuk Objek. 0 = tidak ada, 1 = perak, 2 = emas, 4 = iridium. Nilai default adalah 0;
}
],
"Resep": "Nama Resep", // Hapus baris ini jika Anda tidak ingin melampirkan resep ke email. Ini hanya akan berfungsi jika Anda tidak memiliki lampiran lain. Untuk resep DGA, gunakan hanya bagian ID (abaikan ModID)
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // Gunakan ini untuk menambahkan teks tambahan ke daftar MailReceived. Dapat berguna untuk menambahkan flag vanilla atau ID huruf MFM lainnya.
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], //Teks yang akan dihapus dari daftar MailReceived. Ini dapat digunakan untuk memicu email baru, acara, flag standar, dan mencegah pengiriman email MFM lainnya...
"LetterBG": "CustomLetterBG.png", // Nama berkas dalam paket konten Anda yang memiliki latar belakang huruf khusus untuk digunakan. Struktur berkas ini harus sama dengan berkas LetterBG dalam game. WhichBG akan relatif terhadap berkas ini untuk huruf ini. Jika null atau dihapus, mod akan menggunakan LetterBG dalam game.
"WhichBG": 0, //ID latar belakang huruf. 0 = klasik, 1 = buku catatan, 2 = piramida
"TextColor": -1, //Hapus baris ini untuk menggunakan warna default. Akan diabaikan jika CustomTextColor diatur. -1 = Merah Tua, 0 = Hitam, 1 = Biru Langit, 2 = Merah, 3 = Biru Ungu, 4 = Putih, 5 = Merah Jingga, 6 = Hijau Limau, 7 = Biru Kehijauan, 8 = Abu-abu Tua
"CustomTextColorName": "Putih", //Warna teks.[http://www.foszor.com/blog/xna-color-chart/] Default akan menggunakan properti TextColor.
"UpperRightCloseButton": "CustomCloseButton.png", // Nama berkas dalam paket konten Anda yang memiliki tombol tutup khusus untuk digunakan. Ukurannya harus 12 x 12. Jika null atau dihapus, tombol default akan digunakan.
"ReplyConfig": { // Jika Anda ingin pemain mengirimkan balasan setelah membaca surat. Ini akan menampilkan opsi balasan yang akan menambahkan satu atau lebih "ReceivedMail" berdasarkan jawaban pemain. Logika tambahan apa pun yang terkait dengan balasan perlu diimplementasikan berdasarkan ReceivedMail yang ditambahkan.
"QuestionKey": "MyMod.MyMailId.Question", //Kunci untuk mengidentifikasi pertanyaan Anda. Kunci ini hanya digunakan secara internal, tetapi harus unik dalam paket konten Anda untuk menghindari konflik antar balasan.
"QuestionDialog": "Kirim balasan dengan memilih hadiah Anda:", //Pertanyaan atau teks Anda yang akan ditampilkan di atas opsi balasan. Jika berkas terjemahan disediakan, Anda harus memasukkan kunci terjemahan di sini.
"Balasan": [
{
"ReplyKey": "MyMod.MyMailId.Reply1", //Harus unik antara balasan pertanyaan.
"ReplyOptionDialog": "Saya ingin seed.", //Teks opsi yang akan ditampilkan di daftar balasan. Jika berkas terjemahan disediakan, Anda harus meletakkan kunci terjemahan di sini.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Memerlukan salah satu email untuk diterima. Daftar permainan juga berisi hal-hal lain yang bukan email, seperti bendera pusat komunitas. Nilai default-nya adalah null, artinya tidak ada email yang diterima.
"RequireAllMailReceived": false, // Jika benar, pastikan semua email dalam daftar "RequireMailReceived" telah diterima. Nilai default-nya adalah false.
"MailReceivedToAdd": [ "MyMod.MyMailId.PlayerSeedOption" ], // Teks yang akan ditambahkan ke daftar MailReceived. Ini dapat digunakan untuk memicu email baru, acara, flag standar, dan mencegah pengiriman email MFM lainnya...
"MailReceivedToRemove": [ "MyMod.MyMailId.PlayerSapplingOption" ], //Teks yang akan dihapus dari daftar MailReceived. Ini dapat digunakan untuk memicu email baru, acara, flag standar, dan menghentikan pengiriman email MFM lainnya...
"ReplyResponseDialog": "Surat permintaan benih Anda telah terkirim.", //Teks yang akan ditampilkan setelah opsi balasan ini dipilih. Jika berkas terjemahan disediakan, Anda harus meletakkan kunci terjemahan di sini.
"Biaya": 50 // Jumlah uang yang dibutuhkan pemain untuk memilih opsi ini. Jika mereka memilihnya, jumlah tersebut akan langsung dikurangi dari uang pemain. Selalu sediakan opsi tanpa biaya, atau Anda mungkin akan mengunci pemain secara permanen.
}
]
},
"Dapat diulang": false, // Jika benar, mod tidak akan memeriksa apakah ID huruf sudah terkirim. Nilai default-nya adalah false.
"AutoOpen": false, // Jika benar, mod akan membuka surat di awal hari setelah kondisi terpenuhi. ID surat akan ditandai sebagai telah dibaca dan jika ada set resep, akan dipelajari. Karena surat tidak akan pernah ditampilkan, properti visual seperti judul, teks, latar belakang... tidak akan pernah digunakan, begitu pula lampirannya.
// SYARAT DAN KETENTUAN PENGIRIMAN
//Berikut adalah ketentuan pengiriman. Hapus salah satu baris jika Anda tidak ingin memeriksa ketentuan tersebut.
"Tanggal": "10 musim semi Y1", // Harus tanggal tersebut atau setelahnya. Formatnya adalah "[1-28] [musim semi|musim panas|musim gugur|musim dingin] Y[1-999]".
"Hari": [7,14,21,28], // Harus salah satu hari dalam daftar.
"Musim": ["gugur"], // Harus salah satu musim dalam daftar. [semi|panas|gugur|dingin]
"Cuaca": "cerah", // Pasti cuaca pertandingan itu. Formatnya adalah "[cerah|hujan]".
"HouseUpgradeLevel": 2, // Tingkat peningkatan rumah harus sama atau lebih tinggi dari yang ditetapkan. 0 - rumah permulaan (tidak ada alasan untuk menggunakan ini, cukup hapus barisnya), 1 - dapur, 2 - lantai dua, 3 - ruang bawah tanah.
"DeepestMineLevel": 80, // Level tambang terdalam harus sama atau lebih tinggi dari yang ditetapkan. 120 adalah level terakhir tambang, 121 adalah level pertama gua tengkorak.
"CurrentMoney": 10000, // Uang saat ini harus sama atau lebih tinggi dari yang ditetapkan.
"TotalMoneyEarned": 500000, // Total uang yang diperoleh harus sama atau lebih tinggi dari yang ditetapkan.
"FriendshipConditions": // Setiap NPC dalam daftar harus memeriksa semua kondisi.
[
{
"NpcName": "Lewis", //Nama NPC. Dapat menggunakan NPC khusus.
"FriendshipLevel": 8, // NPC harus memiliki level hati persahabatan yang sama atau lebih tinggi dari yang ditentukan. Nilai defaultnya adalah 0.
"FriendshipStatus": ["Berkencan","Bertunangan","Menikah"] // [Bersahabat|Berkencan|Bertunangan|Menikah|Bercerai] Status pertemanan NPC harus salah satu dari daftar. Hapus jika tidak memerlukan status.
}
],
"SkillConditions": // Setiap skill dalam daftar harus memiliki level yang sama atau lebih tinggi dari yang ditentukan. Dapat menggunakan semua skill berkode dalam game vanilla, termasuk Luck. Tidak dapat menggunakan skill khusus.
[
{ "SkillName": "Pertanian", "Tingkat Keterampilan": 1 }
],
"StatsConditions": // Setiap statistik dalam daftar harus memiliki nilai yang sama atau lebih tinggi dari yang ditentukan. Pilih StatsName atau StatsLabel
[
{
"StatsName": "Keju Buatan", //[Benih Ditabur|Barang Dikirim|Barang Dimasak|Barang Dibuat|Telur Ayam Ditelur|Telur Bebek Ditelur|Susu Sapi Dihasilkan|Susu Kambing Dihasilkan|Wol Kelinci Dihasilkan|Wol Domba Dihasilkan|Keju Buatan|Keju Kambing Buatan|Truffle Ditemukan|Batu Dikumpulkan|Batu Dihancurkan|Kotoran Ditambang|Hadiah Diberikan|Waktu Tidak Sadar|Rata-Rata Waktu Tidur|Waktu Memancing|Ikan Ditangkap|Batu Retak|Tunggul Dicacah|Langkah Diambil|Monster Dibunuh|Berlian Ditemukan|Prismatik Sh Bahasa Indonesia: ardsDitemukan|PermataBerhargaLainnyaDitemukan|GuaWortelDitemukan|TembagaDitemukan|BesiDitemukan|BatubaraDitemukan|KoinDitemukan|EmasDitemukan|IridiumDitemukan|BatangDilebur|MinumanDibuat|Selai Buatan|PotonganSampahDidaurUlang|BatuMistikDihancurkan|HariDimainkan|GulmaDihilangkan|TongkatDicincang|CatatanDitemukan|MisiSelesai|TingkatBintangTanamanDikirim|TanamanDikirim|BarangDicari|LendirDibunuh|GeodeRetak|TemanBaik|UangPeroranganDiperoleh] Defaultnya adalah null.
"StatsLabel": "Nama", // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] Ini adalah statistik permainan saat ini yang diidentifikasi oleh label. Jika ada tambahan, seharusnya juga didukung. Ini juga akan mengidentifikasi label statistik khusus yang ditambahkan oleh mod lain. Nilai default-nya adalah null.
"Jumlah": 1 // Jumlah yang harus sama atau lebih besar pada status agar kondisinya valid.
}
],
"CollectionConditions": // Setiap kondisi pengumpulan daftar harus memiliki nilai yang sama atau lebih tinggi dari jumlah yang ditentukan.
[
{
"Koleksi": "Dikirim", //[Dikirim|Ikan|Artefak|Mineral|Memasak|Kerajinan] Diperlukan.
"Nama": "Minyak", //Tidak digunakan lagi, menggunakan ID sebagai gantinya. Nama objek atau resep untuk koleksi 'Kerajinan'. Jika bukan koleksi kerajinan, ia akan mencari nama tersebut dalam daftar objek untuk menemukan indeksnya. Jika nama tidak ditemukan, huruf tersebut diabaikan. Akan digabungkan dengan properti lainnya. Nilai default-nya adalah null.
"Indeks": 211, //Tidak digunakan lagi, menggunakan Id sebagai gantinya. Indeks objek. Akan digabungkan dengan properti lainnya. Nilai default-nya adalah null.
"Ids": [ "282", "MossSoup" ], //ID item atau nama resep kerajinan. Akan digabungkan dengan properti lainnya. Jumlahnya dijumlahkan untuk dibandingkan dengan properti Jumlah.
"Jumlah": 10 // Jumlah total objek dalam koleksi harus sama atau lebih besar agar kondisinya valid.
}
],
"SpecialDateCondition": // Harus tanggal tersebut atau setelahnya.
{
"SpecialDate": "ChildBirth", //[Pernikahan|ChildBirth] Diperlukan
"YearsSince": 1, //Jumlah tahun sejak tanggal kejadian. 0 akan sesuai dengan tanggal sebenarnya, 1 adalah tahun yang berjalan. Nilai default-nya adalah 0.
"WhichChild": 1 //Jika properti SpecialDate adalah ChildBirth, properti tersebut akan merujuk ke anak yang mana. Nilai default-nya adalah 1;
},
"ExpandedPrecondition": "d Sen Jum/HasItem Kue Merah Muda/!JojaMartComplete/!w hujan", //Membutuhkan mod Utilitas Prakondisi yang Diperluas. Lihat dokumentasi mod tersebut untuk melihat cara kerjanya. Jika mod tidak dimuat, surat tidak akan terkirim.
"ExpandedPreconditions": [ "!z spring/t 600 1000", "f Linus 1000/w rainy/z spring", "f Linus 2500" ], //Membutuhkan mod Utilitas Expanded Preconditions. Lihat dokumentasi mod tersebut untuk melihat cara kerjanya. Jika mod tidak dimuat, surat tidak akan terkirim.
"RandomChance": 0.25, // Mod akan memeriksa apakah angka acak dari 0 hingga 1 berada di bawah angka yang diberikan. Penyimpanan yang sama, pada hari yang sama untuk huruf yang sama, akan selalu menghasilkan hasil yang sama untuk menghindari kecurangan.
"Bangunan": ["Kandang","Kandang Besar","Kandang Mewah"], // Memerlukan salah satu bangunan yang sedang dibangun di pertanian.
"RequireAllBuildings": false, // Jika benar, wajibkan semua bangunan dalam daftar "Bangunan" untuk sedang dibangun di pertanian. Nilai default-nya adalah false.
"MailReceived": ["jojaVault","ccVault"], // Memerlukan salah satu surel telah diterima. Daftar permainan juga berisi hal-hal lain yang bukan surel, seperti bendera pusat komunitas.
"RequireAllMailReceived": false, // Jika benar, wajibkan semua email dalam daftar "MailReceived" telah diterima. Nilai default-nya adalah false.
"MailNotReceived": ["jojaVault","ccVault"], // Pastikan email belum diterima. Daftar permainan juga berisi hal-hal lain yang bukan email, seperti bendera pusat komunitas.
"EventsSeen": [ "4", "32423" ], // Salah satu acara harus dilihat oleh pemain. Harus berupa string, tetapi juga dapat digunakan sebagai bilangan bulat untuk kompatibilitas retro.
"RequireAllEventsSeen": false, // Jika benar, pastikan semua acara dalam daftar "EventsSeen" telah dilihat oleh pemain. Nilai default-nya adalah false.
"HasMods": [ "SMAPI.ConsoleCommands", "SMAPI.SaveBackup" ], // Memerlukan salah satu mod untuk dimuat. Harus berupa UniqueID mod.
"RequireAllMods": false, // Jika benar, wajibkan semua mod dalam daftar "HasMods" telah dimuat. Nilai default-nya adalah false.
"EventsNotSeen": [ "4", "32423" ], // Pastikan peristiwa tersebut belum pernah dilihat oleh pemain. Harus berupa string, tetapi juga dapat digunakan sebagai bilangan bulat untuk kompatibilitas retro.
"RecipeKnown": ["Pizza","Survival Burger"], // Memerlukan salah satu resep yang telah dipelajari oleh pemain.
"RequireAllRecipeKnown": false, // Jika benar, semua resep dalam daftar "RecipeKnown" harus sudah dipelajari oleh pemain. Nilai default-nya adalah false.
"RecipeNotKnown": ["Wild Bait"], // Membutuhkan resep yang belum dipelajari oleh pemain.
"KeepValid": false // Jika ini benar, setelah kondisi terpenuhi, email akan tetap valid hingga dibaca. Nilai default-nya adalah false.
}
]MailRepository.SimpanSurat(
Surat baru(
"Id Unik Surat"
,"Surat teks khusus."
,(l)=>!Game1.pemain.mailDiterima.Berisi(l.Id)
,(l)=>Game1.pemain.mailDiterima.Tambah(l.Id)
)
);
MailRepository.SimpanSurat(
Surat baru(
"Id Unik Surat"
,"Surat teks khusus."
,new List- { new StardewValley.Object(60,5) }
,(l)=>!Game1.pemain.mailDiterima.Berisi(l.Id)
,(l)=>Game1.pemain.mailDiterima.Tambah(l.Id)
)
);
MailRepository.SimpanSurat(
Surat baru(
"Id Unik Surat"
, "Surat teks khusus."
, "NamaResepUnik"
, (l) => !Game1.player.cookingRecipes.ContainsKey(l.Recipe)
)
);
MailRepository.SimpanSurat(
Surat baru(
"Id Unik Surat"
,"Surat teks khusus."
,(l)=>!Game1.pemain.mailDiterima.Berisi(l.Id)
,(l)=>Game1.pemain.mailDiterima.Tambah(l.Id)
1
){WarnaTeks=8}
);
MailRepository.SimpanSurat(
Surat baru(
"Id Unik Surat"
,"Surat teks khusus."
,(l)=>!Game1.pemain.mailDiterima.Berisi(l.Id)
,Game1.player.mailReceived.Add(l.Id)
1
){
Tekstur Huruf=helper.Konten.Muat("CustomLetterBG.png")
,WarnaTeks=4
}
);
Dimana CustomLetterBG.png adalah file gambar yang mengikuti struktur yang sama dengan "LooseSprites//letterBG"MailRepository.SimpanSurat(
Surat baru(
"Id Unik Surat"
,"hurufku.kunci.terjemahan.teks"
,(l)=>!Game1.pemain.mailDiterima.Berisi(l.Id)
,(l)=>Game1.pemain.mailDiterima.Tambah(l.Id)
){
Judul = "kunci.terjemahan.suratku.judul",
I18N = pembantu.Terjemahan
}
);
Butuh bantuan dengan unduhan atau instalasi? Bergabunglah dengan komunitas Discord kami untuk dukungan!
Larvas Limited
Room 1201, 12/F Tai Sang Bank Building 130-132 Des Voeux Road Central HK