logo
id
Bahasa Indonesia

Kerangka Mail Mod

Pembuat: Digus
Diperbarui:2025-03-28 14:16:59
49KB
mcafee
Otentikasi
Dipercaya oleh 200,000,000+ Pengguna

Mod Pra-syarat

akan diinstal secara otomatis saat Anda menggunakan Kerangka Mail Mod

Tentang Mod ini

Framework untuk menggunakan kotak surat dalam permainan. Perintah konsol untuk menyesuaikan surat. Antarmuka kode dan paket konten.
Tujuan:
Sederhanakan pengiriman surat ke pemain, berikan kontrol lebih besar atas kapan dan apa yang harus diterima.
Juga memberikan lebih banyak pilihan yang tidak mungkin dilakukan hanya dengan mengedit berkas data, seperti mengubah warna teks dan latar belakang surat sesuka hati.

Instalasi:

Catatan Perubahan:

1.20.0
  • Menambahkan aset kustom baru ke dalam game. (DIGUS.MailFrameworkMod/MailData) Artinya, huruf MFM kini dapat dimuat dengan Content Patcher dan menggunakan semua fiturnya seperti token. Properti yang sama juga didukung.
  • Huruf-huruf Paket Konten juga dimuat ke dalam aset kustom baru dan karenanya dapat diedit dengan Content Patcher.
  • Paket Konten kini dimuat ke dalam cache saat permainan dimulai, alih-alih dimuat ulang setiap kali penyimpanan dimuat. Anda dapat memaksa pemuatan ulang paket konten dengan perintah konsol.
  • Properti Teks dan Judul sekarang mendukung string yang dapat dijadikan Token.
  • Aset tekstur sekarang dapat menjadi aset game, bukan hanya aset dalam folder mod.
  • Properti GameStateQuery baru sebagai kondisi untuk mengirimkan surat.
1.19.0
  • Properti baru untuk menjaga surat tetap valid setelah semua ketentuan terpenuhi selama suatu hari tetapi surat tersebut tidak dibaca pada hari itu.
  • Fitur baru untuk menangani Lampiran yang Dipilih Secara Acak
  • Properti baru untuk menetapkan berapa banyak item dari daftar lampiran yang harus dipilih untuk pengiriman.
  • Properti baru untuk menetapkan "RandomGroup" ke Lampiran, sehingga memilih dari grup tersebut, bukan dari keseluruhan daftar.
  • Properti baru untuk menetapkan "Bobot" untuk lampiran tertentu, saat dipilih secara acak.
  • Properti baru untuk menetapkan berapa banyak item yang harus diambil dari grup tertentu, alih-alih menggunakan nilai default.
  • Properti baru untuk mengatakan apakah suatu item dari grup tertentu dapat dipilih lebih dari satu kali.
  • Kumpulan properti baru untuk menetapkan persyaratan MailReceived untuk lampiran dan balasan
  • Properti baru untuk mengatur MailReceived agar dihapus saat surat dibaca atau saat opsi balasan ditekan.
  • Properti baru untuk menetapkan biaya untuk opsi balasan tertentu.
  • Tipe Item Baru "None". Pada dasarnya, ini digunakan ketika Anda menginginkan kemungkinan acak untuk tidak mengirimkan item, tanpa memicu kesalahan/peringatan di log.
1.18.0
  • Properti Ids baru menggantikan Index dan Name untuk CollectionConditions. Properti ini dapat mengagregasi beberapa item, menjumlahkan nilainya untuk dibandingkan dengan jumlahnya.
  • Properti ReplyConfig baru untuk menambahkan perilaku balasan. Anda dapat menampilkan beberapa opsi kepada pemain setelah membaca email, dan pemain akan menambahkan satu atau beberapa teks MailReceived berdasarkan opsi yang dipilih. Logika mod tambahan dapat diimplementasikan berdasarkan pilihan tersebut.
  • Perbaikan pada huruf dengan resep yang tidak mendukung properti CustomTextColorName.
  • Memperbaiki pengecualian referensi nol saat item dengan nama nol dimuat dalam permainan.
1.17.1
  • Email paket konten dengan properti resep tidak boleh disertai lampiran agar dapat dikirim ulang jika resepnya tidak dipelajari. (properti resep diabaikan jika ada lampiran)
  • Memperbaiki resep masakan dengan logika yang sama yang diterapkan untuk membuat resep sebelumnya.
1.17.0
  • Properti baru untuk mengatur kualitas lampiran
  • Paket konten yang disertai resep harus dikirim ulang jika resepnya tidak dipelajari.
  • Perbaiki peringatan tentang Slingshot jika menggunakan ID item yang memenuhi syarat.
  • Memperbaiki resep untuk barang kerajinan yang telah dikirimkan meskipun resepnya sudah dipelajari.
  • Karena alasan warisan, jika id resep tidak ditemukan dalam resep yang dipelajari, ia akan mencari resep yang membuat item dengan nama id resep.
