logo
vi
Tiếng Việt

Mod khung thư

Người tạo: Digus
Đã cập nhật:2025-03-28 14:16:59
49KB
mcafee
Nếu McAfee chặn cài đặt, nhấp vào đây.
Được 200,000,000+ người dùng tin tưởng

Mod yêu cầu trước

sẽ được cài đặt tự động khi bạn sử dụng Mod khung thư

Về mod này

Framework để sử dụng hộp thư trong trò chơi. Lệnh console để điều chỉnh thư. Giao diện mã và gói nội dung.
Khách quan:
Đơn giản hóa việc gửi thư cho người chơi, giúp kiểm soát tốt hơn thời điểm và nội dung thư sẽ nhận được.
Ngoài ra còn cung cấp thêm nhiều tùy chọn không chỉ có thể chỉnh sửa các tệp dữ liệu, như thay đổi màu chữ và nền của chữ theo ý muốn.

Cài đặt:

Nhật ký thay đổi:

1.20.0
  • Thêm một tài sản tùy chỉnh mới vào trò chơi. (DIGUS.MailFrameworkMod/MailData) Điều này có nghĩa là các chữ cái MFM giờ đây có thể được tải bằng Content Patcher và sử dụng tất cả các tính năng của nó như mã thông báo. Nó hỗ trợ các thuộc tính tương tự.
  • Các chữ cái trong Content Pack cũng được tải vào tài sản tùy chỉnh mới và do đó có thể được chỉnh sửa bằng Content Patcher.
  • Các Gói Nội dung hiện được tải vào bộ nhớ đệm khi bắt đầu trò chơi, thay vì phải tải lại mỗi lần tải bản lưu. Bạn có thể buộc tải lại các gói nội dung bằng lệnh console.
  • Thuộc tính Văn bản và Tiêu đề hiện hỗ trợ chuỗi Tokenizable.
  • Tài sản kết cấu giờ đây có thể là tài sản của trò chơi, không chỉ là tài sản trong thư mục mod.
  • Thuộc tính GameStateQuery mới như một điều kiện để gửi một lá thư.
1.19.0
  • Thuộc tính mới để giữ cho thư có hiệu lực sau khi tất cả các điều kiện đã được đáp ứng trong một ngày nhưng thư không được đọc vào ngày hôm đó.
  • Tính năng mới để xử lý Tệp đính kèm được chọn ngẫu nhiên
  • Thuộc tính mới để thiết lập số lượng mục từ danh sách đính kèm sẽ được chọn để giao hàng.
  • Thuộc tính mới để đặt "RandomGroup" thành Tệp đính kèm, do đó sẽ chọn từ nhóm đó thay vì từ toàn bộ danh sách.
  • Thuộc tính mới để đặt "Trọng lượng" cho một tệp đính kèm nhất định khi được chọn ngẫu nhiên.
  • Thuộc tính mới để thiết lập số lượng mục cần chọn từ một nhóm nhất định, thay vì sử dụng giá trị mặc định.
  • Thuộc tính mới cho biết liệu một mục từ một nhóm nhất định có thể được chọn nhiều lần hay không.
  • Bộ thuộc tính mới để thiết lập yêu cầu MailReceived cho tệp đính kèm và trả lời
  • Thuộc tính mới để thiết lập MailReceived sẽ bị xóa khi đọc thư hoặc khi tùy chọn trả lời bị bỏ qua.
  • Thuộc tính mới để thiết lập chi phí cho tùy chọn trả lời nhất định.
  • ItemType mới "None". Về cơ bản, nó được sử dụng khi bạn muốn có cơ hội ngẫu nhiên không giao một mặt hàng nào đó mà không gây ra lỗi/cảnh báo trong nhật ký.
1.18.0
  • Thuộc tính Ids mới thay thế Index và Name cho CollectionConditions. Thuộc tính này có thể tổng hợp số lượng nhiều mục, cộng giá trị của chúng để so sánh với số lượng.
  • Thuộc tính ReplyConfig mới để thêm hành vi trả lời. Bạn có thể hiển thị một số tùy chọn cho người chơi sau khi đọc thư và nó sẽ thêm một hoặc nhiều văn bản MailReceived dựa trên tùy chọn đã chọn. Logic mod bổ sung có thể được triển khai dựa trên lựa chọn đó.
  • Sửa lỗi chữ cái có công thức không hỗ trợ thuộc tính CustomTextColorName.
  • Sửa lỗi ngoại lệ tham chiếu null khi một mục có tên null đang tải trong trò chơi.
1.17.1
  • Các email gói nội dung có thuộc tính công thức không cần phải có tệp đính kèm để có thể gửi lại nếu công thức không được học. (thuộc tính công thức sẽ bị bỏ qua nếu có tệp đính kèm)
  • Sửa các công thức nấu ăn theo cùng logic áp dụng cho các công thức chế tạo trước đó.
1.17.0
  • Thuộc tính mới để thiết lập chất lượng của tệp đính kèm
  • Nội dung thư có công thức nấu ăn sẽ được gửi lại nếu công thức không được học.
  • Sửa cảnh báo về Slingshot nếu sử dụng ID vật phẩm đủ điều kiện.
  • Sửa lỗi công thức chế tạo vật phẩm vẫn được cung cấp ngay cả khi công thức đã được học.
  • Vì lý do kế thừa, nếu ID công thức không được tìm thấy trong các công thức đã học, nó sẽ tìm kiếm công thức tạo ra vật phẩm có tên ID công thức.
1.16.1
  • Sửa tên công thức đã dịch.
