logo
ar
اللغة العربية

البريد الإطار Mod

المنشئ: Digus
تم التحديث:28/03/2025 14:16:59
49KB
mcafee
المصادقة
موثوق من قبل 200,000,000+ مستخدمًا

التعديلات المطلوبة مسبقًا

سيتم تثبيته تلقائيًا عند استخدام البريد الإطار Mod

حول هذا التعديل

الإطار لاستخدام صندوق البريد في اللعبة. أوامر وحدة التحكم لتعديل البريد. واجهات حزمة الشفرة والمحتوى.
موضوعي:
قم بتبسيط عملية إرسال البريد إلى اللاعب، مما يمنحك مزيدًا من التحكم في متى وماذا يجب استلامه.
كما يوفر المزيد من الخيارات غير الممكنة بمجرد تحرير ملفات البيانات، مثل تغيير لون النص وخلفية الحرف حسب الرغبة.

تثبيت:

سجل التغييرات:

1.20.0
  • يُضيف أصلًا مخصصًا جديدًا إلى اللعبة. (DIGUS.MailFrameworkMod/MailData) هذا يعني أنه يُمكن الآن تحميل رسائل MFM باستخدام Content Patcher والاستفادة من جميع ميزاته، مثل الرموز. يدعم هذا الإصدار الخصائص نفسها.
  • يتم أيضًا تحميل أحرف Content Pack في الأصول المخصصة الجديدة وبالتالي يمكن تحريرها باستخدام Content Patcher.
  • يتم الآن تحميل حزم المحتوى إلى ذاكرة التخزين المؤقت عند بدء اللعبة، بدلاً من إعادة تحميلها في كل مرة يتم فيها تحميل ملف الحفظ. يمكنك فرض إعادة تحميل حزم المحتوى باستخدام أمر وحدة التحكم.
  • تدعم خصائص النص والعنوان الآن سلسلة قابلة للتجزئة.
  • يمكن الآن أن تكون أصول الملمس أحد أصول اللعبة، وليس مجرد أصل في مجلد التعديل.
  • خاصية GameStateQuery الجديدة كشرط لتسليم رسالة.
1.19.0
  • خاصية جديدة لإبقاء البريد صالحًا بمجرد استيفاء جميع الشروط لمدة يوم واحد ولكن لم يتم قراءة البريد في ذلك اليوم.
  • ميزة جديدة للتعامل مع المرفق المختار بشكل عشوائي
  • خاصية جديدة لتعيين عدد العناصر من قائمة المرفقات التي يجب اختيارها للتسليم.
  • خاصية جديدة لتعيين "مجموعة عشوائية" لمرفق، بحيث يتم اختياره من تلك المجموعة بدلاً من الاختيار من القائمة بأكملها.
  • خاصية جديدة لتعيين "الوزن" لمرفق معين، عند اختياره عشوائيًا.
  • خاصية جديدة لتعيين عدد العناصر التي يجب اختيارها من مجموعة معينة، بدلاً من استخدام القيمة الافتراضية.
  • خاصية جديدة لتحديد ما إذا كان من الممكن اختيار عنصر من مجموعة معينة أكثر من مرة.
  • مجموعة جديدة من الخصائص لتعيين متطلبات MailReceived للمرفقات والردود
  • خاصية جديدة لتعيين MailReceived ليتم إزالته عند قراءة رسالة أو عند إيقاف تشغيل خيار الرد.
  • خاصية جديدة لتعيين التكلفة لخيار الرد المحدد.
  • نوع العنصر الجديد "لا شيء". يُستخدم هذا الخيار أساسًا عند وجود احتمال عشوائي لعدم تسليم عنصر، دون ظهور أخطاء أو تحذيرات في السجل.
1.18.0
  • خاصية معرفات جديدة لتحل محل الفهرس والاسم في شروط المجموعة. يمكنها تجميع عدد عناصر متعددة، وجمع قيمتها للمقارنة مع الكمية.
  • خاصية ReplyConfig جديدة لإضافة سلوك رد. يمكنك عرض خيار معين على القارئ بعد قراءة رسالة بريد إلكتروني، وسيضيف نصًا واحدًا أو أكثر من رسائل البريد المستلم بناءً على الخيار المختار. يمكن تنفيذ منطق تعديل إضافي بناءً على هذا الخيار.
  • إصلاح الحرف الذي يحتوي على الوصفة والذي لا يدعم خاصية CustomTextColorName.
  • إصلاح استثناء المرجع الفارغ عند تحميل عنصر يحمل اسمًا فارغًا في اللعبة.
1.17.1
  • يجب ألا تحتوي رسائل البريد الإلكتروني الخاصة بحزمة المحتوى التي تحتوي على خاصية الوصفة على مرفقات لإعادة تسليمها إذا لم يتم تعلم الوصفة. (يتم تجاهل خاصية الوصفة إذا كانت هناك مرفقات)
  • إصلاح وصفات الطبخ بنفس المنطق المطبق على صياغة الوصفات من قبل.
1.17.0
  • خاصية جديدة لتعيين جودة المرفق
  • يجب إعادة تسليم رسائل البريد الإلكتروني الخاصة بحزمة المحتوى التي تحتوي على الوصفة إذا لم يتم تعلم الوصفة.
  • إصلاح التحذيرات حول Slingshot في حالة استخدام معرف العنصر المؤهل.
  • إصلاح وصفات المواد القابلة للصنع التي تم تسليمها حتى لو تم تعلم الوصفة بالفعل.
  • لأسباب تتعلق بالإرث، إذا لم يتم العثور على معرف الوصفة في الوصفات التي تم تعلمها، فسوف يبحث عن وصفة تنشئ عنصرًا باسم معرف الوصفة.
1.16.1
  • إصلاح اسم الوصفة المترجمة.