1.16.1
  • Perbaikan pada nama terjemahan resep.
1.16.0
  • Perbarui mod agar kompatibel dengan Stardew Valley 1.6
  • Perintah baru untuk memuat ulang paket konten
  • Mengubah nama MailDao menjadi MailRepository. (Hanya memengaruhi mod SMAPI yang menggunakannya)
  • Jenis Item Baru 'QualifiedItemId' untuk lampiran, seharusnya berfungsi untuk setiap jenis item dalam permainan jika Anda menggunakan kualifikasi yang tepat.
  • Properti baru untuk kondisi tanggal khusus. (Pernikahan dan Melahirkan)
  • Properti baru untuk CustomTextColor, yang lama tidak digunakan lagi.
  • Properti HasMods baru
  • Properti RequireAllMods baru
  • ID acara sekarang berupa string. (angka seharusnya masih berfungsi)
  • Menghapus logika usang SV 1.6 yang disertakan dalam MFM.
  • Memperbaiki masalah dari versi alfa di mana surat tidak dapat dibuka di halaman pengumpulan surat.
Bocoran:
Menunjukkan
1.15.0
  • Antarmuka API baru untuk mod SMAPI.
  • Metode API untuk memuat folder paket konten dari dalam mod SMAPI Anda.
  • Metode API untuk memuat surat.
  • Metode API untuk mendapatkan data surat.
  • Metode API untuk mendapatkan rangkaian data surat.
  • Memperbaiki kotak surat yang tidak berfungsi dengan baik jika terjadi kesalahan saat menutup surat.
  • Lebih baik mencatat kesalahan-kesalahan itu.
1.14.0
  • Lebih banyak perubahan untuk kompatibilitas dengan SMAPI 4
  • Atribut baru dalam kelas huruf untuk mengatur ITranslationHelper.
  • Paket konten tidak perlu mengubah apa pun, tetapi perubahan ini seharusnya menghindari beberapa masalah i18n yang jarang terjadi.
  • Mod yang menggunakan MFM melalui kode dapat memperbarui implementasinya.
1.13.0
  • Jadikan mod kompatibel dengan SMAPI 4.
  • Properti baru untuk level tambang terdalam.
  • Properti baru dengan uang saat ini.
  • Properti baru untuk total uang yang diperoleh.
  • Perintah konsol baru untuk memaksa kotak surat agar diperbarui guna membantu modder men-debug.
  • Menu koleksi huruf sekarang juga menampilkan tombol tutup khusus.
1.12.2
  • Jadikan mod kompatibel dengan 1.5.5, tanpa memaksa SMAPI untuk mengonversinya.
  • Seharusnya memperbaiki beberapa masalah dengan lampiran yang tidak berfungsi pada OS Unix.
  • Properti baru untuk Tingkat Peningkatan Rumah.
1.12.1
  • Memperbaiki kesalahan saat Utilitas Prakondisi yang Diperluas tidak dimuat.
1.12.0
  • Properti baru untuk mendukung penggunaanPrasyarat yang Diperluas
  • Properti baru yang memungkinkan penambahan teks selain id huruf ke daftar MailReceived pemain.
1.11.0
  • Dukungan untuk DGA (Aset Permainan Dinamis) sebagai lampiran.
1.10.2
  • Perbaikan pada nama resep masakan dalam bahasa Inggris yang ditampilkan sebagai null, saat ditambahkan oleh Aset Json.
1.10.1
  • Perbaikan untuk Membuka Otomatis huruf tanpa teks yang merusak mod saat ada file i18n.
  • Perbaikan pada surat dari paket konten yang tidak dimuat setelah satu peringatan kondisi pengumpulan.
  • Menambahkan jenis persyaratan koleksi baru untuk membuat resep.
1.10.0
  • Semua alat vanilla sekarang didukung.
  • Dukungan untuk Slingshots standar sebagai senjata. Jika Anda menggunakan indeks atau nama ketapel, indeks atau nama tersebut akan dibuat dengan benar.
  • Properti "Buka Otomatis" baru, untuk saat Anda ingin menggunakan kondisi MFM untuk menyimpan ID surat sebagai telah dibaca tanpa menulis surat sebenarnya.
1.9.2
  • Optimalisasi pemuatan aset dari paket konten.
  • Perbaikan pada pemanggilan kembali huruf yang tidak dipanggil jika menu dibuka untuk menambahkan item ke inventaris.
1.9.1
  • Memperbaiki bug di mana surat MFM tidak dapat dibuka dan dikeluarkan dari kotak pada hari ini jika Anda memegang suatu objek saat mengklik kotak surat.