1.16.0
  • Cập nhật bản mod để tương thích với Stardew Valley 1.6
  • Lệnh mới để tải lại gói nội dung
  • Đã đổi tên MailDao thành MailRepository. (Chỉ ảnh hưởng đến các mod SMAPI sử dụng tên này)
  • Loại vật phẩm mới 'QualifiedItemId' dành cho tệp đính kèm, có thể áp dụng cho mọi loại vật phẩm trong trò chơi nếu bạn sử dụng tiêu chuẩn phù hợp.
  • Bất động sản mới cho các điều kiện ngày đặc biệt. (Đám cưới và Sinh con)
  • Thuộc tính mới cho CustomTextColor, thuộc tính cũ đã lỗi thời.
  • Thuộc tính HasMods mới
  • Thuộc tính RequireAllMods mới
  • ID sự kiện hiện là chuỗi. (số vẫn có thể dùng được)
  • Đã xóa logic SV 1.6 lỗi thời được tích hợp từ MFM.
  • Đã khắc phục sự cố từ bản alpha khiến thư không mở được trong trang thu thập thư.
Tiết lộ:
Trình diễn
1.15.0
  • Giao diện API mới cho bản mod SMAPI.
  • Phương pháp API để tải thư mục gói nội dung từ bên trong mod SMAPI của bạn.
  • Phương pháp API để tải một chữ cái.
  • Phương pháp API để lấy dữ liệu chữ cái.
  • Phương pháp API để lấy chuỗi dữ liệu thư của một lá thư.
  • Sửa lỗi hộp thư không hoạt động bình thường khi xảy ra lỗi khi đóng thư.
  • Tốt hơn hết là hãy ghi lại những lỗi đó.
1.14.0
  • Nhiều thay đổi hơn để tương thích với SMAPI 4
  • Thuộc tính mới trong lớp chữ cái để thiết lập ITranslationHelper.
  • Gói nội dung không cần phải thay đổi bất cứ điều gì, nhưng thay đổi này sẽ tránh được một số sự cố i18n hiếm gặp.
  • Các bản mod sử dụng MFM thông qua mã có thể cập nhật bản triển khai của mình.
1.13.0
  • Làm cho bản mod tương thích với SMAPI 4.
  • Thuộc tính mới cho cấp độ mỏ sâu nhất.
  • Bất động sản mới với giá hiện tại.
  • Tài sản mới cho tổng số tiền kiếm được.
  • Lệnh điều khiển mới để buộc hộp thư cập nhật nhằm giúp người điều chỉnh gỡ lỗi.
  • Menu thu thập thư hiện cũng hiển thị nút đóng tùy chỉnh.
1.12.2
  • Làm cho bản mod tương thích với phiên bản 1.5.5 mà không cần buộc SMAPI phải chuyển đổi nó.
  • Nên khắc phục một số vấn đề liên quan đến tệp đính kèm không hoạt động trên hệ điều hành Unix.
  • Thuộc tính mới cho Cấp độ nâng cấp nhà.
1.12.1
  • Đã sửa lỗi khi Tiện ích điều kiện mở rộng không được tải.
1.12.0
  • Các thuộc tính mới để hỗ trợ việc sử dụngĐiều kiện tiên quyết mở rộng
  • Thuộc tính mới cho phép thêm văn bản ngoài ID chữ cái vào danh sách MailReceived của người chơi.
1.11.0
  • Hỗ trợ DGA (Tài sản trò chơi động) dưới dạng tệp đính kèm.
1.10.2
  • Sửa lỗi tên công thức nấu ăn bằng tiếng Anh hiển thị là null khi được thêm vào bằng Json Assets.
1.10.1
  • Sửa lỗi Tự động mở chữ cái không có văn bản làm hỏng bản mod khi có tệp i18n.
  • Sửa lỗi chữ cái trong gói nội dung không tải được sau một cảnh báo về tình trạng thu thập.
  • Thêm loại yêu cầu thu thập mới để chế tạo công thức.
1.10.0
  • Tất cả các công cụ vanilla hiện đều được hỗ trợ.
  • Hỗ trợ Slingshots nguyên bản làm vũ khí. Nếu bạn sử dụng chỉ số hoặc tên của một chiếc slingshot, nó sẽ được tạo ra đúng như vậy.
  • Thuộc tính "Tự động mở" mới, dành cho khi bạn muốn sử dụng điều kiện MFM để lưu id chữ cái dưới dạng đã đọc mà không cần viết chữ cái thực tế.
1.9.2
  • Tối ưu hóa việc tải nội dung từ các gói nội dung.
  • Sửa lỗi không gọi lại được các chữ cái nếu mở menu để thêm vật phẩm vào kho.
1.9.1
  • Sửa lỗi khiến thư MFM không được mở và xóa khỏi hộp thư trong ngày hiện tại nếu bạn đang cầm một vật khi nhấp vào hộp thư.
1.9.0
  • Thuộc tính mới cho chữ cái được tạo bằng SMAPI để thêm các mục vào chữ cái một cách linh hoạt.
  • Phương pháp mới để loại bỏ thư khỏi hộp thư.
1.8.1
  • Sửa lỗi để tránh xung đột thư trong hợp tác xã cục bộ.
  • Sửa một số trường hợp hiếm gặp khiến bản mod ngừng hoạt động nếu menu chữ cái không được trò chơi đóng đúng cách.
1.8.0
  • Hỗ trợ đồ nội thất, vũ khí và giày làm phụ kiện.
  • Thuộc tính mới để thiết lập mức nâng cấp của các công cụ được đính kèm.
1.7.0
  • Hỗ trợ nhẫn làm phụ kiện đính kèm.
  • Điều kiện mới cho công thức nấu ăn.
  • Thuộc tính mới để tùy chỉnh nền bằng gói nội dung.
  • Hỗ trợ tùy chỉnh Nút Đóng bằng gói nội dung và mã.
1.6.0
  • Hỗ trợ i18n trong các gói nội dung.
  • Điều kiện mới về tính chất của các tòa nhà trong trang trại.
  • Thuộc tính điều kiện mới cho thư nhận được. (được sử dụng cho cờ nhiệm vụ)
  • Thuộc tính điều kiện mới cho các sự kiện.
  • Danh sách điều kiện mới cho các mục menu bộ sưu tập.
  • Danh sách điều kiện mới cho số liệu thống kê trò chơi.
  • Thuộc tính mới cho trạng thái tình bạn trong danh sách điều kiện cho tình bạn với NPC.
  • Chức năng ngẫu nhiên mới khi ID nhóm xung đột.