1.16.0
  • تم تحديث الوضع ليصبح متوافقًا مع Stardew Valley 1.6
  • أمر جديد لإعادة تحميل حزم المحتوى
  • تم تغيير اسم MailDao إلى MailRepository. (يؤثر هذا فقط على مُعدّلي SMAPI الذين يستخدمونه)
  • نوع العنصر الجديد 'QualifiedItemId' للمرفقات، يجب أن يعمل مع كل نوع من العناصر في اللعبة إذا كنت تستخدم المؤهل المناسب.
  • خاصية جديدة لظروف خاصة (الزواج والولادة)
  • خاصية جديدة لـ CustomTextColor، وتم إلغاء الخاصية القديمة.
  • خاصية HasMods الجديدة
  • خاصية RequireAllMods الجديدة
  • معرفات الأحداث أصبحت الآن عبارة عن سلاسل. (يجب أن تظل الأرقام تعمل)
  • تمت إزالة المنطق القديم SV 1.6 المدمج من MFM.
  • تم إصلاح المشكلة من الإصدار ألفا حيث لم يتم فتح الرسالة في صفحة جمع البريد.
كابح:
يعرض
1.15.0
  • واجهة API جديدة لتعديلات SMAPI.
  • طريقة API لتحميل مجلد حزمة المحتوى من داخل تعديل SMAPI الخاص بك.
  • طريقة API لتحميل حرف.
  • طريقة API للحصول على بيانات الحرف.
  • طريقة API للحصول على سلسلة بيانات البريد لرسالة.
  • إصلاح مشكلة عدم عمل صندوق البريد بشكل صحيح عند حدوث خطأ عند إغلاق الرسالة.
  • من الأفضل تسجيل هذه الأخطاء.
1.14.0
  • مزيد من التغييرات للتوافق مع SMAPI 4
  • سمة جديدة في فئة الحرف لتعيين ITranslationHelper.
  • لا تحتاج حزمة المحتوى إلى تغيير أي شيء، ولكن هذا التغيير من شأنه تجنب بعض مشكلات i18n النادرة.
  • يمكن للمشرفين الذين يستخدمون MFM من خلال الكود تحديث تنفيذهم.
1.13.0
  • جعل التعديل متوافقًا مع SMAPI 4.
  • خاصية جديدة لمستوى المنجم الأعمق.
  • عقار جديد بالسعر الحالي.
  • عقار جديد مقابل إجمالي الأموال المكتسبة.
  • أمر وحدة تحكم جديد لإجبار صندوق البريد على التحديث لمساعدة المصححين على تصحيح الأخطاء.
  • تظهر الآن قائمة مجموعة الرسائل زر إغلاق مخصص أيضًا.
1.12.2
  • جعل التعديل متوافقًا مع الإصدار 1.5.5، دون إجبار SMAPI على تحويله.
  • ينبغي إصلاح بعض المشاكل المتعلقة بالمرفق الذي لا يعمل على نظام التشغيل Unix.
  • خاصية جديدة لمستوى ترقية المنزل.
1.12.1
  • تم إصلاح الخطأ الذي حدث عند عدم تحميل أداة الشروط المسبقة الموسعة.
1.12.0
  • خصائص جديدة لدعم الاستخدامالشروط المسبقة الموسعة
  • خاصية جديدة تتيح إمكانية إضافة نص بالإضافة إلى معرف الحرف إلى قائمة MailReceived الخاصة باللاعب.
1.11.0
  • دعم DGA (أصول اللعبة الديناميكية) كمرفقات.
1.10.2
  • إصلاح أسماء وصفات الطبخ باللغة الإنجليزية التي تظهر فارغة، عند إضافتها بواسطة أصول Json.
1.10.1
  • إصلاح فتح الرسائل تلقائيًا بدون نص مما يؤدي إلى كسر الوضع عندما يكون هناك ملفات i18n.
  • إصلاح مشكلة عدم تحميل الحرف من حزمة المحتوى بعد تحذير حالة المجموعة الواحدة.
  • إضافة نوع جديد من متطلبات المجموعة لصياغة الوصفات.
1.10.0
  • الآن يتم دعم جميع أدوات الفانيليا.
  • دعم المقلاع الأصلية كأسلحة. إذا استخدمتَ فهرس المقلاع أو اسمه، فسيتم إنشاؤه كما هو.
  • خاصية "الفتح التلقائي" الجديدة، عندما تريد استخدام شروط MFM لحفظ معرف الحرف كمقروء دون كتابة حرف فعلي.
1.9.2
  • تحسين تحميل الأصول من حزم المحتوى.
  • إصلاح مشكلة عدم استدعاء الحروف عند فتح قائمة لإضافة عنصر إلى المخزون.
1.9.1
  • إصلاح خطأ حيث لم يتم فتح خطاب MFM وإزالته من الصندوق لليوم الحالي إذا كنت تحمل كائنًا عند النقر فوق صندوق البريد.
1.9.0
  • تم إنشاء خاصية جديدة للحرف باستخدام SMAPI لإضافة عناصر ديناميكيًا إلى الحرف.
  • طريقة جديدة لإزالة الرسائل من صندوق البريد.
1.8.1
  • تم إصلاحه لتجنب رسائل الصراع في التعاون المحلي.
  • إصلاح المواقف النادرة التي يتوقف فيها الوضع عن العمل إذا لم يتم إغلاق قائمة الحروف بشكل صحيح بواسطة اللعبة.
1.8.0
  • دعم للأثاث والأسلحة والأحذية كملحقات.
  • خاصية جديدة لتعيين مستوى ترقية الأدوات المرفقة.
1.7.0
  • دعم الحلقات كمرفقات.
  • شروط جديدة للوصفات.
  • خاصية جديدة لتخصيص الخلفية مع حزم المحتوى.
  • دعم تخصيص زر الإغلاق باستخدام حزمة المحتوى والرمز.
1.6.0
  • دعم i18n في حزم المحتوى.
  • شروط جديدة لخصائص المباني في المزرعة.
  • خصائص شروط جديدة للبريد المستلم. (يستخدم هذا لعلامات المهمة)
  • خصائص شروط جديدة للأحداث.
  • قائمة شروط جديدة لعناصر قائمة المجموعات.
  • قائمة شروط جديدة لإحصائيات اللعبة.
  • خاصية جديدة لحالة الصداقة لقائمة الشروط الخاصة بصداقة NPC.
  • وظيفة عشوائية جديدة عندما تتعارض معرفات المجموعة.
1.5.1
  • إصلاح الرسائل التي لا تحتوي على معرفات مجموعة يتم تجميعها معًا.