1.9.0
  • Properti baru untuk surat yang dibuat dengan SMAPI untuk menambahkan item secara dinamis ke surat.
  • Metode baru untuk mengeluarkan surat dari kotak surat.
1.8.1
  • Perbaikan untuk menghindari konflik email di koperasi lokal.
  • Perbaikan pada situasi langka di mana mod akan berhenti bekerja jika menu huruf tidak ditutup dengan benar oleh permainan.
1.8.0
  • Dukungan untuk Perabotan, Senjata, dan Sepatu Bot sebagai pelengkap.
  • Properti baru untuk menetapkan tingkat pemutakhiran alat yang terpasang.
1.7.0
  • Dukungan untuk Cincin sebagai pelengkap.
  • Kondisi baru untuk resep.
  • Properti baru untuk penyesuaian latar belakang dengan paket konten.
  • Dukungan untuk kustomisasi Tombol Tutup dengan paket konten dan kode.
1.6.0
  • Dukungan untuk i18n dalam paket konten.
  • Kondisi properti baru untuk bangunan di pertanian.
  • Properti kondisi baru untuk surat yang diterima. (ini digunakan untuk bendera pencarian)
  • Properti kondisi baru untuk acara.
  • Daftar kondisi baru untuk item menu koleksi.
  • Daftar kondisi baru untuk statistik permainan.
  • Properti baru untuk status persahabatan untuk daftar kondisi persahabatan NPC.
  • Fungsionalitas acak baru ketika ID Grup bertabrakan.
1.5.1
  • Perbaikan pada huruf-huruf tanpa id grup yang dikelompokkan bersama.
1.5.0
  • Huruf sekarang akan ditampilkan di menu koleksi jika Judul telah ditentukan. Tekstur dan warna kustom juga akan ditampilkan di menu koleksi.
  • Surat sekarang dapat memiliki ID grup. Surat dengan ID grup yang sama tidak akan pernah terkirim di hari yang sama.
  • Kondisi baru untuk paket konten: "RandomChance".
  • BigObject sekarang disebut BigCraftable, seperti dalam kode permainan.
  • Perbaikan kesalahan ketik pada templat.
1.4.1
  • Menambahkan dukungan ke Stardew Valley 1.4.0
  • Menambahkan properti Judul untuk Huruf agar ditampilkan di menu koleksi. Belum sepenuhnya diterapkan, tetapi modder dapat mulai mengaturnya.
1.4.0
  • Menambahkan dukungan paket konten bagi modder untuk menambahkan huruf khusus, dengan konfigurasi untuk semua fitur yang disediakan kerangka kerja ini, dan dengan sebagian besar kondisi pengiriman yang umum digunakan.
  • Perbaiki pengontrol yang tidak berfungsi untuk melampirkan item.
  • Perbaikan untuk menampilkan lampiran dengan benar jika email memiliki lebih dari satu item yang dilampirkan.
  • Perbaiki agar surat tidak tertutup jika inventaris Anda penuh dan menu dibuka untuk mengelolanya.
  • Perbaikan agar tidak menambahkan setumpuk item ke surat meskipun telah dikonfigurasi.
  • Menambahkan dukungan ke SMAPI 3
1.3.4
  • Menambahkan dukungan ke Stardew Valley 1.3.36
1.3.3
  • Menambahkan dukungan ke SMAPI 3
1.3.2
  • Menambahkan dukungan ke Stardew Valley 1.3.32
1.3.1
  • Menambahkan perintah untuk menghapus dan menambahkan ke daftar email yang diterima pemain.
1.3.0-beta.6
  • Menambahkan dukungan untuk membuat resep
  • Menambahkan dukungan ke latar belakang khusus
  • Menambahkan dukungan ke warna teks khusus
  • Cara baru untuk membuka surat khusus, sekarang menggunakan harmoni
  • Berkas konfigurasi untuk mengaktifkan cara lama membuka surat khusus.
1.2.0
  • Dukungan untuk resep i18n.
  • Perbaikan pada mod yang tidak berfungsi dengan baik setelah kembali ke menu judul.
  • Memperbaiki tidak ada surat yang terkirim jika kondisi surat menimbulkan pengecualian.
1.1.0
  • Perbaikan untuk menerima email "pajak disahkan" saat tidur dan keluar dari permainan tanpa membaca email khusus.
  • Surat khusus dapat memiliki resep.
  • Versi ini tidak kompatibel dengan versi lama. Mod perlu diperbarui agar dapat menggunakan versi ini.
1.0.0
  • Tambahkan email khusus
  • Surat khusus dapat memiliki item.