1.5.1
  • Sửa lỗi các chữ cái không có ID nhóm được nhóm lại với nhau.
1.5.0
  • Chữ cái sẽ được hiển thị trong menu bộ sưu tập nếu Tiêu đề được xác định. Kết cấu và màu sắc tùy chỉnh cũng sẽ hiển thị trong menu bộ sưu tập.
  • Thư hiện có thể có mã nhóm. Thư có cùng mã nhóm sẽ không bao giờ được gửi trong cùng một ngày.
  • Điều kiện mới cho gói nội dung: "RandomChance".
  • BigObject hiện được gọi là BigCraftable, giống như trong mã trò chơi.
  • Sửa lỗi chính tả trong mẫu.
1.4.1
  • Thêm hỗ trợ cho Stardew Valley 1.4.0
  • Thêm thuộc tính Tiêu đề cho Chữ cái để hiển thị trong menu bộ sưu tập. Chưa được triển khai đầy đủ, nhưng các modder có thể bắt đầu thiết lập.
1.4.0
  • Thêm gói nội dung hỗ trợ cho người điều chỉnh để thêm chữ cái tùy chỉnh, với cấu hình cho tất cả các tính năng mà khuôn khổ này cung cấp và với hầu hết các điều kiện phân phối phổ biến.
  • Sửa lỗi bộ điều khiển không nhận được vật phẩm đính kèm.
  • Sửa lỗi hiển thị đúng tệp đính kèm nếu thư có nhiều hơn một mục đính kèm.
  • Sửa lỗi không cho phép thư đóng lại nếu kho đồ của bạn đã đầy và menu đang mở để quản lý.
  • Sửa lỗi không thêm được một nhóm mục vào thư ngay cả khi đã cấu hình.
  • Thêm hỗ trợ cho SMAPI 3
1.3.4
  • Thêm hỗ trợ cho Stardew Valley 1.3.36
1.3.3
  • Thêm hỗ trợ cho SMAPI 3
1.3.2
  • Thêm hỗ trợ cho Stardew Valley 1.3.32
1.3.1
  • Thêm lệnh để xóa và thêm vào danh sách thư đã nhận của người chơi.
1.3.0-beta.6
  • Thêm hỗ trợ cho công thức chế tạo
  • Thêm hỗ trợ cho nền tùy chỉnh
  • Thêm hỗ trợ cho màu văn bản tùy chỉnh
  • Cách mới để mở thư tùy chỉnh, hiện đang sử dụng harmony
  • Tệp cấu hình để kích hoạt cách mở thư tùy chỉnh cũ.
1.2.0
  • Hỗ trợ công thức i18n.
  • Sửa lỗi mod không hoạt động bình thường sau khi quay lại menu tiêu đề.
  • Sửa lỗi không gửi được thư nếu tình trạng của thư có ngoại lệ.
1.1.0
  • Sửa lỗi nhận được thư "đã thông qua thuế" khi ngủ và thoát trò chơi mà không đọc thư tùy chỉnh.
  • Thư tùy chỉnh có thể có công thức nấu ăn.
  • Phiên bản này không tương thích với phiên bản cũ. Các bản mod cần được cập nhật để sử dụng phiên bản này.
1.0.0
  • Thêm thư tùy chỉnh
  • Thư tùy chỉnh có thể có các mục.

Để Modder sử dụng gói nội dung:
  • Có một mẫu bên trong thư mục mod với hướng dẫn được chú thích về chức năng của từng thuộc tính.
  • Tất cả các tính năng của chữ cái nhưng điều kiện và lệnh gọi lại đều giống như khi mã hóa bằng khuôn khổ.
  • Điều kiện chỉ giới hạn ở những điều kiện đã được triển khai, và lệnh gọi lại luôn đặt id của chữ cái là đã nhận. Nếu bạn cần các điều kiện nâng cao, bạn vẫn nên viết mã cho chúng. Hoặc bạn có thể lịch sự đề xuất tôi thêm một điều kiện vào gói nội dung, nếu điều đó hợp lý, tôi có thể thêm vào.
  • Sau đây là mẫu được thêm vào trong tệp mod:
Tiết lộ:
Trình diễn
[
    {
"Id": "MyMod.MyMailId", // ID chữ cái. Chuỗi này phải là duy nhất để tránh xung đột. Ngoài ra, chuỗi không được chứa ký tự khoảng trắng.
"GroupId": "MyMod.MyGroupId", // Mã nhóm thư. Các thư có cùng mã nhóm sẽ không bao giờ được gửi trong cùng một ngày. Thư nào được đăng ký trước sẽ được ưu tiên, trừ khi mã nhóm kết thúc bằng ".Random", trong trường hợp đó, một chữ cái ngẫu nhiên sẽ được chọn. Mặc định là null.
"Title": "Tiêu đề thư của tôi", // Tiêu đề thư. Sẽ được hiển thị trong menu bộ sưu tập. Đặt giá trị null hoặc xóa dòng này nếu bạn không muốn thư xuất hiện trong bộ sưu tập. Nếu có tệp dịch, bạn nên đặt khóa dịch ở đây, nhưng bạn vẫn có thể để giá trị null nếu không có Tiêu đề.
"Văn bản": "Gửi @^Đây là email tùy chỉnh của tôi.", // Nội dung thư. Bạn có thể sử dụng @ để nhập tên người chơi và ^ để xuống dòng. Bạn cũng có thể sử dụng các lệnh cơ bản của trò chơi để thêm tiền, vật phẩm và các thứ khác. Nếu có tệp dịch, bạn nên đặt khóa dịch ở đây.
"RandomlyChooseAttachment": 2, // Nếu một số được thiết lập, nó sẽ chọn ngẫu nhiên số lượng mục tương ứng từ danh sách tệp đính kèm, theo từng nhóm. Mặc định là null.
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // Nếu nhóm và số lượng được thiết lập ở đây, hệ thống sẽ sử dụng số lượng đó để chọn vật phẩm thay vì số lượng được thiết lập trên RandomlyChooseAttachment. Mặc định là trống.
"AttachmentGroupWithReplacement": [ "CaveItems" ], // Theo mặc định, các tệp đính kèm được chọn ngẫu nhiên từ danh sách mà không cần thay thế. Nếu bạn muốn chọn thay thế các tệp đính kèm, hãy thêm nhóm vào danh sách. Nếu bạn không thêm nhóm, hãy sử dụng một chuỗi rỗng. Giá trị mặc định là một danh sách rỗng.
"Tệp đính kèm": [ // Danh sách tệp đính kèm. Xóa thuộc tính để không đính kèm các mục vào thư.
            {
"Type": "Object", // [Object|BigCraftable|Tool|Ring|Furniture|Weapon|Boots|DGA|QualifiedItemId|None] là bắt buộc. Loại vật phẩm sẽ được gắn. Nếu không được cung cấp, vật phẩm sẽ bị bỏ qua. 'None' luôn được bỏ qua mà không báo lỗi trong nhật ký và nên được sử dụng khi bạn muốn đảm bảo không thêm vật phẩm gắn.
"Name": "Cave Carrot", // Dùng để tìm chỉ mục vật phẩm. Điều này là bắt buộc nếu sử dụng các đối tượng tùy chỉnh như JSON Assets. ID DGA đầy đủ phải được sử dụng. Nếu không được cung cấp, chỉ mục sẽ được sử dụng. Mặc định là null.
"Index": "(0)78", // Chỉ mục của một mục. ID của mục đủ điều kiện phải là chuỗi, nhưng cũng có thể hoạt động như một số nguyên để tương thích ngược. Nếu không có tên nào được cung cấp hoặc không tìm thấy mục nào có tên tương ứng, chỉ mục sẽ được sử dụng. Nếu không, tệp đính kèm sẽ bị bỏ qua. Bỏ qua nếu loại là DGA.
"Stack": 1, // Giá trị stack của vật phẩm cần giao. Chỉ sử dụng cho Objects và BigCraftable. Mặc định là 1.
"Chất lượng": 2, // Giá trị chất lượng của sản phẩm cần giao. Chỉ sử dụng cho Đối tượng. 0 = không có, 1 = bạc, 2 = vàng, 4 = iridium. Mặc định là 0;
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Yêu cầu một trong các email đã được nhận. Danh sách trò chơi cũng chứa những thứ khác không phải là email, chẳng hạn như cờ trung tâm cộng đồng. Mặc định là null để không yêu cầu nhận email.
"RequireAllMailReceived": false, // Nếu đúng, yêu cầu tất cả thư trong danh sách "RequireMailReceived" phải được nhận. Mặc định là false.
"ProbabilityWeight": 1, // Trọng số của tệp đính kèm này khi chọn tệp nào để phân phối. Mod sẽ tính tổng tất cả trọng số trong một nhóm nhất định và gán cho nó một xác suất bằng cách chia trọng số này cho tổng. Mặc định là 1.
"RandomGroup": "CaveItems" // Khi chọn các mục ngẫu nhiên, hãy nhóm danh sách theo các nhóm đã tìm thấy và chọn số lượng được đặt từ mỗi nhóm. Giá trị mặc định là một chuỗi rỗng, hoạt động như nhóm mặc định.
},
            {
"Loại": "Công cụ", // Khi sử dụng công cụ, chỉ có thể gắn những công cụ được hỗ trợ.
"Tên": "Rìu", // [Rìu|Cuốc|Bình tưới|Cuốc chim|Lưỡi hái|Lưỡi hái vàng|Xô sữa|Kéo cắt|Cần câu|Chảo|Gậy trả lại] Bắt buộc đối với các công cụ. Tên của công cụ được hỗ trợ. Nếu không, phần đính kèm sẽ bị bỏ qua.
"UpgradeLevel": 1 // Cấp độ nâng cấp của công cụ. Công cụ thông thường: 0 = đá, 1 = đồng, 2 = thép, 3 = vàng, 4 = iridi. Cần câu: 0 = cần tre, 1 = cần tập luyện, 2 = cần sợi thủy tinh, 3 = cần iridi. Bỏ qua các loại khác. Mặc định là 0.
},
            {
"Loại": "DGA", //mục DGA
"Name": "spacechase0.DynamicGameAssets.Example/My Custom Item", // sử dụng ID DGA đầy đủ. Bắt buộc.
"Stack": 10, // Giá trị stack của vật phẩm cần giao. Chỉ sử dụng cho Objects và BigCraftable. Mặc định là 1.
"Chất lượng": 2 // Giá trị chất lượng của sản phẩm cần giao. Chỉ sử dụng cho Đối tượng. 0 = không có, 1 = bạc, 2 = vàng, 4 = iridium. Mặc định là 0;
},
            {
"Type": "QualifiedItemId", //Bất kỳ mục nào được hỗ trợ
"Index": "(0)78", // Mã số mặt hàng đủ điều kiện của một mặt hàng.
"Stack": 10, // Giá trị stack của vật phẩm cần giao. Chỉ sử dụng cho Object và BigCraftable. Mặc định là 1;
"Chất lượng": 2 // Giá trị chất lượng của sản phẩm cần giao. Chỉ sử dụng cho Đối tượng. 0 = không có, 1 = bạc, 2 = vàng, 4 = iridium. Mặc định là 0;
            }
],
"Recipe": "Tên công thức", // Xóa dòng này nếu bạn không muốn đính kèm công thức vào thư. Tính năng này chỉ hoạt động nếu bạn không có tệp đính kèm nào khác vào thư. Đối với công thức DGA, chỉ sử dụng phần ID (bỏ phần ModID).
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // Sử dụng tùy chọn này để thêm văn bản bổ sung vào danh sách MailReceived. Có thể hữu ích để thêm cờ vanilla hoặc các ID thư MFM khác.
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], //Văn bản cần xóa khỏi danh sách MailReceived. Có thể sử dụng tùy chọn này để kích hoạt thư mới, sự kiện, cờ vanilla, ngăn thư MFM khác được gửi...
"LetterBG": "CustomLetterBG.png", // Tên tệp trong gói nội dung của bạn có nền chữ cái tùy chỉnh để sử dụng. Tệp này phải tuân theo cùng cấu trúc với tệp LetterBG của trò chơi. WhichBG sẽ tương ứng với tệp này cho chữ cái này. Nếu null hoặc bị xóa, mod sẽ sử dụng LetterBG của trò chơi.
"WhichBG": 0, //ID của chữ cái background. 0 = cổ điển, 1 = sổ ghi chép, 2 = kim tự tháp
"TextColor": -1, //Xóa dòng này để sử dụng màu mặc định. Sẽ bị bỏ qua nếu CustomTextColor được thiết lập. -1 = Đỏ sẫm, 0 = Đen, 1 = Xanh da trời, 2 = Đỏ, 3 = Xanh lam tím, 4 = Trắng, 5 = Đỏ cam, 6 = Xanh lá cây chanh, 7 = Xanh lam nhạt, 8 = Xám đậm
"CustomTextColorName": "Trắng", //Màu của văn bản.[http://www.foszor.com/blog/xna-color-chart/] Mặc định sẽ sử dụng thuộc tính TextColor.
"UpperRightCloseButton": "CustomCloseButton.png", // Tên tệp trong gói nội dung của bạn có nút đóng tùy chỉnh để sử dụng. Kích thước tệp phải là 12 x 12. Nếu để null hoặc bị xóa, nút mặc định sẽ được sử dụng.
"ReplyConfig": { // Nếu bạn muốn người chơi gửi thư trả lời sau khi đọc thư. Nó sẽ hiển thị các tùy chọn trả lời, trong đó một hoặc nhiều "ReceivedMail" sẽ được thêm vào dựa trên câu trả lời của người chơi. Bất kỳ logic bổ sung nào liên quan đến thư trả lời cần được triển khai dựa trên ReceivedMail đã thêm vào.
"QuestionKey": "MyMod.MyMailId.Question", //Khóa để xác định câu hỏi của bạn. Khóa này chỉ được sử dụng nội bộ, nhưng phải là duy nhất trong gói nội dung của bạn để tránh xung đột giữa các câu trả lời.
"QuestionDialog": "Gửi câu trả lời bằng cách chọn phần thưởng của bạn:", //Câu hỏi hoặc văn bản của bạn sẽ hiển thị trên các tùy chọn trả lời. Nếu có tệp dịch, bạn nên đặt khóa dịch tại đây.
"Trả lời": [
                {
"ReplyKey": "MyMod.MyMailId.Reply1", //Phải là duy nhất giữa các câu trả lời cho câu hỏi.
"ReplyOptionDialog": "Tôi muốn hạt giống.", //Nội dung tùy chọn sẽ hiển thị trong danh sách trả lời. Nếu có tệp dịch, bạn nên đặt khóa dịch tại đây.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // Yêu cầu một trong các email đã được nhận. Danh sách trò chơi cũng chứa những thứ khác không phải là email, chẳng hạn như cờ trung tâm cộng đồng. Mặc định là null để không yêu cầu nhận email.
"RequireAllMailReceived": false, // Nếu đúng, yêu cầu tất cả thư trong danh sách "RequireMailReceived" phải được nhận. Mặc định là false.
"MailReceivedToAdd": [ "MyMod.MyMailId.PlayerSeedOption" ], // Văn bản cần thêm vào danh sách MailReceived. Có thể dùng để kích hoạt thư mới, sự kiện, cờ vanilla, hoặc dừng gửi thư MFM khác...
"MailReceivedToRemove": [ "MyMod.MyMailId.PlayerSapplingOption" ], //Văn bản đã xóa khỏi danh sách MailReceived. Tùy chọn này có thể được sử dụng để kích hoạt thư mới, sự kiện, cờ vanilla, ngăn các thư MFM khác được gửi...
"ReplyResponseDialog": "Thư yêu cầu hạt giống của bạn đã được gửi.", //Nội dung sẽ hiển thị sau khi tùy chọn trả lời này được chọn. Nếu tệp dịch được cung cấp, bạn nên đặt khóa dịch tại đây.
"Chi phí": 50 //Số tiền người chơi cần có để chọn tùy chọn này. Nếu họ chọn, số tiền đó sẽ ngay lập tức bị trừ vào tiền của người chơi. Luôn cung cấp tùy chọn không mất phí, nếu không bạn có thể khóa cứng người chơi.
                }
            ]
},
"Có thể lặp lại": false, // Nếu đúng thì mod sẽ không kiểm tra vì chữ cái Id đã được gửi. Mặc định là false.
"AutoOpen": false, // Nếu đúng, mod sẽ mở thư vào đầu ngày sau khi các điều kiện được đáp ứng. ID thư sẽ được đánh dấu là đã đọc và nếu có công thức nào được đặt, nó sẽ được học. Vì thư sẽ không bao giờ hiển thị, các thuộc tính trực quan như tiêu đề, văn bản, hình nền... sẽ không bao giờ được sử dụng, cũng như các tệp đính kèm.
// ĐIỀU KIỆN GIAO HÀNG
//Dưới đây là các điều kiện giao hàng. Xóa bất kỳ dòng nào nếu bạn không muốn kiểm tra điều kiện đó.
"Ngày": "10 xuân Y1", // Phải là ngày đó hoặc ngày sau đó. Định dạng là "[1-28] [xuân|hè|thu|đông] Y[1-999]".
"Ngày": [7,14,21,28], // Phải là một trong những ngày trong danh sách.
"Mùa": ["mùa thu"], // Phải là một trong các mùa trong danh sách. [xuân|hè|thu|đông]
"Thời tiết": "nắng", // Chắc là thời tiết trong trò chơi. Định dạng là "[nắng|mưa]".
"HouseUpgradeLevel": 2, // Cấp độ nâng cấp nhà phải bằng hoặc cao hơn cấp độ được định nghĩa. 0 - nhà khởi đầu (không có lý do gì để sử dụng cấp độ này, chỉ cần xóa dòng), 1 - bếp, 2 - tầng hai, 3 - hầm.
"DeepestMineLevel": 80, // Cấp độ sâu nhất của mỏ phải bằng hoặc cao hơn cấp độ được định nghĩa. 120 là cấp độ cuối cùng của mỏ, 121 là cấp độ đầu tiên của hang đầu lâu.
"CurrentMoney": 10000, // Tiền hiện tại phải bằng hoặc cao hơn số tiền được định nghĩa.
"TotalMoneyEarned": 500000, // Tổng số tiền kiếm được phải bằng hoặc cao hơn số tiền đã định nghĩa.
"FriendshipConditions": // Mỗi NPC trong danh sách phải kiểm tra tất cả các điều kiện.
        [
            {
"NpcName": "Lewis", //Tên của NPC. Có thể sử dụng NPC tùy chỉnh.
"FriendshipLevel": 8, // NPC phải có cấp độ trái tim tình bạn bằng hoặc cao hơn mức được định nghĩa. Mặc định là 0.
"FriendshipStatus": ["Hẹn hò","Đã đính hôn","Đã kết hôn"] // [Friendly|Hẹn hò|Đã đính hôn|Đã kết hôn|Đã ly hôn] Yêu cầu trạng thái tình bạn của NPC phải là một trong danh sách. Xóa để không yêu cầu trạng thái.
            }
],
"Điều kiện Kỹ năng": // Mỗi kỹ năng trong danh sách phải có cấp độ bằng hoặc cao hơn cấp độ được định nghĩa. Có thể sử dụng tất cả các kỹ năng được mã hóa trong phiên bản gốc, bao gồm cả Luck. Không thể sử dụng các kỹ năng tùy chỉnh.
        [
{ "SkillName": "Nông nghiệp", "SkillLevel": 1 }
],
"StatsConditions": // Mỗi chỉ số thống kê trong danh sách phải có giá trị bằng hoặc cao hơn giá trị được định nghĩa. Chọn StatsName hoặc StatsLabel
        [
            {
"StatsName": "CheeseMade", //[Hạt giống|Vật phẩm đã vận chuyển|Vật phẩm đã nấu|Vật phẩm đã chế biến|Trứng gà đã đẻ|Trứng vịt đã đẻ|Sữa bò đã sản xuất|Sữa dê đã sản xuất|Lông thỏ đã sản xuất|Lông cừu đã sản xuất|Phô mai đã làm|Phô mai dê đã làm|Nấm cục đã tìm thấy|Đá đã thu thập|Đá đã nghiền|Quà tặng đã tặng|Thời gian bất tỉnh|Thời gian đi ngủ trung bình|Thời gian câu cá|Cá đã bắt được|Những tảng đá đã vỡ|Gốc cây đã chặt|Số bước chân đã đi|Quái vật đã bị giết|Kim cương đã tìm thấy|PrismaticSh Tìm thấy ards|KhácĐá quýTìm thấy|Cà rốt trong hang độngTìm thấy|ĐồngTìm thấy|SắtTìm thấy|ThanTìm thấy|Tiền xuTìm thấy|VàngTìm thấy|IridiumTìm thấy|Thỏi đã nấu chảy|Đồ uống được làm|Bảo quản được làm|Mảnh rác được tái chế|Đá huyền bíbị nghiền nát|Số ngày đã chơi|Cỏ dại đã loại bỏ|Gậy đã chặt|Ghi chú đã tìm thấy|Nhiệm vụ đã hoàn thành|Cấp độ saoCây trồng đã vận chuyển|Cây trồng đã vận chuyển|Vật phẩm đã thu thập|Chất nhờn đã bị giết|Địa cầu đã bị nứt|Bạn tốt|Tiền cá nhân đã kiếm được] Mặc định là null.
"StatsLabel": "Name", // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] Đây là các chỉ số hiện tại của trò chơi được xác định theo nhãn. Nếu có thêm nhãn, chúng cũng sẽ được hỗ trợ. Nhãn này cũng sẽ xác định các nhãn chỉ số tùy chỉnh do các bản mod khác thêm vào. Mặc định là null.
"Số tiền": 1 // Số tiền trạng thái phải bằng hoặc lớn hơn để điều kiện có hiệu lực.
            }
],
"CollectionConditions": // Mỗi điều kiện thu thập của danh sách phải có giá trị bằng hoặc cao hơn số lượng đã xác định.
        [
            {
"Bộ sưu tập": "Đã vận chuyển", //[Đã vận chuyển|Cá|Hiện vật|Khoáng sản|Nấu ăn|Chế tạo] là bắt buộc.
"Name": "Oil", //Đã lỗi thời, sử dụng ID thay thế. Tên của đối tượng hoặc công thức cho bộ sưu tập 'Crafting'. Nếu không phải là bộ sưu tập crafting, nó sẽ tìm kiếm tên đó trong danh sách đối tượng để tìm chỉ mục. Nếu không tìm thấy tên, chữ cái sẽ bị bỏ qua. Sẽ kết hợp với các thuộc tính khác. Mặc định là null.
"Index": 211, //Đã lỗi thời, sử dụng Id thay thế. Chỉ mục của đối tượng. Sẽ kết hợp với các thuộc tính khác. Mặc định là null.
"Ids": [ "282", "MossSoup" ], //ID vật phẩm hoặc tên công thức chế tạo. Sẽ kết hợp với các thuộc tính khác. Số lượng được cộng lại để so sánh với thuộc tính Amount.
"Số tiền": 10 // Tổng số lượng các đối tượng trong bộ sưu tập phải bằng hoặc lớn hơn thì điều kiện mới hợp lệ.
            }
],
"SpecialDateCondition": // Phải là ngày đó hoặc ngày sau đó.
        {
"SpecialDate": "ChildBirth", //[Wedding|ChildBirth] Bắt buộc
"YearsSince": 1, //Số năm kể từ ngày xảy ra sự kiện. 0 sẽ khớp với ngày thực tế, 1 khớp với năm hiện tại. Mặc định là 0.
"WhichChild": 1 //Nếu thuộc tính SpecialDate là ChildBirth, nó sẽ tham chiếu đến con nào. Mặc định là 1;
},
"ExpandedPrecondition": "d Mon Fri/HasItem Pink Cake/!JojaMartComplete/!w rainy", //Cần mod Tiện ích Điều kiện Mở rộng. Xem tài liệu mod đó để biết cách thức hoạt động. Nếu mod không được tải, thư sẽ không được gửi.
"ExpandedPreconditions": [ "!z spring/t 600 1000", "f Linus 1000/w rainy/z spring", "f Linus 2500" ], //Cần mod Tiện ích Expanded Preconditions. Xem tài liệu mod đó để biết cách thức hoạt động. Nếu mod không được tải, thư sẽ không được gửi.
"RandomChance": 0.25, // Mod sẽ kiểm tra xem một số ngẫu nhiên từ 0 đến 1 có nằm dưới số đã cho hay không. Cùng một lần lưu, cùng ngày cho cùng một chữ cái sẽ luôn cho kết quả giống nhau để tránh gian lận.
"Tòa nhà": ["Coop","Big Coop","Deluxe Coop"], // Yêu cầu một trong các tòa nhà hiện đang được xây dựng trong trang trại.
"RequireAllBuildings": false, // Nếu đúng, yêu cầu tất cả các tòa nhà trong danh sách "Tòa nhà" phải được xây dựng trong trang trại. Mặc định là sai.
"MailReceived": ["jojaVault","ccVault"], // Yêu cầu một trong các email đã được nhận. Danh sách trò chơi cũng chứa những thứ khác không phải thư, chẳng hạn như cờ trung tâm cộng đồng.
"RequireAllMailReceived": false, // Nếu đúng, yêu cầu tất cả thư trong danh sách "MailReceived" phải được nhận. Mặc định là false.
"MailNotReceived": ["jojaVault","ccVault"], // Yêu cầu thư chưa được nhận. Danh sách trò chơi cũng chứa những thứ khác không phải thư, chẳng hạn như cờ trung tâm cộng đồng.
"EventsSeen": [ "4", "32423" ], // Yêu cầu một trong các sự kiện phải được người chơi nhìn thấy. Giá trị này phải là một chuỗi, nhưng cũng có thể được sử dụng như một số nguyên để tương thích với phiên bản cũ.
"RequireAllEventsSeen": false, // Nếu đúng, yêu cầu tất cả các sự kiện trong danh sách "EventsSeen" phải được người chơi nhìn thấy. Mặc định là false.
"HasMods": [ "SMAPI.ConsoleCommands", "SMAPI.SaveBackup" ], // Cần tải một trong các mod. Phải là mod UniqueID.
"RequireAllMods": false, // Nếu đúng, yêu cầu tất cả các mod trong danh sách "HasMods" phải được tải. Mặc định là false.
"EventsNotSeen": [ "4", "32423" ], // Yêu cầu các sự kiện chưa được người chơi nhìn thấy. Nên là một chuỗi, nhưng cũng có thể hoạt động như một số nguyên để tương thích với phiên bản cũ.
"RecipeKnown": ["Pizza","Survival Burger"], // Yêu cầu người chơi phải học được một trong các công thức.
"RequireAllRecipeKnown": false, // Nếu đúng, yêu cầu người chơi phải học tất cả các công thức trong danh sách "RecipeKnown". Mặc định là false.
"RecipeNotKnown": ["Wild Bait"], // Yêu cầu người chơi chưa học được công thức.
"KeepValid": false // Nếu đúng, khi các điều kiện được đáp ứng, giữ cho thư hợp lệ cho đến khi được đọc. Mặc định là false.
    }
]