1.5.0
  • سيظهر الحرف الآن في قائمة المجموعة إذا تم تعريف عنوان. كما ستظهر القوام والألوان المخصصة في قائمة المجموعة.
  • يمكن الآن للرسائل أن تحمل مُعرِّف مجموعة. لن يتم تسليم الرسائل التي تحمل مُعرِّف المجموعة نفسه في نفس اليوم.
  • حالة جديدة لحزم المحتوى: "RandomChance".
  • يُطلق على BigObject الآن اسم BigCraftable، كما هو الحال في كود اللعبة.
  • إصلاح الأخطاء المطبعية في القالب.
1.4.1
  • إضافة الدعم إلى Stardew Valley 1.4.0
  • إضافة خاصية عنوان الحروف لعرضها في قائمة المجموعة. لم يتم تنفيذها بالكامل بعد، ولكن يمكن للمعدّلين البدء في ضبطها.
1.4.0
  • يضيف دعمًا لحزمة المحتوى للمعدلين لإضافة أحرف مخصصة، مع تكوينات لجميع الميزات التي يوفرها هذا الإطار، ومع معظم شروط التسليم المستخدمة الشائعة.
  • إصلاح وحدات التحكم التي لا تعمل على إرفاق العناصر.
  • إصلاح لإظهار المرفقات بشكل صحيح إذا كان البريد يحتوي على أكثر من عنصر مرفق.
  • إصلاح عدم إغلاق الرسالة إذا كان مخزونك ممتلئًا وتم فتح قائمة لإدارته.
  • إصلاح عدم إضافة مجموعة من العناصر إلى البريد حتى عند تكوينه لذلك.
  • إضافة الدعم إلى SMAPI 3
1.3.4
  • إضافة الدعم إلى Stardew Valley 1.3.36
1.3.3
  • إضافة الدعم إلى SMAPI 3
1.3.2
  • إضافة الدعم إلى Stardew Valley 1.3.32
1.3.1
  • إضافة أوامر لإزالة البريد الإلكتروني المستلم وإضافته إلى قائمة البريد الإلكتروني المستلم للاعب.
1.3.0-بيتا.6
  • يضيف الدعم لصياغة الوصفات
  • يضيف الدعم للخلفية المخصصة
  • إضافة دعم للون النص المخصص
  • طريقة جديدة لفتح رسالة مخصصة، باستخدام الانسجام الآن
  • ملف التكوين لتمكين الطريقة القديمة لفتح الرسائل المخصصة.
1.2.0
  • دعم لوصفات i18n.
  • إصلاح الوضع الذي لا يعمل بشكل صحيح بعد العودة إلى قائمة العنوان.
  • إصلاح مشكلة عدم تسليم البريد إذا كان شرط الرسالة يثير استثناءً.
1.1.0
  • إصلاح مشكلة تلقي رسالة "تم إقرار الضريبة" أثناء النوم والخروج من اللعبة دون قراءة رسالة بريد مخصصة.
  • يمكن أن تحتوي الرسائل المخصصة على وصفات.
  • هذا الإصدار غير متوافق مع الإصدار الأقدم. يجب تحديث التعديلات لاستخدام هذا الإصدار.
1.0.0
  • إضافة رسائل بريد إلكتروني مخصصة
  • يمكن أن تحتوي الرسائل المخصصة على عناصر.

لكي يستخدم المودرز حزمة المحتوى:
  • يوجد قالب داخل مجلد التعديل يحتوي على تعليمات معلقة حول ما يفعله كل خاصية.
  • جميع ميزات الحروف ما عدا الشروط والارتداد هي نفسها الموجودة في الترميز باستخدام الإطار.
  • الشروط محدودة بالشروط المُنفَّذة، وتُعيِّن دالة الاستدعاء دائمًا مُعرِّف الحرف على أنه مُستلَم. إذا كنتَ بحاجة إلى شروط مُتقدِّمة، فينبغي عليكَ برمجتها. أو يُمكنكَ اقتراح إضافة شرط إلى حزمة المحتوى، وإذا كان الأمر منطقيًا، فقد أُضيفه.
  • هذا هو القالب كما تمت إضافته في ملف التعديل:
كابح:
يعرض
[
    {
"المعرّف": "MyMod.MyMailId"، // مُعرّف الحرف. من المهم أن يكون النص فريدًا لتجنب التعارضات. كما يجب ألا يحتوي على مسافات.
"GroupId": "MyMod.MyGroupId"، // مُعرِّف مجموعة الرسائل. لا تُسلَّم الرسائل التي تحمل مُعرِّف المجموعة نفسه في نفس اليوم. تُعطى الأولوية للرسائل المُسجَّلة أولًا، إلا إذا كان مُعرِّف المجموعة ينتهي بـ ".Random"، ففي هذه الحالة، سيتم اختيار حرف عشوائي. القيمة الافتراضية هي null.
"العنوان": "عنوان رسالتي"، // عنوان الرسالة. سيظهر في قائمة المجموعات. عيّنه إلى قيمة فارغة أو احذف السطر إذا كنت لا ترغب في ظهور الرسالة في المجموعة. إذا كان ملف الترجمة متوفرًا، فيجب وضع مفتاح الترجمة هنا، ولكن لا يزال بإمكانك تركه فارغًا لعدم وجود عنوان.
"النص": "عزيزي @^هذه رسالتي المُخصصة."، // نص الرسالة. يمكنك استخدام @ لكتابة اسم اللاعب و^ لفصل الأسطر. يمكنك أيضًا استخدام أوامر اللعبة الأساسية لإضافة الأموال والعناصر وغيرها. إذا كان ملف الترجمة مُتاحًا، يُرجى وضع مفتاح الترجمة هنا.
"RandomlyChooseAttachment": 2, // إذا تم تحديد رقم، فسيتم اختيار هذا العدد عشوائيًا من العناصر من قائمة المرفقات لكل مجموعة. القيمة الافتراضية هي null.
"RandomlyChooseAttachmentPerGroup": { "CaveItems": 3 }, // إذا تم تعيين مجموعة وكمية هنا، فسيتم استخدام هذا العدد لاختيار العناصر بدلاً من العدد المحدد في RandomlyChooseAttachment. القيمة الافتراضية فارغة.
"AttachmentGroupWithReplacement": [ "CaveItems" ], // يتم اختيار المرفقات عشوائيًا من قائمة دون استبدال افتراضيًا. إذا أردت اختيار المجموعة المختارة بدلًا من المرفقات، فأضف المجموعة إلى القائمة. إذا لم تُضف مجموعات، فاستخدم سلسلة نصية فارغة. القيمة الافتراضية هي قائمة فارغة.
المرفقات: [ // قائمة المرفقات. يُرجى إزالة الخاصية التي تمنع إرفاق العناصر بالبريد.
            {
"النوع": "كائن"، // [كائن| BigCraftable|أداة|خاتم|أثاث|سلاح|أحذية| DGA|معرّف العنصر المؤهل|لا شيء] مطلوب. نوع العنصر الذي سيتم إرفاقه. في حال عدم تقديمه، سيتم تجاهل العنصر. يتم حذف "لا شيء" دائمًا دون أخطاء في السجل، ويجب استخدامه عند الرغبة في معرفة احتمالية عدم إضافة مرفق.
"الاسم": "جزرة الكهف"، // يُستخدم للعثور على فهرس العناصر. هذا مطلوب عند استخدام كائنات مخصصة، مثل كائنات أصول Json. يجب أن يكون معرف DGA الكامل هو المستخدم. إذا لم يُقدَّم، فسيتم استخدام الفهرس. القيمة الافتراضية هي null.
"الفهرس": "(0)78"، // فهرس العنصر. يجب أن يكون مُعرِّف العنصر المُؤهَّل كسلسلة نصية، ولكنه يعمل أيضًا كعدد صحيح للتوافق مع الإصدارات القديمة. في حال عدم وجود اسم أو عدم العثور على عنصر يحمل الاسم، يُستخدم الفهرس. وإلا، فسيتم تجاهل المرفق. يتم تجاهله إذا كان النوع DGA.
"المكدس": ١، // قيمة المكدس للعنصر المراد تسليمه. يُستخدم فقط للكائنات وBigCraftable. القيمة الافتراضية هي ١.
الجودة: ٢، // قيمة جودة المنتج المراد تسليمه. تُستخدم فقط للعناصر. ٠ = لا شيء، ١ = فضة، ٢ = ذهب، ٤ = إيريديوم. القيمة الافتراضية هي ٠؛
"RequireMailReceived": [ "jojaVault", "ccVault" ], // يشترط استلام إحدى الرسائل. تحتوي قائمة اللعبة أيضًا على عناصر أخرى ليست بريدًا، مثل أعلام مركز المجتمع. الإعداد الافتراضي هو null لعدم طلب استلام بريد.
"RequireAllMailReceived": خطأ، // إذا كانت القيمة صحيحة، فاشترط استلام جميع رسائل البريد الإلكتروني في قائمة "RequireMailReceived". القيمة الافتراضية هي خطأ.
"ProbabilityWeight": 1, // الوزن الذي يحمله هذا المرفق عند اختيار أيٍّ منهما سيتم تسليمه. يجمع الوضع جميع الأوزان في مجموعة معينة ويعطيها احتمالًا بقسمة هذا الوزن على الإجمالي. القيمة الافتراضية هي 1.
"RandomGroup": "CaveItems" // عند اختيار العناصر عشوائيًا، جُمّع القائمة حسب المجموعات التي تم العثور عليها، ثم اختر الكمية المحددة من كل مجموعة. القيمة الافتراضية هي سلسلة نصية فارغة تعمل كمجموعة افتراضية.
},
            {
"النوع": "أداة"، // عند استخدام الأداة، لا يمكن إرفاق سوى الأدوات المدعومة.
الاسم: "فأس"، // [فأس|مِجرفة|إبريق سقي|معول|منجل|منجل ذهبي|دلو حليب|مقص|صنارة صيد|مقلاة|صولجان إرجاع] مطلوب للأدوات. اسم الأداة المدعومة. وإلا، فسيتم تجاهل المرفق.
مستوى الترقية: ١ // مستوى ترقية الأداة. الأدوات العادية: ٠ = حجر، ١ = نحاس، ٢ = فولاذ، ٣ = ذهب، ٤ = إيريديوم. صنارة الصيد: ٠ = صنارة خيزران، ١ = صنارة تدريب، ٢ = صنارة ألياف زجاجية، ٣ = صنارة إيريديوم. يتم تجاهل الأنواع الأخرى. القيمة الافتراضية هي ٠.
},
            {
"النوع": "DGA"، //عنصر DGA
"الاسم": "spacechase0.DynamicGameAssets.Example/My Custom Item"، // استخدم معرف DGA الكامل. مطلوب.
"المكدس": ١٠، // قيمة المكدس للعنصر المراد تسليمه. يُستخدم فقط للكائنات وBigCraftable. القيمة الافتراضية هي ١.
الجودة: ٢ // قيمة جودة المنتج المراد تسليمه. تُستخدم فقط للأشياء. ٠ = لا شيء، ١ = فضة، ٢ = ذهب، ٤ = إيريديوم. القيمة الافتراضية هي ٠؛
},
            {
"النوع": "QualifiedItemId"، //أي عنصر مدعوم
"الفهرس": "(0)78"، // معرف العنصر المؤهل للعنصر.
"المكدس": ١٠، // قيمة المكدس للعنصر المراد تسليمه. يُستخدم فقط للكائنات وBigCraftable. القيمة الافتراضية هي ١؛
الجودة: ٢ // قيمة جودة المنتج المراد تسليمه. تُستخدم فقط للأشياء. ٠ = لا شيء، ١ = فضة، ٢ = ذهب، ٤ = إيريديوم. القيمة الافتراضية هي ٠؛
            }
],
"الوصفة": "اسم الوصفة"، // احذف السطر إذا كنت لا ترغب في إرفاق وصفة بالبريد. سيعمل هذا فقط إذا لم تكن لديك أي مرفقات أخرى بالبريد. بالنسبة لوصفات DGA، استخدم جزء المعرف فقط (احذف ModID).
"AdditionalMailReceived": ["MyMod.AnotherMailId", "VANILLA_FLAG"], // استخدم هذا لإضافة نص إضافي إلى قائمة "MailReceived". قد يكون مفيدًا لإضافة علامات عادية أو معرفات أحرف MFM أخرى.
"MailReceivedToRemove": ["MyMod.AnotherMailThatNeedToBeResent","MyMod.SomeFlagThatWasLockingSomeFeature"], //النص المراد إزالته من قائمة MailReceived. يمكن استخدام هذا لتشغيل رسائل جديدة، أو أحداث، أو علامات افتراضية، أو إيقاف إرسال رسائل MFM أخرى...
"LetterBG": "CustomLetterBG.png"، // اسم الملف في حزمة المحتوى الخاص بك الذي يحتوي على خلفية الحروف المخصصة للاستخدام. يجب أن يتبع نفس بنية ملف LetterBG الخاص باللعبة. أي خلفية ستكون مرتبطة بهذا الملف لهذا الحرف؟ إذا كانت فارغة أو محذوفة، فسيستخدم التعديل LetterBG الخاص باللعبة.
"WhichBG": 0، //معرف خلفية الحرف. 0 = كلاسيكي، 1 = مفكرة، 2 = أهرامات
"لون النص": -1، //احذف هذا السطر لاستخدام اللون الافتراضي. سيتم تجاهله في حال تعيين لون نص مخصص. -1 = أحمر داكن، 0 = أسود، 1 = أزرق سماوي، 2 = أحمر، 3 = أزرق بنفسجي، 4 = أبيض، 5 = برتقالي أحمر، 6 = أخضر ليموني، 7 = سماوي، 8 = رمادي داكن
"CustomTextColorName": "أبيض"، //لون النص.[http://www.foszor.com/blog/xna-color-chart/] سيتم استخدام خاصية TextColor بشكل افتراضي.
"UpperRightCloseButton": "CustomCloseButton.png"، // اسم الملف في حزمة المحتوى الذي يحتوي على زر الإغلاق المخصص للاستخدام. يجب أن يكون حجمه ١٢ × ١٢. إذا كان فارغًا أو تمت إزالته، فسيتم استخدام الزر الافتراضي.
"ReplyConfig": { // إذا كنت تريد من اللاعب إرسال رد بعد قراءة الرسالة، فسيتم عرض خيارات الرد التي ستضيف "ReceivedMail" واحدًا أو أكثر بناءً على إجابة اللاعب. يجب تنفيذ أي منطق إضافي متعلق بالرد بناءً على "ReceivedMail" المضافة.
"QuestionKey": "MyMod.MyMailId.Question"، //مفتاح لتحديد سؤالك. يُستخدم داخليًا فقط، ولكن يجب أن يكون فريدًا في حزمة المحتوى لتجنب التعارض بين الردود.
"QuestionDialog": "أرسل ردًا باختيار مكافأتك:"، //سيظهر سؤالك أو نصك فوق خيارات الرد. في حال توفر ملف ترجمة، يُرجى وضع مفتاح الترجمة هنا.
"الردود": [
                {
"ReplyKey": "MyMod.MyMailId.Reply1"، //يجب أن يكون فريدًا بين إجابات السؤال.
"ReplyOptionDialog": "أريد بذورًا."، //نص الخيار الذي سيظهر في قائمة الردود. إذا كان ملف الترجمة متوفرًا، يُرجى وضع مفتاح الترجمة هنا.
"RequireMailReceived": [ "jojaVault", "ccVault" ], // يشترط استلام إحدى الرسائل. تحتوي قائمة اللعبة أيضًا على عناصر أخرى ليست بريدًا، مثل أعلام مركز المجتمع. الإعداد الافتراضي هو null لعدم طلب استلام بريد.
"RequireAllMailReceived": خطأ، // إذا كانت القيمة صحيحة، فاشترط استلام جميع رسائل البريد الإلكتروني في قائمة "RequireMailReceived". القيمة الافتراضية هي خطأ.
"MailReceivedToAdd": [ "MyMod.MyMailId.PlayerSeedOption" ], // نص لإضافته إلى قائمة MailReceived. يمكن استخدامه لتشغيل رسائل جديدة، أو أحداث، أو علامات افتراضية، أو إيقاف إرسال رسائل MFM أخرى...
"MailReceivedToRemove": [ "MyMod.MyMailId.PlayerSapplingOption" ], //النص المراد إزالته من قائمة "MailReceived". يمكن استخدام هذا لتشغيل رسائل جديدة، أو أحداث، أو علامات افتراضية، أو إيقاف إرسال رسائل MFM أخرى...
"ReplyResponseDialog": "تم إرسال رسالتك لطلب البذور."، //سيظهر النص بعد اختيار خيار الرد هذا. إذا تم توفير ملف ترجمة، يُرجى وضع مفتاح الترجمة هنا.
التكلفة: ٥٠ // المبلغ الذي يحتاجه اللاعب لاختيار هذا الخيار. إذا اختاره، يُخصم هذا المبلغ فورًا من رصيده. احرص دائمًا على توفير خيار مجاني، وإلا قد تُصاب بقفل مؤقت.
                }
            ]
},
"قابل للتكرار": خطأ، // إذا كانت القيمة صحيحة، فلن يتحقق المشرف من أن مُعرّف الحرف قد تم تسليمه بالفعل. القيمة الافتراضية هي خطأ.
"الفتح التلقائي": خطأ، // إذا كانت القيمة صحيحة، فسيفتح المشرف الرسالة في بداية اليوم بعد استيفاء الشروط. سيتم وضع علامة على مُعرِّف الرسالة كمقروءة، وإذا وُجدت وصفة مُحددة، فسيتم تعلمها. بما أن الرسالة لن تظهر أبدًا، فلن تُستخدم الخصائص المرئية مثل العنوان والنص والخلفية...، وكذلك المرفقات.
// شروط التسليم
//فيما يلي شروط التسليم. احذف أي سطر إذا كنت لا ترغب في التحقق من هذا الشرط.
التاريخ: "١٠ ربيع السنة الأولى"، // يجب أن يكون هذا التاريخ أو تاريخًا بعده. الصيغة هي "[١-٢٨] [ربيع|صيف|خريف|شتاء] سنة [١-٩٩٩]".
"الأيام": [7،14،21،28]، // يجب أن يكون أحد الأيام في القائمة.
"الفصول": ["الخريف"]، // يجب أن يكون أحد الفصول في القائمة. [الربيع|الصيف|الخريف|الشتاء]
الطقس: مشمس، // لا بد أن يكون طقس المباراة. الصيغة هي "[مشمس|ممطر]".
"HouseUpgradeLevel": 2، // يجب أن يكون مستوى ترقية المنزل مساويًا أو أعلى مما تم تعريفه. 0 - منزل مبتدئ (لا يوجد سبب لاستخدام هذا، فقط قم بإزالة السطر)، 1 - مطبخ، 2 - الطابق الثاني، 3 - قبو.
"DeepestMineLevel": 80, // يجب أن يكون أعمق مستوى منجم مساويًا أو أعلى مما تم تعريفه. 120 هو المستوى الأخير من المنجم، 121 هو المستوى الأول من كهف الجمجمة.
"CurrentMoney": 10000، // يجب أن يكون المبلغ الحالي مساويًا أو أعلى مما تم تعريفه.
"TotalMoneyEarned": 500000، // يجب أن يكون إجمالي الأموال المكتسبة مساويًا أو أكبر مما تم تعريفه.
"شروط الصداقة": // يجب على كل NPC في القائمة التحقق من جميع الشروط.
        [
            {
"NpcName": "لويس"، //اسم الشخصية غير القابلة للعب. يمكن استخدام شخصيات غير قابلة للعب مخصصة.
مستوى الصداقة: ٨، // يجب أن يكون لدى الشخصية غير القابلة للعب مستوى قلب صداقة مساويًا أو أعلى من المستوى المحدد. القيمة الافتراضية هي ٠.
"حالة الصداقة": ["مواعدة","مخطوبة","متزوجة"] // [صديق|مواعدة|مخطوبة|متزوجة|مطلقة] يشترط أن تكون حالة صداقة الشخصية غير القابلة للعب من القائمة. أزلها لعدم طلب حالة.
            }
],
شروط المهارة: // يجب أن يكون لكل مهارة في القائمة مستوى مساوٍ أو أعلى من المستوى المحدد. يمكن استخدام جميع المهارات المُبرمجة في اللعبة الأصلية، بما في ذلك مهارة الحظ. لا يمكن استخدام مهارات مخصصة.
        [
{ "اسم المهارة": "الزراعة"، "مستوى المهارة": 1 }
],
"شروط الإحصائيات": // يجب أن تكون قيمة كل إحصائية في القائمة مساوية أو أعلى من القيمة المُعرّفة. اختر اسم الإحصائيات أو تسمية الإحصائيات.
        [
            {
"StatsName": "مصنوع من الجبن"، //[البذور المزروعة | المنتجات المشحونة | المنتجات المطبوخة | المنتجات المصنعة | بيض الدجاج | بيض البط | إنتاج حليب البقر | إنتاج حليب الماعز | إنتاج صوف الأرانب | إنتاج صوف الأغنام | الجبن | صنع جبن الماعز | الكمأة | جمع الأحجار | سحق الصخور | سحقها | سحقها بالتراب | الهدايا | أوقات اللاوعي | متوسط وقت النوم | أوقات الصيد | صيد الأسماك | الصخور المتشققة | قطع الجذوع | الخطوات المتخذة | قتل الوحوش | العثور على الماس | منشوري تم العثور على ards|OtherPrecious Gems|CaveCarrots|CopperFound|IronFound|CoalFound|CoinsFound|GoldFound|IridiumFound|BarsSmelted|BeveragesMade|PreservesMade|PiecesOfTrashRecycled|MysticStonesCrushed|DaysPlayed|WeedsEliminated|SticksChopped|NotesFound|QuestsCompleted|StarLevelCropsShipped|CropsShipped|ItemsForage|SlimesKilled|GeodesCracked|Good Friends|IndividualMoneyEarned] الافتراضي هو null.
"StatsLabel": "الاسم"، // [exMemoriesWiped|childrenTurnedToDoves|trashCansChecked|boatRidesToIsland|beachFarmSpawns|hardModeMonstersKilled|timesEnchanted] هذه هي إحصائيات اللعبة الحالية التي يتم تحديدها بواسطة التصنيف، وفي حال إضافة المزيد، يجب دعمها أيضًا. كما سيتم تحديد تصنيفات الإحصائيات المخصصة التي أضافها المشرفون الآخرون. القيمة الافتراضية هي null.
"المبلغ": 1 // المبلغ الذي يجب أن تكون الحالة مساوية له أو أكبر حتى يكون الشرط صالحًا.
            }
],
"CollectionConditions": // يجب أن يكون لكل شرط مجموعة في القائمة قيمة مساوية أو أكبر من المبلغ المحدد.
        [
            {
"المجموعة": "تم الشحن"، //[تم الشحن|الأسماك|القطع الأثرية|المعادن|الطبخ|الصناعة] مطلوب.
"الاسم": "زيت"، //مُهمَل، يستخدم مُعرِّفات بدلاً منه. اسم الكائن أو الوصفة لمجموعة "التصنيع". إذا لم تكن مجموعة تصنيع، فسيبحث عن هذا الاسم في قائمة الكائنات للعثور على الفهرس. إذا لم يُعثر على الاسم، فسيتم تجاهل الحرف. سيتم دمجه مع الخصائص الأخرى. القيمة الافتراضية هي null.
"الفهرس": ٢١١، //مُهمَل، يستخدم مُعرِّفات بدلاً منه. فهرس الكائن. سيتم دمجه مع الخصائص الأخرى. القيمة الافتراضية هي null.
"المعرفات": [ "282"، "MossSoup" ]، //معرفات العناصر أو أسماء وصفات التصنيع. سيتم دمجها مع الخصائص الأخرى. يتم جمع الكميات للمقارنة مع خاصية "الكمية".
"المبلغ": 10 // يجب أن يكون إجمالي عدد الكائنات في المجموعة مساويًا أو أكبر حتى يكون الشرط صالحًا.
            }
],
"SpecialDateCondition": // يجب أن يكون هذا التاريخ أو بعده.
        {
"تاريخ خاص": "ميلاد الطفل"، //[حفل زفاف|ميلاد الطفل] مطلوب
"YearsSince": 1, //عدد السنوات منذ وقوع التاريخ. 0 يُطابق التاريخ الفعلي، و1 يُطابق السنة الحالية. القيمة الافتراضية هي 0.
"أي طفل": ١ //إذا كانت خاصية SpecialDate هي ChildBirth، فسيتم الإشارة إلى أي طفل. القيمة الافتراضية هي ١؛
},
"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" ], //يحتاج إلى تعديل أداة الشروط المسبقة الموسعة. يُرجى مراجعة وثائق هذا التعديل لمعرفة كيفية عمله. إذا لم يتم تحميل التعديل، فلن يتم تسليم الرسالة.
"فرصة عشوائية": 0.25، // سيتحقق المشرف من وجود رقم عشوائي من 0 إلى 1 أسفل الرقم المحدد. سيؤدي حفظ نفس الحفظ في نفس اليوم لنفس الحرف دائمًا إلى نفس النتيجة لتجنب الغش.
"المباني": ["تعاونية","تعاونية كبيرة","تعاونية فاخرة"], // يتطلب إنشاء أحد المباني حاليًا في المزرعة.
"RequireAllBuildings": خطأ، // إذا كانت القيمة صحيحة، فاشترط أن تكون جميع المباني في قائمة "المباني" قيد الإنشاء حاليًا في المزرعة. القيمة الافتراضية هي خطأ.
"MailReceived": ["jojaVault","ccVault"], // يشترط استلام إحدى الرسائل. تحتوي قائمة اللعبة أيضًا على عناصر أخرى غير البريد، مثل أعلام مركز المجتمع.
"RequireAllMailReceived": false، // إذا كانت القيمة صحيحة، فاطلب استلام جميع رسائل البريد الإلكتروني في قائمة "MailReceived". القيمة الافتراضية هي false.
"MailNotReceived": ["jojaVault","ccVault"], // يشترط عدم استلام الرسائل. تحتوي قائمة اللعبة أيضًا على عناصر أخرى غير البريد، مثل أعلام مركز المجتمع.
"EventsSeen": [ "4", "32423" ], // يشترط أن يكون أحد الأحداث قد شاهده اللاعب. يجب أن يكون سلسلة نصية، ولكنه يعمل أيضًا كعدد صحيح للتوافق مع الإصدارات القديمة.
"RequireAllEventsSeen": خطأ، // إذا كانت القيمة صحيحة، فاشترط أن يكون اللاعب قد شاهد جميع الأحداث في قائمة "EventsSeen". القيمة الافتراضية هي خطأ.
"HasMods": [ "SMAPI.ConsoleCommands", "SMAPI.SaveBackup" ], // يتطلب تحميل أحد التعديلات. يجب أن يكون المعرف الفريد للتعديل.
"RequireAllMods": false، // إذا كانت القيمة صحيحة، فاطلب تحميل جميع التعديلات في قائمة "HasMods". القيمة الافتراضية هي false.
"EventsNotSeen": [ "4", "32423" ], // يشترط ألا يكون اللاعب قد شاهد الأحداث. يجب أن تكون سلسلة نصية، ولكنها تعمل أيضًا كعدد صحيح للتوافق مع الإصدارات القديمة.
"RecipeKnown": ["بيتزا","برجر البقاء"], // يتطلب من اللاعب أن يتعلم إحدى الوصفات.
"RequireAllRecipeKnown": خطأ، // إذا كانت القيمة صحيحة، فاشترط أن يكون اللاعب قد تعلم جميع الوصفات في قائمة "RecipeKnown". القيمة الافتراضية هي خطأ.
"RecipeNotKnown": ["Wild Bait"], // يتطلب أن لا يكون اللاعب قد تعلم الوصفات.
"KeepValid": false // إذا كان هذا صحيحًا، فبمجرد استيفاء الشروط، يُحفظ البريد صالحًا حتى قراءته. القيمة الافتراضية هي false.
    }
]