Bagi Modder untuk menggunakan paket konten:
  • Ada templat di dalam folder mod dengan instruksi yang diberi komentar tentang fungsi setiap properti.
  • Semua fitur huruf kecuali kondisi dan panggilan balik sama seperti pengkodean dengan kerangka kerja.
  • Kondisi terbatas pada kondisi yang diimplementasikan, dan panggilan balik selalu menetapkan ID huruf sebagai kondisi yang diterima. Jika Anda membutuhkan kondisi lanjutan, Anda tetap harus mengodekannya. Atau Anda bisa dengan sopan menyarankan saya untuk menambahkan kondisi ke paket konten. Jika kondisinya masuk akal, saya mungkin akan menambahkannya.
  • Berikut ini adalah templat sebagaimana yang ditambahkan dalam berkas mod:
Bocoran:
Menunjukkan
[
    {
"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.
    }
]


Agar Modder dapat menggunakan API:
  • MenyalinIMailFrameworkModApiantarmuka dengan metode yang ingin Anda gunakan dari antarmuka MFM.
  • MenyalinSuratjika salah satu metode membutuhkannya.
  • Metode:
    • DaftarKontenPaket- MenggunakanHelper.ContentPacks.CreateTemporaryuntuk memuat folder dari mod Anda yang berisi mail.json dan kemungkinan folder i18n untuk terjemahan. Manifest tidak diperlukan karena Anda dapat menggunakan parameter metode tersebut.
    • RegisterSurat- Isi ILetter dengan properti yang Anda butuhkan. Kondisi juga diperlukan untuk mendaftarkan surat. Disarankan untuk menggunakan callback, setidaknya untuk menambahkan ID surat yang diterima. Lihat contoh di bawah ini, pada "Untuk Modder untuk membuat kode dengan dependensi MFM" sesi.
    • DapatkanSurat- Anda akan mendapatkan objek ILetter untuk ID huruf.
    • DapatkanStringDataEmailAnda akan mendapatkan string data email untuk ID surat. String data email pada dasarnya adalah teks terjemahan ditambah judul terjemahan dengan pemisah [#].

Agar Modder dapat membuat kode dengan dependensi MFM:
  • Referensikan MailFrameworkMod.dll pada proyek SMAPI Anda.
    • Anda mendaftarkan Surat Anda menggunakan MailRepository.SaveLetter(Letter)
    • Pada awal setiap hari, mod akan memeriksa Surat yang telah mencapai kondisi pengiriman dan menambahkannya ke kotak surat.
    • Surat ini akan dibuka pertama kali saat pemain memeriksa kotak surat.
    • Ketika Surat dibuka, surat itu dikeluarkan dari kotak surat.
    • Kondisi panggilan balik dari surat itulah yang disebut.
    • Pada akhir hari Surat yang masih ada di kotak surat akan dihapus, jadi surat tersebut tidak disimpan oleh permainan.
  • Anggap saja mod ini sebagai repositori untuk surat-suratmu. Mod ini akan berfungsi paling baik jika kamu memuat semua suratmu saat game dimuat.


Contoh:

Bocoran:
Menunjukkan

Memuat Surat sederhana yang akan ditampilkan kepada pemain jika belum dibaca sebelumnya, dan tidak akan dikirimkan lagi setelah dibuka oleh pemain:
MailRepository.SimpanSurat(
Surat baru(
"Id Unik Surat"
,"Surat teks khusus."
,(l)=>!Game1.pemain.mailDiterima.Berisi(l.Id)
,(l)=>Game1.pemain.mailDiterima.Tambah(l.Id)
)
);


Memuat Surat sederhana seperti sebelumnya, tetapi dengan 5 Zamrud terlampir:
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)
  )
);

Pemain tidak akan menerima item yang sama, tetapi salinan yang dikembalikan dari metode getOne().

Memuat Surat sederhana yang akan mengajarkan resep memasak, akan dikirimkan jika pemain tidak tahu resepnya. Mod akan otomatis mengajarkan resep saat pemain memuat, tanpa perlu panggilan balik di sini:
MailRepository.SimpanSurat(
Surat baru(
"Id Unik Surat"
, "Surat teks khusus."
, "NamaResepUnik"
, (l) => !Game1.player.cookingRecipes.ContainsKey(l.Recipe)
  )
);

"RecipeUniqueName" harus sama dengan yang disimpan pada "Data//CookingRecipes" atau "Data//CraftingRecipes".

Memuat Surat sederhana dengan teks dan latar belakang berbeda:
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}
);


Memuat Surat sederhana dengan latar belakang khusus:
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"

Memuat Surat sederhana dengan terjemahan untuk teks dan judul.
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
    }
);



Mod Saya Lainnya:

Buka potensi penuh Stardew Valley dengan XMODhub — jelajahi mod teratas ini hari ini!

mcafee
Otentikasi
Dipercaya oleh 200,000,000+ Pengguna

Butuh bantuan dengan unduhan atau instalasi? Bergabunglah dengan komunitas Discord kami untuk dukungan!

logo
Bahasa

Solusi Gaming

Sumber Daya

Mitra

Ikuti kami di

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