Để Modder sử dụng API:
  • Sao chépIMailFrameworkModApigiao diện với phương pháp bạn muốn sử dụng từ giao diện MFM.
  • Sao chépThưnếu một trong các phương pháp cần đến nó.
  • Phương pháp:
    • RegisterContentPack- Sử dụngHelper.ContentPacks.CreateTemporaryđể tải một thư mục từ mod của bạn chứa mail.json và thư mục i18n có thể dùng để dịch. Không cần Manifest vì bạn có thể sử dụng tham số phương thức đó.
    • Thư đăng ký- Điền các thuộc tính cần thiết vào ILetter. Một điều kiện cũng cần thiết để đăng ký một chữ cái. Nên sử dụng lệnh gọi lại để thêm ít nhất ID chữ cái đã nhận. Xem ví dụ bên dưới, trên "Để Modder mã hóa với sự phụ thuộc của MFM" phiên họp.
    • Nhận thư- Bạn sẽ nhận được đối tượng ILetter cho ID của chữ cái.
    • Lấy chuỗi dữ liệu Mail- Bạn sẽ nhận được chuỗi dữ liệu thư cho ID thư. Chuỗi dữ liệu thư về cơ bản là văn bản đã dịch cộng với tiêu đề đã dịch với dấu phân cách [#].

Để Modder mã hóa với sự phụ thuộc của MFM:
  • Tham chiếu MailFrameworkMod.dll trên dự án SMAPI của bạn.
    • Bạn đăng ký Thư của mình bằng MailRepository.SaveLetter(Letter)
    • Vào đầu mỗi ngày, người quản lý sẽ kiểm tra các Thư đã đạt điều kiện để gửi và thêm chúng vào hộp thư.
    • Những lá thư này sẽ được mở đầu tiên khi người chơi kiểm tra hộp thư.
    • Khi bức thư được mở, nó sẽ được lấy ra khỏi hộp thư.
    • Điều kiện gọi lại của chữ cái đó là chúng được gọi.
    • Vào cuối ngày, bức thư vẫn còn trong hộp thư sẽ bị xóa, do đó trò chơi sẽ không lưu chúng lại.
  • Bạn có thể coi bản mod này như một kho lưu trữ thư của mình. Nó hoạt động tốt nhất nếu bạn tải toàn bộ thư khi trò chơi đang tải.


Ví dụ:

Tiết lộ:
Trình diễn

Tải một bức thư đơn giản sẽ hiển thị cho người chơi nếu chưa đọc trước đó và sẽ không được gửi lại sau khi người chơi mở bức thư đó:
MailRepository.SaveLetter(
Thư mới(
"LetterUniqueId"
"Văn bản tùy chỉnh của chữ cái."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
)
);


Tải một lá thư đơn giản như trước, nhưng kèm theo 5 Emerald:
MailRepository.SaveLetter(
Thư mới(
"LetterUniqueId"
"Văn bản tùy chỉnh của chữ cái."
,Danh sách mới { StardewValley.Object(60,5) mới }
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
  )
);

Người chơi sẽ không nhận được cùng một vật phẩm mà là một bản sao được trả về từ phương thức getOne().

Tải một lá thư đơn giản để dạy công thức nấu ăn, thư sẽ được gửi đến nếu người chơi không biết công thức. Bản mod sẽ tự động dạy công thức khi người chơi tải, không cần phải gọi lại ở đây:
MailRepository.SaveLetter(
Thư mới(
"LetterUniqueId"
, "Văn bản tùy chỉnh chữ cái."
, "RecipeUniqueName"
, (l) => !Game1.player.cookingRecipes.ContainsKey(l.Recipe)
  )
);

"RecipeUniqueName" phải giống với tên được lưu trữ trong "Data//CookingRecipes" hoặc "Data//CraftingRecipes".

Tải một bức thư đơn giản với văn bản và nền khác nhau:
MailRepository.SaveLetter(
Thư mới(
"LetterUniqueId"
"Văn bản tùy chỉnh của chữ cái."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
1
){Màu văn bản=8}
);


Tải một bức thư đơn giản với nền tùy chỉnh:
MailRepository.SaveLetter(
Thư mới(
"LetterUniqueId"
"Văn bản tùy chỉnh của chữ cái."
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,Game1.player.mailReceived.Add(l.Id)
1
){
LetterTexture=helper.Content.Load("CustomLetterBG.png")
,Màu văn bản=4
  }
);
Trong đó CustomLetterBG.png là một tệp hình ảnh có cùng cấu trúc với "LooseSprites//letterBG"

Tải một bức thư đơn giản có bản dịch cho văn bản và tiêu đề.
MailRepository.SaveLetter(
Thư mới(
"LetterUniqueId"
,"myletter.translation.key.text"
,(l)=>!Game1.player.mailReceived.Contains(l.Id)
,(l)=>Game1.player.mailReceived.Add(l.Id)
){
Tiêu đề = "myletter.translation.key.title",
I18N = trợ giúp.Bản dịch
    }
);



Các bản mod khác của tôi:

Mod hàng đầu cho Stardew Valley

Khám phá các mod tốt nhất cho Stardew Valley mang đến các tính năng mới, đồ họa nâng cao và những cách thú vị để biến đổi trải nghiệm chơi game của bạn.
Patcher nội dung
Pathoschild2025-10-27 01:17:30
Tải các gói nội dung thay đổi dữ liệu, hình ảnh và bản đồ của trò chơi mà không thay thế các tệp XNB.
SMAPI - API Modding của Stardew
Pathoschild2025-07-15 09:52:47
Trình tải mod cho Stardew Valley
Địa điểm bản đồ NPC
Bouhm2025-10-22 09:39:46
Xem NPC và người chơi trên bản đồ, với một bản đồ tùy chọn.
Menu cấu hình Mod chung
spacechase02025-10-19 03:48:57
Thêm một giao diện trong trò chơi để chỉnh sửa các tùy chọn cấu hình của các mod khác.
vũ trụ SpaceCore
spacechase02025-10-19 22:27:21
Một mod framework được sử dụng bởi một số mods khác của tôi.
Thung lũng Stardew mở rộng
FlashShifter2025-07-01 07:17:39
Stardew Valley Expanded là một phần mở rộng dành cho Stardew Valley của ConcernedApe. Mod này thêm 28 NPC mới, 58 địa điểm, 278 sự kiện nhân vật, 43 cá, khu vực vani tái tưởng tượng, ba bản đồ trang trại, một bản đồ thế giới tái tưởng tượng phản ánh tất cả
Tìm kiếm bất cứ điều gì
Pathoschild2025-10-27 01:26:29
Xem thông tin trực tiếp về bất cứ điều gì dưới con trỏ của bạn khi bạn nhấn F1. Tìm hiểu những món quà yêu thích của người dân làng, khi nào một cây trồng sẽ sẵn sàng thu hoạch, bao lâu một hàng rào sẽ kéo dài, tại sao động vật trang trại của bạn không hạnh phúc, và nhiều hơn nữa.
Sản phẩm CJB
Pathoschild2025-07-28 06:24:40
Một menu spawner mục dễ sử dụng trong trò chơi.

Mở khóa toàn bộ tiềm năng của Stardew Valley với XMODhub — khám phá các mod hàng đầu này ngay hôm nay!

mcafee
Nếu McAfee chặn cài đặt, nhấp vào đây.
Được 200,000,000+ người dùng tin tưởng

Cần trợ giúp về tải xuống hoặc cài đặt? Tham gia cộng đồng Discord của chúng tôi để được hỗ trợ!

logo
Ngôn ngữ

Giải pháp chơi game

Tài nguyên

Đối tác

Theo dõi chúng tôi trên

discordfacebooktwitteryoutube
Hỗ trợ:
support@xmodhub.com
Xmod_Lily
Kinh doanh:
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