لكي يستخدم Modder واجهة برمجة التطبيقات (API):
  • ينسخإطار عمل IMailModApiقم بالتفاعل مع الطريقة التي تريد استخدامها من واجهة MFM.
  • ينسخرسالةإذا كانت إحدى الطرق تحتاج إلى ذلك.
  • طُرق:
    • تسجيل حزمة المحتوى- يستخدممساعد.حزم المحتوى.إنشاء مؤقتلتحميل مجلد من تعديلك يحتوي على ملف mail.json، وربما مجلد i18n للترجمات. لا حاجة لبيان، إذ يمكنك استخدام هذه الطريقة.
    • رسالة التسجيلاملأ رسالة ILetter بالخصائص التي تحتاجها. يلزم أيضًا شرط لتسجيل الرسالة. يُنصح باستخدام استدعاء لإضافة معرف الرسالة كما وردت على الأقل. انظر الأمثلة أدناه، في قسم "بالنسبة إلى Modder للترميز باستخدام اعتماد MFM" حصة.
    • احصل على الرسالة- سوف تحصل على كائن ILetter لمعرف الحرف.
    • الحصول على سلسلة بيانات البريدستحصل على سلسلة بيانات البريد لمعرّف الحرف. سلسلة بيانات البريد هي في الأساس النص المُترجم بالإضافة إلى العنوان المُترجم مع فاصل [#].

بالنسبة لـ Modder للترميز باستخدام اعتماد MFM:
  • قم بالإشارة إلى MailFrameworkMod.dll في مشروع SMAPI الخاص بك.
    • يمكنك تسجيل رسالتك باستخدام MailRepository.SaveLetter(Letter)
    • في بداية كل يوم، يقوم المشرف بالتحقق من الرسائل التي وصلت إلى حالتها للتسليم وإضافتها إلى صندوق البريد.
    • سيتم فتح هذه الرسائل أولاً عندما يقوم اللاعب بالتحقق من صندوق البريد.
    • عند فتح الرسالة، يتم إخراجها من صندوق البريد.
    • حالة استدعاء الحرف هي أنهم استدعوا.
    • في نهاية اليوم، سيتم إزالة الرسائل الموجودة على صندوق البريد، وبالتالي لن يتم حفظها بواسطة اللعبة.
  • يمكنك اعتبار هذا التعديل بمثابة مخزن لرسائلك. يعمل بشكل أفضل إذا قمت بتحميل جميع رسائلك عند تحميل اللعبة.


أمثلة:

كابح:
يعرض

تحميل رسالة بسيطة ستظهر للاعب إذا لم يقرأها من قبل، ولن يتم تسليمها مرة أخرى بعد أن يفتحها اللاعب:
مستودع البريد.حفظ الرسالة(
رسالة جديدة(
"معرف فريد للحرف"
"نص الرسالة مخصص."
،(l)=>!Game1.player.mailReceived.Contains(l.Id)
،(l)=>Game1.player.mailReceived.Add(l.Id)
)
);


تحميل رسالة بسيطة كما في السابق، ولكن مع إرفاق 5 زمردات:
مستودع البريد.حفظ الرسالة(
رسالة جديدة(
"معرف فريد للحرف"
"نص الرسالة مخصص."
، قائمة جديدة<عنصر> { كائن StardewValley جديد(60,5) }
،(l)=>!Game1.player.mailReceived.Contains(l.Id)
،(l)=>Game1.player.mailReceived.Add(l.Id)
  )
);

لن يتلقى اللاعب نفس العنصر، بل نسخة يتم إرجاعها من طريقة getOne().

تحميل رسالة بسيطة تُعلّم وصفة طبخ، وسيتم تسليمها إذا لم يكن اللاعب يعرف الوصفة. يُعلّم التعديل الوصفات تلقائيًا عند تحميل اللاعب، دون الحاجة إلى معاودة الاتصال هنا:
مستودع البريد.حفظ الرسالة(
رسالة جديدة(
"معرف فريد للحرف"
"نص الرسالة مخصص."
، "RecipeUniqueName"
، (l) => !Game1.player.cookingRecipes.ContainsKey(l.Recipe)
  )
);

يجب أن يكون "RecipeUniqueName" هو نفسه المخزن في "Data//CookingRecipes" أو "Data//CraftingRecipes".

تحميل رسالة بسيطة بنص وخلفية مختلفة:
مستودع البريد.حفظ الرسالة(
رسالة جديدة(
"معرف فريد للحرف"
"نص الرسالة مخصص."
،(l)=>!Game1.player.mailReceived.Contains(l.Id)
،(l)=>Game1.player.mailReceived.Add(l.Id)
1
){لون النص=8}
);


تحميل رسالة بسيطة مع خلفية مخصصة:
مستودع البريد.حفظ الرسالة(
رسالة جديدة(
"معرف فريد للحرف"
"نص الرسالة مخصص."
،(l)=>!Game1.player.mailReceived.Contains(l.Id)
،Game1.player.mailReceived.Add(l.Id)
1
){
نص الرسالة=helper.Content.Load("CustomLetterBG.png")
لون النص=4
  }
);
حيث أن CustomLetterBG.png هو ملف صورة يتبع نفس هيكل "LooseSprites//letterBG"

تحميل رسالة بسيطة مع ترجمة النص والعنوان.
مستودع البريد.حفظ الرسالة(
رسالة جديدة(
"معرف فريد للحرف"
,"myletter.translation.key.text"
،(l)=>!Game1.player.mailReceived.Contains(l.Id)
،(l)=>Game1.player.mailReceived.Add(l.Id)
){
العنوان = "myletter.translation.key.title"،
I18N = مساعد الترجمة
    }
);



تعديلاتي الأخرى:

أفضل التعديلات لـ Stardew Valley

استكشف أفضل التعديلات لـ Stardew Valley التي تقدم ميزات جديدة، رسومات محسّنة، وطرق مثيرة لتحويل تجربة لعبك.
محتوى تصحيح
Pathoschild27/10/2025 01:17:30
يحمل حزم المحتوى التي تغير بيانات اللعبة والصور والخرائط دون استبدال ملفات XNB.
SMAPI - واجهة برمجة تطبيقات Stardew Modding
Pathoschild15/07/2025 09:52:47
تحميل المود لـ Stardew Valley.
مواقع خريطة NPC
Bouhm22/10/2025 09:39:46
انظر NPC واللاعبين على الخريطة، مع خريطة اختيارية.
قائمة تكوين Mod العامة
spacechase019/10/2025 03:48:57
يضيف واجهة مستخدم داخل اللعبة لتعديل خيارات تكوين المودات الأخرى.
سبيس كور
spacechase019/10/2025 22:27:21
تعديل إطار يستخدمه بعض تعديلاتي الأخرى.
ستاردو فالي توسع
FlashShifter01/07/2025 07:17:39
Stardew Valley Expanded هو توسيع مصنوع من قبل المعجبين لـ Stardew Valley من ConcernedApe. يضيف هذا المود 28 شخصية جديدة ، 58 موقعًا ، 278 أحداث شخصية ، 43 أسماك ، مناطق فانيليا أعيد تخيلها ، ثلاث خرائط مزرعة ، خريطة عالمية أعيد تخيلها تعكس جميع
ابحث عن أي شيء
Pathoschild27/10/2025 01:26:29
شوف المعلومات الحية عن أي شيء تحت المؤشر عند الضغط على F1. تعلم الهدايا المفضلة لسكان القرية، متى سيكون المحاصيل جاهزة للحصاد، كم من الوقت سيستمر السياج، لماذا حيوانات المزرعة غير سعيدة، وأكثر من ذلك.
cjb المادة وضع البيض
Pathoschild28/07/2025 06:24:40
قائمة توليد عناصر سهلة الاستخدام في اللعبة.

افتح الإمكانات الكاملة لـ Stardew Valley مع XMODhub — استكشف أفضل هذه التعديلات اليوم!

mcafee
المصادقة
موثوق من قبل 200,000,000+ مستخدمًا

هل تحتاج مساعدة في التحميل أو التثبيت؟ انضم إلى مجتمع ديسكورد للحصول على الدعم.

logo
اللغة

حلول الألعاب

الموارد

الشركاء

تابعنا على

discordfacebooktwitteryoutube
الدعم:
support@xmodhub.com
Xmod_Lily
الأعمال:
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